Linux运维基础--常见命令

Linux运维基础–常见命令

linux的发行版本介绍:

Linux 内核(kernel)版本主要有 4 个系列,分别为 Linux kernel 2.2Linux kernel 2.4Linux kernel 2.6Linux kernel3.x ,更多更新的内核版本请浏览 https://www.kernel.org/

Linux的发行商包括,Redhat,Debian,SUSE,Centos,Ubuntu,红旗,麒麟…turbolinux等。

Linux目录结构

目录结构 说明
/dev 存放设备文件
/boot 存放内核与启动命令
/lib 存放系统库文件
/bin 存放二进制文件 binary
/sbin 存放特权级二进制文件
/usr 存放安装程序,软件默认目录
/var 存放经常变化的日志文件,如:/var/log/messages:系统级别日志,一个很重要的排错文件
/mnt 文件挂载目录,U盘,光驱等
/home 普通用户家目录
/tmp l临时文件夹
/etc 存放配置文件目录
/opt 大型软件存放目录,也可自定义存放
/sys 系统文件
/srv 服务相关数据
/run 里面的文件是系统运行时需要的,不能随便删除,但是重启时应该抛弃,下次系统运行时重新生成
/proc 内存系统文件

/etc初始化系统重要文件

文件 说明
/etc/fstab 配置开机设备自动挂载的文件
/etc/rc.local 存放开机自启动程序命令的文件
/etc/inittab 系统启动设定运行级别等配置文件
/etc/profle 配置系统的环境变量,别名等的文件,和/etc/bashrc一样
/etc/init.d 软件启动程序所在目录(centos 6)
/usr/lib/systemd/system 软件启动程序所在目录(centos 7)
/etc/motd 配置用户登录系统之后显示提示内容的文件
/etc/redhat-release 声明Redhat版本号和名称信息的文件
/etc/sysconfig/network-scripts/ifcfg-ens33 网卡配置文件,也可能是eth0,ens32等
/etc/resolv.conf Linux系统DNS客户端配置文件
/etc/hostname 主机名配置文件
/etc/hosts 系统本地的DNS解析文件
/etc/sysctl.conf Linux内核参数设置文件
/etc/issue和/etc/issue.net 配置在用户登录终端前显示信息的文件
/etc/profile.d 用户登录后执行脚本所在目录

ls

列出文件夹种的内容

参数:
-a all,显示所有的目录及隐藏文件
-l 详细输出文件夹中的内容
-h  和-l配合使用,以可读方式输出文件大小
-t 根据最后修改的实际排序文件
-S 对文件从大到小排序
-r 逆转排序,可以-t,-S等结后使用
-i 显示文件的inode信息

pwd

打印当前工作目录的绝对路径

su

用户切换

su - 用户名,完全的环境变量用户切换

logout

退出当前系统用户,或者exit

mkdir

创建文件夹

参数:
-p  递归创建
-m 建立目录的同时设置目录的权限

案例:
mkdir -mp 700 /test/cc

touch

1.创建新的空文件
2.将每个文件的访问实际和修改实际改为当前实际

参数:
-c 不创建任何文件
-r 使用指定文件的实际属性代替当前文件时间
-t 修改文件的时间 
--help 帮助信息

案例:
[root@localhost test]# touch -t 200808080808 aoyunzhongguo.txt
[root@localhost test]# ll
total 0
-rw-r--r-- 1 root root 0 Aug  8  2008 aoyunzhongguo.txt

cp

将一个或多个源文件复制到目标文件

-r 递归复制目录,即复制目录下所有的子目录和子文件
-p 复制的时候保持属性不变
-d 复制的时候保持软连接
-a 等于-prd
-i 覆盖前询问提示

案例:
递归复制
 cp -r  /etc/sysconfig/network-scripts/ ./

复制 保持属性改名
 cp  -a  /etc/sysconfig/network-scripts/ifcfg-ens33 eht0

复制多个文件
cp  mjj.txt  mjj.gif  /test

mv

移动或者重命名文件

参数:
-f  覆盖前不询问
-i  覆盖前询问

案例:
改名
mv mjj.txt njj.txt

移动且改名
mv njj.txt  /root/mjj.txt

tree

以树形图形象目录下的内容,安装yum install tree -y

参数:
-C  在文件和目录清单加上色彩,便于区分类型
-d  显示目录名称而非内容
-D  列出文件和目录的更改时间
-f  在每个文件或目录之前,显示完整的相对路径

rm

删除一个或多个文件

参数:
-f  强制删除
-i  在删除前需要确认
-T  删除超过三个文件或者递归删除前要求确认
-d  删除目录
-r  递归删除
--help 帮助
--version  显示版本信息并退出

危险命令,慎用

Linux帮助命令

man 
--help
info

案例:
man ls
rm --help
info cp

Linux开关机命令

shutdown  重启或关机
-r  重启   例: shutdown -r 10  或者10:30 (时间) now 立即重启
-h 关机	例:  shutdown -10   十分钟后关机, 0  now 立刻关机

reboot  重启    poweroff 关机	

init 切换运行级别,0关机, 6重启 

vim

功能强大的文本编辑器
安装:yum install vim -y

vim 的四种模式:
正常模式    
插入模式	字母,i o等进入
命令模式	:冒号进入
可视模式	ctrl+v  q!不保存退出  wq!保存退出

vim快捷键:
方向:
h:左
j:下
k:上  
l:右

光标快捷键:
w/e:移动到下一个单词
b:移动到上一个单词
数字0移动到行首
字符$移动到行尾
ctrl + f 下一页
ctrl + b 上一页
`. 光标移动到上一次修改的行

命令模式的查找:
/ + 要找的内容
n 向下找
N 向上找

命令模式的复制,粘贴,删除
输入yy 复制光标所在行;4yy表示复制4行
p 在光标的下一行,打印粘贴的内容
dd 删除光标所在行
D 删除光标当前位置到行尾的内容
d0 从当前的光标开始向前剪切,一直到行首
dG 删除光标所在行到最后一行的内容
x 删除光标当前字符,向前删除,X向后删除
dw 删除一个单词
cc 修改整行文字
u 撤销上一步动作,ctrl+r  反撤销
. 重复上一次操作

快捷操作:
C 删除光标所在位置到行尾内容,且进入编辑模式
o 在当前光标的下一行开始编辑
A 快速进入行尾,且进入编辑模式
ZZ 快捷保存退出

批量注释快捷操作:
ctrl + V 进入可视模式,
上下左右选择需要操作的块
选中后输入大写I,输入#
两次ESC,自动生成多行代码
即批量注释
再次批量选择注释符,d删除注释

命令模式:
:set nu  显示行号
:set nonu 关闭行号
:set list 查看使用使用tab键
:set nolist 关闭

替换模式:--REPLACE--
命令行输入R进入替换模式;退出ESC
:s/old/new   只替换光标所在行的第一个 old string
:s/old/new/g 替换光标所在行的所有old string   g表示global ; n表示一个行号
:%s/old/new/g 将文本所有的old string替换为new string
:1,2s/old/new/g 替换1到2行中的old string 为new string
:.,2s/old/new/g  替换光标所在行到地二行的
:2,$/old/new/g  替换第2行到最后一行的old string为new string

:!command 在不退出编辑器的情况下执行一条命令
当同时编辑多个文件时,因为同一时间只能显示一个文件,所有在vim中切换打开的文件可以使用:N或:n来切换打开的文件

批量移动代码
ctrl + v 选择块代码
shift + > 向右移动
shift + < 向左移动代码
	= 对齐
	
批量保存
:n,m  w  filename 命令将第n行到m行的内容保存到指定的filename文件中,filename必须由vim自动生成

重定向符号

将数据传到其他地方

符号 解释
< 或者 << 标准输入stdin ,代码为0
> 或者 >> 标准输出stdout,代码为1
2> 或者 2>> 标准错误输出stderr,代码为2
将输出都重定向到/dev/null的几种写法:
>/dev/null  2>$1 
1>/dev/null 2>/dev/null
&>/dev/null

xargs命令

给其他命令传递参数的一个过滤器

参数:
-n 多行输出
-d 为输入指定一个定制的分隔符,默认是空格
-I 让xargs执行多个命令
-i 用{}代替传递的数据

案例:
## -n的用法
[root@localhost test]# cat tets.txt 
a b c d e f g 
h i j k l m n
o p q 
r s 
t u v w x y z
[root@localhost test]# cat tets.txt |xargs
a b c d e f g h i j k l m n o p q r s t u v w x y z
[root@localhost test]# cat tets.txt |xargs -n3
a b c
d e f
g h i
j k l
m n o
p q r
s t u
v w x
y z

## -d的用法
[root@localhost test]# echo "namexnamexnamexname" | xargs -dx
name name name name

[root@localhost test]# echo "namexnamexnamexname" | xargs -dx -n2
name name
name name

#-i参数的用法,用{}替代传递的数据
找到当前目录所有的.txt文件,然后拷贝到其他目录下
find . -type f -name "*.txt" | xargs -i cp {} /opt

#找到指定目录所有的txt文件,然后删除
find /opt -type f -name "*.txt" |xargs -i rm -rf {}

cat

功能 说明
查看内容较少的纯文本文件 cat filename
多个文件合并 cat file1.txt file2.txt > file3.txt
非交互时编辑或追加内容 cat >> file.txt<
清空文件内容 cat /dev/null > file.txt

1.参考内容较少的纯文本文件
2.连接多个文件并打印到标准输出
3.显示文件内容中不可见的字符(控制符,换行符,制表符)

参数:
-b 对非空行输出编号
-E 每行结束处显示$
-n 对输出的所有行编号
-s 不输出多行空行,多个空行减为一个,一个空行不受影响
--help 显示帮助信息并退出

案例:
[root@localhost test]# cat test.txt 
a
b


c
[root@localhost test]# cat test.txt  -s
a
b

c
[root@localhost test]#

tac

按行为单位反向显示文件内容,如果没有文件或文件为 - 则读取标准输入
处理多个文件时,依次将每个文件反向显示,而不是将所有文件连载一起再反向显示

案例:
[root@localhost test]# seq 1 3 > 1
[root@localhost test]# seq 4 6 > 2
[root@localhost test]# cat 1 2
1
2
3
4
5
6
[root@localhost test]# tac 1 2
3
2
1
6
5
4

21[root@localhost test]# cat 1
1
2
3
[root@localhost test]# tac 1
3
2
1

管道符

Linux提供的管道符将两条命令隔开,管道符左边命令会做为管道符右边命令的输入

less/more

分屏查看大文本内容的命令

操作:
enter 回车是下一行
空格是向下滚动一个屏幕大小
=显示当前行号
q退出

less 参数
-e  文件内容显示完毕后,自动退出
-f  强制显示文件
-l  搜索是服了大小写的差异
-N  每一行行首显示行号
-s  连续多个空号压缩成一行显示
-S  在单行显示较长的内容,而不换行显示
-x  将tab字符显示为指定个数的空格字符

more参数
-s 将多个空号压缩成一行显示
-<数字> 指定每屏显示的行数
-c 不进行滚屏操作,每次刷新这个屏幕

head && tail

head 默认是从头往后看10行
tail 默认是从后向前看10行,也可以指定行数,用法与head等同

tail 参数
-f  实时刷新文件内容变化
-F  不断打开新文件,可以和-f结合使用

扩展点:tail -f 与 -F 还有tailf的区别
tail -f 更加文件描述符进行追踪,当文件改名或被删除,追踪停止
tail -F 根据文件名进行追踪,并保持重试,即该文件被删除或改名后,如果再次创建相同的文件名,会继续追踪
tailf 等同于 tail -f -n 10(tail -f 或者-F 默认也是打印最后10行,然后追踪文件),与tail -f不同的是,如果文件不增长,它不会去访问磁盘文件,所有tailf也不适合那些便携机上跟踪日志文件,因为它减少了磁盘访问,可以节省电量。

常用操作:
ctrl + S 暂停终端
ctrl + Q 继续终端
ctrl + c 退出

cut

在文件的每一行中提前片段,
在每个文件的各行中,把提取的片段显示在标准输出

语法:cut  参数  数值区间  文件 
参数:
-b  以字节为单位分隔
-n  取消分隔多字节字符,与-b一起使用
-c  以字符为单位
-d  自定义分隔符,默认以tab为分隔符
-f  与-d 一起使用,指定显示那个区域
范围:
N-    N至结尾
N-M	  N到M,并包括M,字符或字段
-M	  开头到M,并包括M,字符或字段

案例:
准备文件
[root@localhost test]# tail -3 /etc/sysconfig/network-scripts/ifcfg-ens33 > ens33
[root@localhost test]# cat ens33 
NETMASK=255.255.255.0
GATEWAY=192.168.178.254
DNS1=119.29.29.29

截取每一行的第四个字符
[root@localhost test]# cut -c 4 ens33 
M
E
1

截取4到6个字符
[root@localhost test]# cut -c 4-6 ens33 
MAS
EWA
1=1

指定分隔符,进行截取
[root@localhost test]# cut -d "." -f 3 ens33 
255
178
29

sort

将输入的文件内容安装规则排序,然后输出结果

参数:
-n 根据字符串数组比较
-r 逆序输出排序结果
-u 去重排序
-t 使用指定的分隔符代替非空格到空格的转换
-k 位置

案例:
[root@localhost test]# cat test.txt 
11.0.0.1
10.0.0.5
15.0.0.2
13.0.0.8
10.0.0.5

对第一个字符排序,默认从小到大排序
[root@localhost test]# sort -n test.txt 
10.0.0.5
10.0.0.5
11.0.0.1
13.0.0.8
15.0.0.2

逆序排序
[root@localhost test]# sort -nr  test.txt 
15.0.0.2
13.0.0.8
11.0.0.1
10.0.0.5
10.0.0.5

去重排序
[root@localhost test]# sort -u   test.txt 
10.0.0.5
11.0.0.1
13.0.0.8
15.0.0.2

指定分隔符,指定区域排序
[root@localhost test]# sort -t "." -k 4 test.txt 
11.0.0.1
15.0.0.2
10.0.0.5
10.0.0.5
13.0.0.8

uniq

显示忽略重复的行,常与sort排序结合使用

参数:
-c 在每行开头显示重复次数
-d 只输出重复的行
-u 只显示出现过一次的行,

案例:
[root@localhost test]# cat test.txt 
1
1
1
12
55
13
55
16
12
55
55

只能去除连续的重复行
[root@localhost test]# uniq test.txt 
1
12
55
13
55
16
12
55

结合sort使用,去重很精准
[root@localhost test]# sort -n test.txt |uniq
1
12
13
16
55

统计每一行重复次数
[root@localhost test]# sort -n test.txt |uniq -c
      3 1
      2 12
      1 13
      1 16
      4 55

只找出文件中重复行,且统计次数
[root@localhost test]# sort -n test.txt |uniq -d -c
      3 1
      2 12
      4 55

找出只出现过一次的行
[root@localhost test]# sort -n test.txt |uniq -c -u
      1 13
      1 16

wc

用于统计文件的行数,单词,字节数

参数:
-c 打印字节数
-m 打印字符数
-l 打印行数
-L 打印最长行的长度
-w 打印单词数

案例:
统计文件个数
[root@localhost ~]# ls | wc -l
1

w

显示目前登入系统的用户信息

[root@localhost ~]# w
 20:49:43 up  8:26,  2 users,  load average: 0.00, 0.01, 0.05
USER     TTY      FROM             LOGIN@   IDLE   JCPU   PCPU WHAT
root     pts/0    192.168.178.1    13:58    7.00s 13.59s  0.00s w
root     pts/1    192.168.178.1    19:43    1:03m  0.02s  0.02s -bas

tr

从标准输入中替换,压缩,删除字符,并将结果写到标准输出

参数:
-c 取代所有不属于第一字符集的字符
-d 删除所有不属于第一字符集的字符
-s 把连续重复的字符以单独一个字符表示
-t 先删除第一字符集较第二字符集多出的字符

案例:
把连续重复的字符以单独一个字符表示
[root@localhost ~]# echo " iii lllovve yyou" |tr -s 'ilvy'
 i love you
 
替换标准输入中的大小写
[root@localhost ~]# echo "every good" |tr "[a-z]" "[A-Z]"
EVERY GOOD

使用-d 参数删除
[root@localhost ~]# echo "every good 666" |tr -d 'a-z'
  666

把文件当中标准输入,进行字符替换,不会改变文件
[root@localhost ~]# cat test.txt 
every good 666
[root@localhost ~]# tr 'o' 'O' < test.txt 
every gOOd 666

stat

以文字的格式来显示inode的内容,(比ls输出的信息更加详细)

参数:
-L 跟随链接
-f 显示文件的系统状态而非文件状态
-t 使用简洁格式输出

find

用来在指导目录下查找文件

参数:
--maxdepth  设置最大目录层级
--mindepth  设置最小目录层级
-atime		按照文件访问时间查找,atime ctime mtime单位都是天;
# 如:-1以内;1 恰好一天;+1 超过一天(一天以前)
-ctime		按照更改时间查找,
-mtime		根据修改修改(modify)时间查找,最常用
-neme		根据名字查找,支持通配符
-perm		根据文件权限查找
-size		根据指定大小查找文件,+表示大于,-表示小于,无表示等于;如+10M,—10M
-path 		配合-prune参数排除指定的目录
-prune       使用find命令不在指定的目录查找
-exec或ok	对匹配的文件执行响应的shell命令
-delete		删除找出的文件
-a / -o      取交集,并集,
-type     	查找某一类型的文件;b-块设备文件;d-目录;c-设备文件;p-管道文件;l-符号链接文件;f-普通文件;s-socket文件;-普通文件

案例:
根据修改时间查找文件
一天以内,被访问过的文件
find . -atime -1
一天以内,内容变化的文件
find . -mtime -1
恰好在七天内被访问的文件,查找最大目录层级为2,类型为文件
 find / -maxdepth 2  -type f -atime -7 
 
find反向查找
[root@localhost ~]# find . -maxdepth 1 -type d
 #在当前目录下查找最大深度为1,文件夹类型的数据,加感叹号表示取反,代表取除了文件夹以外类型的数据
[root@localhost ~]# find . -maxdepth 1 ! -type d 

按照文件大小查找
find . -maxdepth 2 -size +10M #查找超过10M大小的文件

使用-exec或是-ok再次处理,-ok比--exec存在用户提示,更加按照
#找出以.txt结尾的文件后执行删除动作且提示确认
[root@localhost test]# find /test/ -type f -name "*.txt" -ok rm {} \;
< rm ... /test/file.txt > ? y
< rm ... /test/test.txt > ? y

-exec跟着shell命令,结尾必须以“;”分号结束,考虑系统差异,加上转义符 “\” ;{}作用是替代find查阅到的结果,{}前后必须有空格

[root@localhost test]# touch  {1..3}.txt
[root@localhost test]# ls
1.txt  2  2.txt  3.txt  ens33
[root@localhost test]# find /test/ -type f -name "*.txt" -exec  rm {} \;
[root@localhost test]# ls
2  ens33

#找到目录中所有.txt 文件,且将查询结果写入到all.txt文件中
 find ./ -type  f -name "*.txt" -exec cat {} \; > all.txt
 
#把30天以前的日志,移动到/log 文件中
find . -type f -mtime +30 -name "*.log" -exec cp {} /log \;

file

显示文件的类型

参数:
-b 列出辨识结果,不显示文件名称
-z 尝试取解读压缩文件的内容

which

查找PATH环境变量中的文件

例如:
[root@localhost test]# which vim
/usr/bin/vim

whereis

用来定位指令的二进制程序,源代码文件和man手册页等相关文件的路径

参数:
-b 只查找二进制文件

例如:
[root@localhost test]# whereis cd
cd: /usr/bin/cd /usr/share/man/man1/cd.1.gz /usr/share/man/mann/cd.n.gz
[root@localhost test]# whereis -b cd 
cd: /usr/bin/cd

tar

对多个文件进行压缩,打包,解包

参数:
-c 建立新的备份文件
-C 指定目录解压缩
-x 从备份文件中还原文件
-t 列出备份文件的内容
-z 通过gzip指令处理备份文件
-f 指定备份文件,-f参数必须放到最后
-v 显示指令执行过程
-r 添加文件到已经压缩的文件
-u 仅追加比归档中副本更新的文件
-k 保留源文件不覆盖
-p 用原来的文件权限还原文件
-P 文件名称使用绝对路径,不移除文件名称前的“/”;不推荐使用
--exclude 排除符号范本样式的文件
-h 跟踪符号链接,将他们所指向的文件归档并输出; 
-h 参数能够保证,打包的不仅仅是个快捷方式,而是找到源文件

案例:
仅打包不压缩
tar -cvf all.tar ./*

打包且用gzip压缩,节省磁盘空间
tar -czvf all.tar.gz ./*

拆开tar包
tar -xf all.tar

拆开tar压缩包到指定目录
tar -xzvf all.tar.gz -C /opt/

列出tar.gz包有什么内容
[root@localhost test]# tar -tzvf all.tar.gz 
-rw-r--r-- root/root         0 2021-02-06 23:42 ./1.txt
-rw-r--r-- root/root         0 2021-02-06 23:42 ./2.txt
-rw-r--r-- root/root         0 2021-02-06 23:42 ./3.txt
lrwxrwxrwx root/root         0 2021-02-06 23:36 ./d -> /dw/
[root@localhost test]# tar -xzvf all.tar.gz ./d
./d
[root@localhost test]# ls
all.tar.gz  d

排除文件解压缩
[root@localhost test]# tar -xzvf all.tar.gz --exclude d
./1.txt
./2.txt
./3.txt
[root@localhost test]# ls
1.txt  2.txt  3.txt  all.tar.gz

压缩快捷方式的源文件,而不是压缩快捷方式
[root@localhost test]# tar -czf d.tar.gz d
[root@localhost test]# tar -tvzf d.tar.gz d
lrwxrwxrwx root/root         0 2021-02-06 23:36 d -> /dw/
[root@localhost test]# tar -czhf d.tar.gz d
[root@localhost test]# tar -tvzf d.tar.gz d
drwxr-xr-x root/root         0 2021-02-06 23:14 d/
-rw-r--r-- root/root         0 2021-02-06 23:14 d/1
-rw-r--r-- root/root         0 2021-02-06 23:14 d/2
-rw-r--r-- root/root         0 2021-02-06 23:14 d/3

gzip

用来压缩文件,gzip压缩解压都会删除源文件

参数:
-l 列出压缩文件的相关信息
-q 不显示经过信息
-r 递归处理,将指定目录下的所有文件及子目录一并处理
-t 测试压缩文件是否正确无误
-v 显示指令执行过程
-<压缩效率>,一个介于1-9之间的数值,预设值为6,指定数值越大压缩效率越高
--best 此参数效果和指定“-9” 参数相同
--fast 此参数效果和指定“-1”参数相同
-c 保留原始文件,生成标准输出流()接哼重定向使用
#gzip 无法压缩文件夹,必须先tar对文件夹打包后,才可以gzip压缩

案例:
压缩文件
[root@localhost test]# gzip *
解压缩文件
[root@localhost test]# gzip -d *

zip&&unzip

zip是一个应用广泛的跨平台压缩工具,压缩文件的后缀为zip文件,还可以压缩文件夹
unzip用于解压zip格式的文件;centos7需要安装:yum install -y unzip zip

参数:
-r 递归处理
-m  压缩完毕后,删除源文件
-S 包含系统和隐藏文件
-q 不显示指令执行过程
-<压缩效率>,一个介于1-9之间的数值

案例:
压缩
zip -q all.zip ./* 

解压缩
 unzip all.zip 

date

用于显示当前系统时间,或者修改系统时间

常用案例:
显示:
[root@localhost test]# date
Sun Feb  7 00:20:47 CST 2021
[root@localhost test]# date +%F
2021-02-07
[root@localhost test]# date "+%F %T"
2021-02-07 00:21:18

修改:只有root权限才能设置
[root@localhost test]# date -s 20080808
Fri Aug  8 00:00:00 CST 2008
[root@localhost test]# date
Fri Aug  8 00:00:06 CST 2008
[root@localhost test]# date -s "20210206 23:24:36"
Sat Feb  6 23:24:36 CST 2021
[root@localhost test]# date -s "2021-02-06 23:24:36"
Sat Feb  6 23:24:36 CST 2021

shred

多次覆盖文件,使得即使是昂贵的硬件探测仪页难以将数据复原

案例:
随机覆盖文件内容,不删除源文件
 shred 1.txt 

彻底粉碎且删除文件
shred -u 1.txt

centos7启动流程

BIOS初始化,开始post开机自检 --检查硬件是否正常
加载mbr到内存
grub引导
加载内核
启动systemd进程
读取/etc/inittab文件
执行/etc/rc.d/rc.sysinit程序
执行/bin/login,等待用户登录。

你可能感兴趣的:(Linux运维笔记,shell,运维)