linux运维必备178个命令
●线上查询及帮助命令(2 个) ●文件和目录操作命令(13 个)
●查看文件及内容处理命令(22 个) ●文件压缩及解压缩命令(4 个)
●信息显示命令(12 个) ●搜索文件命令(4 个)
●用户管理命令(9 个) ●基础网络操作命令(11 个)
●深入网络操作命令(5 个) ●有关磁盘文件系统的命令(8 个)
●关机和查看系统信息的命令(3 个) ●系统安全相关命令(10 个)
●查看系统用户登陆信息的命令(6 个) ●查看硬件信息相关命令(8 个)
●系统性能监视高级命令(10 个) ●进程管理:(16 个)
●非常危险的系统命令(5 个) ●linux 系统3位剑客(3 个)
●其它(16 个)

线上查询及帮助命令(2 个)
man help
文件和目录操作命令(13 个)
ls stat tree pwd mkdir rmdir cd touch cp mv rm ln find rename
ls list(列表) 列表目录文件 ls -lhi
例子:ls / 列根/目录下目录和文件; ls a.doc 列举文件a.doc的所有信息
-l(long)长格式列举细节,-d(directorys)查看目录 -h 人类可读 -a 全部包括隐藏文件 -f 列举文件类型 -R 递归列举 -F 给目录最后加斜线
-i inode节点号 例如:ls –lhi 查看inode节点数量: df –i
1节点号 2属性权限 3硬链接数 4所属者 5所属组 6大小 79修改时间 10名
inode小结 磁盘被分区并格式化为ext4文件系统后会产生一定数量的inode和block
索引节点的作用是存放文件的属性信息以及作为指针指向文件block位置
Ext3ext4 文件系统 block 才是存放文件实体的位置
Inode是磁盘上的一块存储空间,默认大小256字节
Inode为一串数字,在系统里每个文件inode号是唯一的
inode相同的文件是互为硬链接文件,可以认为是一个文件
block的大小一般有1k,2k,4k几种,其中引导分区为1k
如果一个文件很大,可能占有多个block,如果很小,至少占1个
mkfs.ext4 –b 2048 -I 256 /dev/sdb
-p 给不同类型文件加标识
stat 查看单个文件属性 例如: stat /etc/passwd
tree 显示目录树 (需要yum安并且设置LANG=en) 不加参数为显示当前目录下所有目录 一般用法:tree -difL 2
-a显示所有包括隐藏
-d只显示目录
-L 2只显示目录的2层
-f显示完整的目录结构
-i不显示前面的横杠
-F普通文件不显示/
pwd print work directory 打印当前工作目录
mkdir make directorys 创建目录 例子:mkdir /data 在根/下创建data目录 -p可以递归创建 例如 mkdir a/b/c/d/e
cd change directory 改变目录路径例子: cd /etc cd - 上一次目录 cd .. 上一级目录
touch 创建文件或更新文件时间戳atime等时间信
cp copy -r 递归; -a 相当于-pdr; -p 连同属性一起复制过去,但上下文会继承目标目录的上下文,而非默认属性
配合大括号使用 {} bash A{B,C}  bash AB AC
同一路径下:cp /etc/ssh/sshd_conf{,.bak} 不同路径下: cp /etc/{ssh/sshd_conf,tmp/}
In 硬连接 例子: In -s 源文件 目标文件 软连接是不要s属性(symbolic的意思)
rm remove -f(force)强制,-r(recursive)递归,用于删除目录
mv move 移动文件或者目录 例子 mv find /date -type f -name "*.txt" /tmp/ 与find联用
find 查找格式为 find 【在哪里查的绝对路径】 -type -f文件 -d目录 -c字符 -b块 -s通信文件 -name 【文件名】 -size [【大小+1M,1M,-1M】 -mtime 【修改时间:+7,7,-7】天(modify/change/access三种)!感叹号为取反 -exec 执行什么动作 【动作: mv {} /tmp】 \; -prune –print 当输出文件夹时只输出顶目录:
find /etc/* -type d –prune –print | awk -F\/ '{print $3}'
查找时如何区分文件和目录?

  1. 根据颜色区分,深蓝色为目录,白色为文件
  2. ls –l 输出结果中以d开头的绝对是目录
  3. ls –F或-p(前后加斜杠)通过给目录加标识,然后通过过滤标识就是目录
  4. 上面的find 查找类型为 d的。

    例如:find /tmp/oldboy -type f ! -name passwd | xargs rm -f 删除/tmp/oldboy下所有文件除了passwd
    find /var/log -type f -name “.log” -size +1M -mtime +7 -exec mv {} /tmp \; 查找/var/log下所有7天以前以log结尾的大于1M的文件移动到/tmp下
    rename 改名 例如:rename aa abc baa 将baa文件中的aa 替换为 abc 即babc
    结合正则表达式做:
    -n 直接在终端打印结果,而非实际执行,确定无误后再去掉-n
    -v 打印被修改成功的文件
    -f 若重名,覆盖已经存在的文件,慎用!
    例如:将所有
    .nc文件中的Sam32替换成Stm32:
    rename -v ‘s/ Sam32/ Stm32’ *.nc
    查看文件及内容处理命令(22 个)
    cat tac rev more less head tail cut split paste sort uniq wc iconv dos2unix file diff vimdiff chattr lsattr
    cat 查看文件内容
    tac 行反序查看文件内容,与cat相反 可以与其他命令连用
    例如:tail -3 /etc/passwd | tac 反行向显示该文件最后三行
    rev 行不变,每行字符串反向输出
    more 分页显示文件内容,格式为:more file_name 可以与其他命令连用
    例如: cat /etc/passwd | more
    可以通过参数-数字 来限制每页显示的行数 例如: more -12 /var/log/syslog
    -c 为清除当前内容,直接显示下一页内容
    +/strig用来搜索例如:more +/abc /var/log/syslog 在该文件中搜索“abc”
    摁空格显示下一页,摁b显示上一页
    less 与more差不多,但是最后不会退出,也不会加载文件只是显示
    head 读取文件的前n行 例如: head -n 3 /etc/passwd
    打印文件aaa 2-5行 : head -5 aaa | tail -4
    tail 读取文件末尾的后n行
    cut 针对行进行竖向切割,
    例如: cut -b -9 abc 显示abc文件每行的前9个字符
    cut –b 9- abc 显示abc文件每行的第9字符以后的
    cut –d: -f1,3-5 显示以冒号分割的第1 3至5 列
    split 针对日志文件分割,例如:split -b 500k date.file -d -a 3 part
    如果想用数字后缀使用-d否则字母,-a length指定后缀长度,最后参数为前缀名
    paste 粘贴的含义,将两个行数相同的文件,其内容放在相同行。-s 按列对应放
    例如:paste file1 file2 paste -s file1 file2
    sort 排序,按行从首字母向后依次比较ASCⅡ码值,升序输出到屏幕
    -n是按照数字大小排序,-r是以相反顺序,
    -k是指定需要爱排序的栏位,-t指定栏位分隔符为冒号
    sort -nrk 3 -t: abc 将以:分隔的 第三列按行排序 输出
    uniq 忽略重复行,一般与sort连用 例子 sort file.txt | uniq -c 并且显示重复行的次数
    wc 统计文件 -l行数 -w单词数 -c字节数 文件名 一般连用例如:
    统计当前文件夹下有多少个文件 ls -l | wc –l
    统计/etc/passwd中使用shell:/sbin/nologin的使用人数:
    cat /etc/passwd | awk -F: '/sbin\/nologin$/' | wc -l
    iconv 字符转码
    dos2unix 将dos文件转换成unix文件格式
    file 显示文件类型
    diff 比较文件的不同参数较多不一一列举
    vimdiff Vim模式比较文件,且可编辑 vim file1 file2
    chattr 用来改变文件目录的更底层属性 例如:chattr +i /etc/resolv.conf 去掉就是 -i
    lsattr 用来查看文件目录的更底层属性 例如:lsattr /etc/resolv.conf
    egrep
    文件压缩及解压缩命令(4 个)
    tar unzip gzip zip
    tar: 打包压缩
    -c 归档文件
    -x 解压缩文件
    -z gzip压缩文件
    -j bzip2压缩文件
    -v 显示压缩或解压缩过程 v(view)
    -f 使用档名
    例:tar -cvf /home/abc.tar /home/abc 只打包,不压缩
    tar -zcvf /home/abc.tar.gz /home/abc 打包,并用gzip压缩
    tar -jcvf /home/abc.tar.bz2 /home/abc 打包,并用bzip2压缩
    当然,如果想解压,就直接替换上面的命令
    tar -cvf / tar -zcvf / tar -jcvf 中的“c” 换成“x” 就可以了。
    zip 压缩文件 例如 zip -q -r html.zip
    unzip 解压ZIP格式压缩包 例如 unzip html.zip
    gzip 压缩文件,例如 gzip -r log.tar 会将文件log.tar压缩成log.tar.gz文件
    -dz 解压,例如 gzip -dz log.tar.gz
    -r 为对目录操作 例如: gzip -rv dir5 所有dir5下的文件变成.gz 文件夹存在

信息显示命令(12 个)
uname hostname dmesg uptime file stat du df top free date cal
uname 显示系统信息
uname -a 显示内核、当前时间
hostname 显示主机名
dmesg 显示linux内核的环形缓冲区中的所有驱动
| grep sda 列出所有被内核检测到的硬盘设备
| grep usb (dma tty memory) 等等信息
uptime 输出结果:16:26:11 up 7:50, 2 users, load average: 0.66, 0.53, 0.27
打印系统当前时间 up开启多久 用户连接数 系统平均负载,统计1,5,15分钟的
系统平均负债,即特定时间内运行队列中的平均进程数,应该小于3
file 显示文件类型
stat 显示指定文件的详细信息,比ls更详细
du -sh [文件] 显示文件的大小s仅显示统计 h以KMG大小单位输出
df 查看磁盘挂载情况 例如: df -h
fdisk 查看物理磁盘
top 动态查看系统进程
free 查看内存与swap分区
date 打印时间 ; -s 20171111指定一个时间

cal 打印日历,-j 显示一年的第几天;-3 显示含左右3个月的日历
搜索文件命令(4 个)
which find whereis locate type
Which 查找并显示给定命令的绝对路径 例子:which pwd 结果为/bin/pwd
find 查找格式为 find 【在哪里查的绝对路径】 -type -f文件 -d目录 -c字符 -b块 -s通信文件 -name 【文件名】 -mtime 【修改时间:+7,7,-7】(modify/change/access三种)!感叹号为取反 -exec 执行什么动作 【动作: mv {} /tmp】 \;
-prune –print 当输出文件夹时只输出顶目录:
find /etc/* -type d –prune –print | awk -F\/ '{print $3}'
查找时如何区分文件和目录?

  1. 根据颜色区分,深蓝色为目录,白色为文件
  2. ls –l 输出结果中以d开头的绝对是目录
  3. ls –F或-p(前后加斜杠)通过给目录加标识,然后通过过滤标识就是目录
  4. 上面的find 查找类型为 d的。
    whereis 查找-b二进制文件,-m manual路径下的说明文件,-s 源代码文件
    locate 配合数据库查看文件位置,速度快
    type 显示指定命令的类型,判断给出的指令是内部指令还是外部,也可以看内部路径
    用户管理命令(9个)
    useradd usermod userdel groupadd passwd chage id su sudo
    useradd 添加用户 语法:useradd 用户名 -s 指定登录方式 -g 指定组 -G 指定从属组
    usermod 用户信息修改 例如:usermod -G staff newuser2 将用户添加到staff组中
    -G 改从属组 -g 改组 -u 改ID -l 改用户名 -L锁定账号 -U解锁账号
    userdel 删除用户,若不加选项,则仅删除用户帐号,而不删除相关文件。
    例子: userdel linuxde //删除用户linuxde,但不删除其家目录及文件;
    userdel -r linuxde //删除用户linuxde,其家目录及文件一并删除;
    groupadd 创建一个新组 例子: groupadd -g 1099 aaa 创建一个ID为1099名叫aaa组
    passwd 设置密码与过期时间,一般只有root用户可用,普通用户只能改自己密码
    -d:删除密码,仅有系统管理者才能使用 passwd -d donny
    -f:强制执行 passwd -fd donny
    -k:设置只有在密码过期失效后,方能更
    -l:锁住用户不能更改密码 passwd -l donny
    -u:解开已上锁的帐号 passwd -u donny
    -s:列出密码的相关信息,仅有系统管理者才能使用
    改密码另以命令:echo “123456” | passwd –-stdin 用户名
    chage 修改账号密码有效期
    -m:密码可更改的最小天数。为零时代表任何时候都可以更改密码。
    -M:密码保持有效的最大天数。 chage -M 90 donny
    -w:用户密码到期前,提前收到警告信息的天数。 chage -w 10 donny
    -E:帐号到期的日期。过了这天,此帐号将不可用。 chage -E 15 donny
    -d:上一次更改的日期。
    -i:停滞时期。如果一个密码已过期这些天,那么此帐号将不可用。
    -l:例出当前的设置。由非特权用户来确定他们的密码或帐号何时过期。
    id 显示用户ID和组ID 不带选项打印活跃用户的信息 例子: id donny
    -a 打印当前用户用户名、UID 和该用户所属的所有组
    -g或--group   显示用户所属群组的ID。
    -G或--groups 显示用户所属附加群组的ID。
    -n或--name   显示用户,所属群组或附加群组的名称。
    -r或--real   显示实际ID。
    -u或--user   显示用户ID。
    su su user 切换用户,加载配置文件.bashrc
    su - user 切换用户,加载配置文件/etc/profile ,加载bash_profile
    sudu 以他人的身份来执行命令,在/etc/sudoers 中设置foobar ALL=(ALL) ALL
    第一个ALL是指网络中的主机,我们后面把它改成了主机名,它指明foobar可以在此主机上执行后面的命令。第二个括号里的ALL是指目标用户,也就是以谁的身份去执行命令。最后一个ALL当然就是指命令名了。例如,我们想让foobar用户在linux主机上以jimmy或rene的身份执行kill命令,这样编写配置文件:foobar linux=(jimmy,rene) /bin/kill
    基础网络操作命令(11 个)
    telnet ssh scp wget ping route ifconfig ifup ifdown netstat ip
    telnet 远程登陆,23号端口,xinetd服务 例子:telnet 192.168.120.121 需要输入用户名密码
    ssh 远程登陆, 22号端口,sshd服务 例子: ssh donny@192.168.120.121 –p 22
    scp 远程安全拷贝,基于ssh,把当前一个文件cp到远程另外一台主机上,
    例如: scp /home/donny/abc.tar.gz root@192.168.120.121:/home/root
    如果想反过来操作,把文件从远程主机copy到当前系统,也很简单:
    scp root@/abc.tar.gz 192.168.120.121:/home/root/abc.tar.gz /home/donny/abc.tar.gz
    wget 用来从指定的URL下载文件,例:wget http://www.linuxde.net/testfile.zip
    wget ftp-url 匿名下载ftp服务器文件,下面为带用户名密码下载
    wget --ftp-user=USERNAME --ftp-password=PASSWORD url
    ping 使用ICMP传输协议,发出要求回应的信息,测试联通性。
    ping 192.168.1.1 或者 ping www.server.com
    route 设置静态路由,重启网卡或机器后会失效,永久有效改配置文件/etc/rc.local
    route 不加参数为显示当前路由(其中flags为节点状态,U开启、G网关、D动态性地写入、M由路由导向器动态修改的、!关闭)
    route add -net 0.0.0.0 netmask 0.0.0.0 dev eth0 增加一条默认路由
    route add -net 192.168.0.0 netmask 255.255.255.0 reject 屏蔽此路由
    route del -net 192.168.0.0 netmask 255.255.255.0 reject 取消屏蔽
    route add fefault gw 192.168.120.240 添加一个默认网关(重启失效)
    route del fefault gw 192.168.120.240 删除一个默认网关
    ifconfig 显示激活的网络设备信息,可配置但是重启不保存不建议
    ifup 激活指定的网络接口: ifup eth0
    ifdown 禁用指定的网络接口: ifdown eth0
    netstat 打印网络系统的状态信息
    查看p pid号l 监听的端口a端口 n用IP显示 t TCP传输的连接 r 路由flags
    netstat -plantr
    查看连接某服务端口最多的IP地址:netstat -ntu | grep :80 | awk '{print $5}' | cut -d: -f1 | awk '{++ip[$1]} END {for(i in ip) print ip[i],"\t",i}' | sort -nr
    ip 版本6中配置ip命令
    删除网卡配置 ip a f dev eth0
    添加网卡配置 ip a add 192.168.1.1/24 dev eth0
    深入网络操作命令(5 个)
    lsof mail nslookup dig
    lsof lsof命令用于查看你进程开打的文件,打开文件的进程,进程打开的端口(TCP、UDP)。找回/恢复删除的文件。是十分方便的系统监视工具,因为lsof命令需要访问核心内存和各种文件,所以需要root用户执行。
    查看哪一个程序正在占用80端口 lsof –i tcp:80
    mail 邮件发送和接受命令 mail -s “hello” donny@linuxde.net
    使用管道进行邮件发送 echo “hello” | mail -s donny@linuxde.net
    nslookup 查询DNS解析是否成功
    dig 查看域名系统是否工作正常:dig www.baidu.com
    查看某个域名的整个解析过程:#dig @8.8.8.8 www.baidu.com +trace
    有关磁盘文件系统的命令(8 个)
    mount umount df du fsck dd dumpe2fs dump
    mount 挂载
    umount 取消挂载
    df 显示文件挂载 例如: df -h
    du 测量大小 例如: du -sh aaa
    fsck 修复文件系统中的错误 分区有问题 : fsck -y /etc/sdb2
    dd dd if=/dev/zero of=abc bs=1M count=100
    du -sh abc 可以看到生成了 100M的一个文件
    /dev/zero是一个字符设备,会不断返回0值字节
    dumpe2fs 命令用于打印“ext2/ext3”文件系统的超级块和快组信息。直接使用
    dumpe2fs /dev/sda3 | egrep –i “block count | Inode count”
    ------查看inode节点 和 block块 数量
    dump 备份ext2和3文件系统,
    例如将/home目录备份到/tmp/home.bak,层级0,并记录在/etc/dumpdates
    dump -0u -f /tmp/home.bak /home
    关机和查看系统信息的命令(3 个)
    shutdown halt init
    shutdown 关机 :shutdown +5 “提示信息”
    halt 关机
    init 查看系统进程命令:ps -ef | head
    查看init的配置文件:more /etc/inittab
    查看系统当前运行的级别:runlevel
    查看当前操作系统: cat /etc/redhat-release
    系统安全相关命令(10 个)
    chmod chown chgrp chage passwd su sudo umask chattr lsattr
    chmod chmod u+x,g+w f01 //为文件f01设置自己可以执行,组员可以写入的权限
    chmod u=rwx,g=rw,o=r f01
    chmod 764 f01
    chmod a+x f01  //对文件f01的u,g,o都设置可执行属性
    还有粘滞位概念:
    chmod u+s [命令] 以此命令所属者名义执行
    chmod g+s [命令]或[文件夹] 在此文件夹下或用此命令,创建的文件都继承其组
    chmod o+t [文件]或[文件夹] 除了root和拥有着,其他人都无法删除该文件/夹
    chown chown user:market f01  //把文件f01给uesr,添加到market组
    chgrp chgrp -R mengxin /usr/meng
    chage 修改密码过期时间
    -m:密码可更改的最小天数。为零时代表任何时候都可以更改密码。
    -M:密码保持有效的最大天数。
    -w:用户密码到期前,提前收到警告信息的天数。
    -E:帐号到期的日期。过了这天,此帐号将不可用。
    -d:上一次更改的日期。
    -i:停滞时期。如果一个密码已过期这些天,那么此帐号将不可用。
    -l:例出当前的设置。由非特权用户来确定他们的密码或帐号何时过期。
    chage -M 60 donny
    passwd 设置密码与过期时间,一般只有root用户可用,普通用户只能改自己密码
    -d:删除密码,仅有系统管理者才能使用 passwd -d donny
    -f:强制执行 passwd -fd donny
    -k:设置只有在密码过期失效后,方能更
    -l:锁住用户不能更改密码 passwd -l donny
    -u:解开已上锁的帐号 passwd -u donny
    -s:列出密码的相关信息,仅有系统管理者才能使用
    改密码另以命令:echo “123456” | passwd –-stdin 用户名
    su su user 切换用户,加载配置文件.bashrc
    su - user 切换用户,加载配置文件/etc/profile ,加载bash_profile
    sudu 以他人的身份来执行命令,在/etc/sudoers 中设置foobar ALL=(ALL) ALL
    第一个ALL是指网络中的主机,我们后面把它改成了主机名,它指明foobar可以在此主机上执行后面的命令。第二个括号里的ALL是指目标用户,也就是以谁的身份去执行命令。最后一个ALL当然就是指命令名了。例如,我们想让foobar用户在linux主机上以jimmy或rene的身份执行kill命令,这样编写配置文件:foobar linux=(jimmy,rene) /bin/kill
    umask 文件权限掩码,取消什么权限
    chattr 用来改变文件目录的更底层属性 例如:chattr +i /etc/resolv.conf 去掉就是 -i
    lsattr 用来查看文件目录的更底层属性 例如:lsattr /etc/resolv.conf
    查看系统用户登陆信息的命令(6 个)
    whoami who w last lastlog users
    whoami 打印当前用户名
    who 看有哪些用户登陆
    w 看有哪些用户登陆 比who详细
    last 用于显示用户最近登录信息。单独执行last命令,它会读取/var/log/wtmp的文件,并把该给文件的内容记录的登入系统的用户名单全部显示出来。
    lastlog 用于显示系统中所有用户最近一次登录信息。
    lastlog文件在每次有用户登录时被查询。可以使用lastlog命令检查某特定用户上次登录的时间,并格式化输出上次登录日志/var/log/lastlog的内容。它根据UID排序显示登录名、端口号(tty)和上次登录时间。如果一个用户从未登录过,lastlog显示Never logged。注意需要以root身份运行该命令。
    users 看有哪些用户登陆 只显示用户名和登陆会话
    查看硬件信息相关命令(8 个)
    ifconfig free fdisk ethtool mii-tool dmidecode dmesg lspci
    ifconfig 显示激活的网络设备信息,可配置但是重启不保存不建议
    free 查看内存与swap分区
    fdisk 用于观察硬盘实体使用情况,fdisk -l
    也可对硬盘分区 fdisk /dev/sdb
    m帮助;p查看当前分区情况;d删除分区;n添加分区;w保存
    创建分区时,扩展分区需要再创建成逻辑分区才能够使用
    ethtool 用于获取以太网卡的配置信息,或者修改这些配置 ethtool eth0
    mii-tool 用于查看、管理介质的网络接口的状态 mii-tool -v eth0
    dmidecode 获取有关硬件方面的信息
    查看服务器型号:dmidecode | grep 'Product Name'
    查看主板的序列号:dmidecode |grep 'Serial Number'
    查看系统序列号:dmidecode -s system-serial-number
    查看内存信息:dmidecode -t memory
    查看OEM信息:dmidecode -t 11
    dmesg 检查和控制内核的环形缓冲区/var/log/dmesg中的信息
    系统性能监视高级命令(10 个)
    内存:top vmstat mpstat iostat sar ipcs ipcrm lsof strace:跟踪一个进程的系统调用 ltrace:跟踪进程调用库函数的情
    top 动态查看系统进程
    vmstat 显示虚拟内存状态 例如:vmstat 3 5 间隔3秒报告5次
    mpstat 显示各个可用CPU的状态/proc/stat文件中
    iostat 监视系统输入输出设备和CPU的使用情况 iostat -x /dev/sda1
    标示 说明
    Device 监测设备名称
    rrqm/s 每秒需要读取需求的数量
    wrqm/s 每秒需要写入需求的数量
    r/s 每秒实际读取需求的数量
    w/s
    每秒实际写入需求的数量
    rsec/s 每秒读取区段的数量
    wsec/s 每秒写入区段的数量
    rkB/s 每秒实际读取的大小,单位为KB
    wkB/s 每秒实际写入的大小,单位为KB
    avgrq-sz 需求的平均大小区段
    avgqu-sz 需求的平均队列长度
    await 等待I/O平均的时间(milliseconds)
    svctm I/O需求完成的平均时间
    %util 被I/O需求消耗的CPU百分比

sar 系统运行状态统计工具,可以连续对系统取样,获得大量的取样数据,消耗的系统资源很小
-A:显示所有的报告信息;
-b:显示I/O速率;
-B:显示换页状态;
-c:显示进程创建活动;
-d:显示每个块设备的状态;
-e:设置显示报告的结束时间;
-f:从指定文件提取报告;
-i:设状态信息刷新的间隔时间;
-P:报告每个CPU的状态;
-R:显示内存状态;
-u:显示CPU利用率;
-v:显示索引节点,文件和其他内核表的状态;
-w:显示交换分区状态;
-x:显示给定进程的状态。
sar -o temp 60 10 观察系统部件10分钟,并对数据进行排序
ipcs 进程间通信设施的状态 例如: ipcs -apm
ipcrm 删除一个或更多的消息队列、信号量集或者共享内存标识 先用ipcs -a 看 再用ipcrm -m ID号
lsof 查看你进程开打的文件
-a:列出打开文件存在的进程;
-c<进程名>:列出指定进程所打开的文件;
-g:列出GID号进程详情;
-d<文件号>:列出占用该文件号的进程;
+d<目录>:列出目录下被打开的文件;
+D<目录>:递归列出目录下被打开的文件;
-n<目录>:列出使用NFS的文件;
-i<条件>:列出符合条件的进程。(4、6、协议、:端口、 @ip )
-p<进程号>:列出指定进程号所打开的文件;
-u:列出UID号进程详情;
strace 诊断、调试、统计与一体的工具,后续再研究!
进程管理:(16 个)
bg:后台运行 fg:挂起程序 jobs:显示后台程序 kill,killall,pkill:杀掉进程 crontab:设置定时 ps:查看进程 pstree:显示进程状态树 top:显示进程 nice:改变优先权 nohup:用户退出系统之后继续工作 pgrep:查找匹配条件的进程
bg bg命令与在指令后面添加符号"&"的效果是一样的:bg 1 任务号
fg 将后台任务转换到前台执行
jobs 显示后台程序 -l:显示进程号; -p:仅任务对应的显示进程号; -n:显示任务状态的变化; -r:仅输出运行状态(running)的任务; -s:仅输出停止状态(stoped)的任务。
kill 删除执行中的程序或工作,先用ps查找进程,然后用kill杀掉:ps -ef | grep vim ; kill 5591
killall 使用进程的名称来杀死进程,使用此指令可以杀死一组同名进程。我们可以使用kill命令杀死指定进程PID的进程,如果要找到我们需要杀死的进程,我们还需要在之前使用ps等命令再配合grep来查找进程,而killall把这两个过程合二为一,是一个很好用的命令
-u:杀死指定用户的进程 ; -l:忽略大小写的不同
pkill 也就是说:kill对应的是PID,pkill对应的是command
crontab 计划任务服务 crond 默认随系统安装,查看是否开启:
      chkconfig --list crond
/etc/init.d/crond {start|stop|status|reload|restart|condrestart}
ps –ef | grep crond
crontab -e -u Donny
分 时 日 月 周 命令绝对路径 >/dev/null 2>&1 不返回消息提示
‘每’; - ‘到’; ,和  ; /间隔n 。
例子: 00 23,00-07/2
/application/apache/bin/apachectl graceful
每天晚上23点到次日早上7点 每隔2隔小时 重启阿帕奇服务 注意分不能为
/30
开发—虚拟机测试—IDC机房测试环境—IDC正式环境(分组,灰度发布)
ps 报告当前系统的进程状态: ps -aux | grep 列出需要的进程 或者ps -ef
-a 显示所有终端机下执行的程序,除了阶段作业领导者之外
-u 以用户为主的格式来显示程序状况,也可使用用户名称来指定
-x 显示所有程序,不以终端机来区分
-f 显示UID,PPIP,C与STIME栏位。
-e显示所有程序。
pstree 树状图的方式展现进程之间的派生关系,显示效果比较直观
显示当前所有进程的进程号和进程id: pstree -p
显示所有进程的所有详细信息,遇到相同的进程名可以压缩显示: pstree -a
top 动态查看系统进程
nice 指定的进程调度优先级,例子:nice -19 tar zcf pack.tar.gz documents
nohup 将程序以忽略挂起信号的方式运行起来,如果使用nohup命令提交作业,那么在缺省情况下该作业的所有输出都被重定向到一个名为nohup.out的文件中,除非另外指定了输出文件:
nohup command > myout.file 2>&1 &
pgrep 名称为依据从运行进程队列中查找进程,
-o:仅显示找到的最小(起始)进程号;
-n:仅显示找到的最大(结束)进程号;
-l:显示进程名称;
-P:指定父进程号;
-g:指定进程组;
-t:指定开启进程的终端;
-u:指定进程的有效用户ID。
显示用户为donny,进程名为sh 的进程PID: pgrep -u donny sh
非常危险的系统命令(5 个)
mv rm fdisk parted dd
parted 与fdisk一样分区但是更强大,可调整还可以支持NTFS,FAT32格式
linux 系统3位剑客1小弟(3 个)
grep sed awk tr
grep 三剑客老三 grep a * 查找当前目录下包含a 的文件,并输出文件名:该行
-i 不区分大小写
–v 反选
–q不返回任何信息除了正确与否
-n 输出显示所在行行号
-o 只显示匹配的内容,每个分一行显示出来
-w 把筛选当做一个单词 作用与<>一样
-x 只有筛选在这一样才显示 grep -x “bin” abc
-P 启用perl语言

  • -E 启用扩展正则表达’
    -r 递归查下去 grep -r “abc” dir/
    -f 比较两个文件相同打印出来 grep –f file1 file2 -v 反选
    grep -Eo "\<[a-Z]{3}\>" file1 --color
    grep -Ei "\<[a-Z][a-Z][a-Z]\>" file1 --color 都是匹配3个字符
    grep -Ei "\<...\>" file1 --color
    echo "abccccc" |grep -Ei "abc+" –color 1个多个
    echo "abccccc" |grep -Ei "abc
    " –color 0个多个
    echo "abccccc" |grep -Ei "abc?" –color 任意1个
    echo "abccccc" |grep -Ei "abc{3}" –color 匹配3个c
    echo "a2523423fjaig423n2352k24n" | grep "^[a-Z]" --color
    a2523423fjaig423n2352k24n
    echo “123d456”| grep “123[a-Z]456” --color
    123d456
    echo “123df456”| grep “123[a-Z]456” --color
    echo “123456”| grep “123[a-Z]456” --color
    都出不来
    echo “123d456”| grep “123[^a-Z]456” --color 中括号里的^尖表示取反
    echo “123456”| grep -i“123.456” --color
    .点表示任意一个字符
    echo “123456”| grep -i“123” --color
    代表 前面一个字符有0个或者多个 ,后面没有
    echo “123456”| grep -i“123.” --color
    .
    代表任意字符串
    echo “123456”| grep -Ei“(123)” --color
    小括号当一个整体 E显示出来
    grep “abc” dir/
    在目录dir下所有文件中查找含有abc字符串的文件
    echo "rich.wang@sohu-163.com.cn" | grep -Ei “[a-Z0-9.%#!-]+@[a-Z0-9.-]+.[a-Z]{2,3}” --color
    筛选需要的内容 (-v 排除的内容) 例如:
    ①grep 20 -A 10 打印a文件的20行与后面10行 after
    ②grep 25 -C 5 a 打印25行的前后5行 context
    ③grep 30 -B 10 a打印 30行的前10行 before
    sed stream editor linux三剑客老二,流编辑器,实现对文件的增删改替换
    --------- tr小弟 # cat file | tr "abc" "xyz" > new_file
    【注意】这里,凡是在file中出现的"a"字母,都替换成"x"字母,"b"字母替换为"y"字母,"c"字母替换为"z"字母。而不是将字符串"abc"替换为字符串"xyz"。
    结合awk 将文件权限输出rwx-改为 数字显示例子: ls –l /donny | cut –c2-10 | tr “rwx-” “4210” | awk –F“” ‘{print $1+$2+$3“”$4+$5+$6“”$7+$8+$9}’ -------

    sed 把文件所选内容每行依次,读到内存模式空间,再匹配正则 ,匹配则完整输出整行,再输出模式空间中的内容,所以匹配的会被打印两次
    例如:sed ‘/abc/p’ file1这条命令的执行过程
    将file1文件内容每行依次读到内存模式空间,匹配abc 字符的则输出整行,不匹配则不输出,然后默认地将模式空间中的该行打印出来,所以匹配的会被打印两行,然后再进行下一行重复工作直到末行。
    p s d c a i这些操作都是针对模式空间 p打印a在下一行架i在上一行加c修改本行d删除 s替换
    sed -n '5p' file1
    sed -n '1,5p' file1
    sed -n '$p' file1 打印最后一行
    sed -n '/^root/p' file1
    sed '3iabc' file1 在3行上一行加一行abc
    sed "3iabc\ndef" file1 在第三行上面加两行
    sed '$arich' file1 在最后一行下面加一行rich
    sed '/localhost/aredhat' file1 在包含locolhost的行下添加一行写redhat
    sed '3crich' file1 把第3行改成rich
    sed '/root/crich' file1 把包含root的行 改成rich
    sed '3d' file1 删掉第3行
    sed ‘3d; 5d’file = sed ‘/abc/d; /def/d’file =sed -e ‘3d’ –e ‘5d’file
    sed '1,3d' file1 把1到3行都删掉
    sed '3,$d' file1 把3到末尾行的都删掉
    sed '/abc/d' file1 把包含abc的都删掉
    sed '/abc/!d' file1 把包含abc的行不删掉,其他都删掉
    sed '/^$/d' file1 空白行都删掉
    sed '/^\s$/d' file1 把全s行都删掉
    echo "30%" | sed 's/%//'
    = echo "30%" | tr –d “%”
    sed 's/root/rich/' file1 每行第一个root改为rich
    = tr “ root” ”rich”
    sed 's/root/rich/g' file1 每行所有也就是全文章改
    sed 's/root/rich/2' file1 每行第二个改
    echo "ab/c def" | sed 's/ab\/c/xyz/'
    echo "a b c" | sed 's/ //g'
    sed '/rich/s/steven/john/g' file1 把rich这一行中的改了
    sed -i '2,4s/^.
    $/def/' file1 把2行到4行所有改了
    var1="root" 赋值root到变量
    sed "/^$var1/crich" file1 把包含root的行全改了
    sed '/ADDR/s/^/#/' file1 行首加#
    sed '1,3d; s/rich/steven/' file1; 1到3行删除 rich改为steven
    sed -e '1,3d' -e 's/rich/steven/' file1 同上
    sed 's/red/&hat/' file1 在后面加上
    sed '/abc/,/xyz/s/rich/steven/' 匹配abc行与xyz行的
    读取第1行到模式空间
    有没有包含abc, 没有, 不执行s/rich/steven/, 默认打印模式空间, 清空模式空间, 读取下一行, 有没有包含abc...有, 执行s/rich/steven/, 默认打印模式空间, 清空模式空间, 读取下一行, 有没有包含xyz, 没有, 执行s/rich/steven/, 默认打印模式空间, 清空模式空间, 读取下一行, 有没有包含xyz...有, 执行s/rich/steven/, 默认打印模式空间, 清空模式空间, 读取下一行, 有没有包含abc...
    sed '/abc/,/xyz/d' file1 删除从第一个含有abc到含有xyz的行
    sed -n '/abc/,/xyz/p' file1 显示从第一个含有abc到含有xyz的行
    sed '1,/abc/d' file1 删除从第一行到第一个abc的行
    echo "dev abcd" | sed -r 's/[a-z]+ [a-z]+/123/' 全部用123替换
    echo "dev abcd" | sed -r 's/([a-z]+) ([a-z]+)/\2 \1/' 换位置 小括号表示的整体在后面可以用参数\1 、\2 、\3表示 一共可以用9个
    echo "abcdef" | sed -r 's/^..$/111/'
    111
    echo "abcdef" | sed -r 's/^(.).
    $/\1/'
    a
    echo "abcdef" | sed -r 's/^..(.)$/\1/'
    f
    修改selinux的模式 :sed -rin '/^[a-Z]{7}=/s/=.
    /=enforcing/' /etc/selinux/config
    例如: ①sed -n '20,30p' a 打印a文件的20到30行 -n取消默认输出 p默认的打印
    ②sed 's#要替换的字符#想替换成的内容#g' a ,替换格式 sed ‘s###g’a 只改了输出,并没有改文件内容,想改内容加参数-i,p打印s替换g全局
    ③-e是允许多项编辑
    ④sed -i 's#abc#bcd#g' find /a -type f -name "*.sh" 先找到/a目录下所有以.sh结尾的文件 并且把所有这些文件里面的abc换成bcd
    abc文件内在包含有abc的行到def的行,中间的有xyz的字符改为333:
    sed ‘/abc/,/def/s/xyz/333/’abc
    sed ‘/DNS/s/^#//;s/yes/no/’ abc
    sed -r‘/IP/s/[0-9.]+/192.168.69.10’ifcfg-eth0
    read –p “please enter an ip:” A
    sed –r “/IP/s/[0-9.]+/$A/” ifcfg-eth0
    awk 三剑客老大,过滤输出,一门语言用于处理日志和文本。
    取出包含字符串的行 : awk ‘/root/’ /etc/passwd
    第二个参数包含 awk ‘$2 ~ /root/’ /etc/passwd
    第二个参数等于 awk ‘$2 == /root/’ /etc/passwd
    取反 awk ‘!/root/’ /etc/passwd
    首先看是否有BEGIN语句块,有执行;再逐行查看有没有模式匹配,再执行常规语句块;最后看有没有END语句块,有执行:
    awk –F: ‘BEGIN{print “hello”}/root/{print $1;}END{print “bye”}’ passwd
    输出: hello
    root
    bye
    取出大于1000字节的文件: ls –l | awk ‘NR>1 && $5 >=1000 {print $9;}’
    变量: {print $0 NR NF $NF }
    NR代表行号 例如: awk 'NR>19&&NR<31' a 打印a文件的20到30行 &&并且 NR==30等于, 也可以被print;
    Awk ‘END{print NR}’ abc 打印文件一共有多少行
    NF代表该行有多少列
    -F 指定分隔符 例如:awk -F "[ :]+" '{print $1,$2,$6}' aaa 打印aaa文件中以空格 和冒号:分隔的第一个和第二、六个参数。
    awk 'NR>9&&NR<21' passwd | awk -F "[:]+" '{print $3}' > test.txt ==== awk -F “:”’NR>9&&NR<21{print $3}’passwd > test.txt
    打印出第二个参数为rich 的 最后一个参数:
    awk ‘$2 == “rich”{print $NF}’ abc
    -v选项 传变量到awk, 只用改变外部变量就行
    a=rich
    awk –v x=$a ‘$2==x{print $NF}’ abc
    还可以多个外部变量
    b=wh
    awk –v x=$a –v y=$b‘$2==x && $3!= y {print $NF}’ abc
    变量和正则连用 正则部分需要””括起来
    Awk –v x=$a ‘$5 ~ “^”x ’ file1
    取出ip a 中网卡eth0的IP地址
    ip a | awk ‘/^[ \t]+inet / && !/lo$/ {print $2}’| awk –F/ ‘{print $1}’
    {print}常规语句块中间可以接语句,也可以写成脚本
    awk ‘{if($4 == “wh”)print $2 ;else print $1}’ file1
    awk ‘ {if($4 == “wh”)print $1 ;else if ($4 == “hn”)print $2; else if($4 == “bj”)print $3; else print $5}’ file1
    在awk中接shell命令:
    找到可以登录的用户,并且再当前文件夹下创建所有用户的目录:
    awk -F: '/bash$/{print $1;}' /etc/passwd
    for i in awk -F: '/bash$/{print $1;}' /etc/passwd ;do

    mkdir $i
    done;
    等同于 awk ‘/bash$/{system(“useradd –g groupname ”$1)}’ /etc/passwd

其它(16个)
echo printf rpm yum watch alias unalias clear history eject time
nc xargs exec export unset ntsysv
echo 直接输出指定的字符串
搞点有趣的,用echo命令打印带有色彩的文字:
文字色:
echo -e "\e[1;31mThis is red text\e[0m"
This is red text
• \e[1;31m 将颜色设置为红色
• \e[0m 将颜色重新置回
颜色码:重置=0,黑色=30,红色=31,绿色=32,×××=33,蓝色=34,洋红=35,青色=36,白色=37
背景色:
echo -e "\e[1;42mGreed Background\e[0m"
Greed Background
颜色码:重置=0,黑色=40,红色=41,绿色=42,×××=43,蓝色=44,洋红=45,青色=46,白色=47
文字闪动:
echo -e "\033[37;31;5mMySQL Server Stop...\033[39;49;0m"
红色数字处还有其他数字参数:0 关闭所有属性、1 设置高亮度(加粗)、4 下划线、5 闪烁、7 反显、8 消隐

printf C语言输出
rpm 安装软件包 例如:rpm -ivh Donny-package.rpm
卸载软件包 rpm -e Donny-package 不可以有后缀.rpm
yum 安装程序
watch 检测一个命令的运行结果,默认 watch 会以 2s 的间隔重复运行命令,-n 指定时间间隔
-d 高亮度显示变化的区域,可以拿他来监测你想要的一切命令的结果变化,
比如 tail 一个 log 文件,ls 监测某个文件的大小变化
watch -n 1 -d netstat -ant # 命令:每隔一秒高亮显示网络链接数的变化情况
watch -n 1 -d 'pstree|grep http' # 每隔一秒高亮显示http链接数的变化情况。 后面接的命令若带有管道符,需要加''将命令区域归整。
watch 'netstat -an | grep:21 | \ grep<模拟***客户机的IP>| wc -l' # 实时查看模拟***客户机建立起来的连接数
watch -d 'ls -l|grep scf' # 监测当前目录中 scf' 的文件的变化 watch -n 10 'cat /proc/loadavg' # 10秒一次输出系统的平均负载
watch uptime watch -t uptime watch -d -n 1 netstat -ntlp watch -d 'ls -l | fgrep goface' # 监测goface的文件
watch -t -differences=cumulative uptime watch -n 60 from # 监控mail watch -n 1 "df -i;df" # 监测磁盘inode和block数目变化情况
alias 查看和设置别名 例子:查看别名 直接输入alias,设置别名 alias cp='cp -i'
永久生效需要追加到/etc/profile和/etc/bashrc文件中
echo“alias cp=‘cp -i’”>>/etc/profile && echo“alias cp=‘cp -i’”>>/etc/bashrc
unalias 取消别名
clear 清除当前屏幕终端上的任何信息
history 历史记录
eject 退出抽取式设备
time 用于统计给定命令所花费的总时间 例如: time ls
real时间是指挂钟时间,也就是命令开始执行到结束的时间。这个短时间包括其他进程所占用的时间片,和进程被阻塞时所花费的时间。
user时间是指进程花费在用户模式中的CPU时间,这是唯一真正用于执行进程所花费的时间,其他进程和花费阻塞状态中的时间没有计算在内。
sys时间是指花费在内核模式中的CPU时间,代表在内核中执系统调用所花费的时间,这也是真正由进程使用的CPU时间。
nc
xargs 从标准输入获取内容和执行命令 -n 一行几个 例如 xargs -n 4 < test.txt 用一行输出test.txt的所有内容
不加参数默认无限大,1行全显示与管道连用 | xargs
-i 参数 把前面找到的文件关联到{}中,并且将xargs的每项名称,一行一行复制给{},让不支持批处理的命令按行执行
例如: find / -type f -name “donny.*”| xargs -i mv {} /tmp/
exec 调用并执行指令的命令
查找所有rpcuser用户的文件,并且把他们拷贝到/mnt下
find / -user rpcuser -exec cp -Rfp {} /mnt \;
export 将上一个shell的变量,利用到下一个shell中
unset 删除已定义的shell变量 -f 仅删除函数 -v 仅删除变量

转载于:https://blog.51cto.com/1430505/2046916

linux运维必备178个命令相关推荐

  1. Linux 运维必备150 个命令,值得收藏!

    Linux 运维必备 150 个命令,请配合下面的网站使用.定位你需要使用的命令,然后去这个网站查询详细用法即可. 地址:wangchujiang.com/linux-command/ 这个网站来自 ...

  2. Linux 运维必备 150 个命令,速度收藏~

    点击上方☝码猿技术专栏 轻松关注,设为星标! 及时获取有趣有料的技术 来源:banana 童 地址:www.cnblogs.com/bananaaa/p/7774467.html linux 命令是对 ...

  3. 13 款高逼格且实用的 Linux 运维必备工具

    13 款高逼格且实用的 Linux 运维必备工具 转自:https://mp.weixin.qq.com/s?__biz=MzI0MDQ4MTM5NQ==&mid=2247487674& ...

  4. Linux运维07:free命令详解

    系列专题:Linux运维入门教程 free命令可以显示Linux系统中空闲的.已用的物理内存及swap内存,及被内核使用的buffer.在Linux系统监控的工具中,free命令是最经常使用的命令之一 ...

  5. Linux运维02:top命令详解

    系列专题:Linux运维入门教程 top命令是Linux下常用的性能分析工具,能够实时显示系统中各个进程的资源占用状况,类似于Windows的任务管理器.         下面详细介绍它的使用方法.t ...

  6. Linux 运维必备的 13 款实用工具,拿好了

    本文介绍几款 Linux 运维比较实用的工具,希望对 Linux 运维人员有所帮助. 1. 查看进程占用带宽情况 - Nethogs Nethogs 是一个终端下的网络流量监控工具可以直观的显示每个进 ...

  7. Linux运维10:scp命令详解

    系列专题:Linux运维入门教程 scp是secure copy的简写,用于在Linux下进行远程拷贝文件的命令,和它类似的命令有cp,不过cp只是在本机进行拷贝不能跨服务器,而且scp传输是加密的. ...

  8. 《Linux运维总结:find命令高级用法详解》

    文章目录 一.基本用法 二.高级用法 2.1.查找时排除文件或目录 2.2.查找指定目录层级限制文件或目录 2.3.对查找到的文件执行命令操作 总结:整理不易,如果对你有帮助,可否点赞关注一下? 一. ...

  9. Linux运维之道-基础命令

    基础命令 参照 linux运维之道(丁明一) 文章目录 基础命令 一.目录以及文件的基本操作 1. pwd 2.cd 3.ls 4.touch 5.mkdir 6.cp 7.rm 8.mv 9.fin ...

最新文章

  1. (zt)Web 2.0奔路进行时
  2. SAP MM ME1P查询采购订购订单价格历史
  3. 红帽启动apache服务器_CentOS6.5环境下搭建Apache httpd服务器
  4. day88 Vue基础
  5. 区块链,使用 Go-Ethereum 搭建以太坊私有链
  6. 二、HDFS基本架构和shell操作
  7. 一文带你了解隐马尔科夫模型
  8. 通道设置_烟台240家住宅小区、346家重点单位完成消防车通道标识设置
  9. uibinder表单提交_使用UIBinder的GWT自定义按钮
  10. html-表单的应用
  11. SpringBoot————快速搭建springboot项目
  12. page对保护的作用
  13. SLAM常用数据集(2)
  14. 简单的进度条拖动效果及拖拽改变层大小
  15. vue的table组件
  16. JSON正确的下载网址及编译
  17. 万网域名查询是否注册接口
  18. 你一定要知道的四个程序员接外包的网站,悄悄把技术变现!
  19. css中的各种选择器
  20. mysql redo log 数据恢复_MySQL 怎么样恢复丢失的数据?redo log 写磁盘的过程

热门文章

  1. 【转载】专利翻译常用词句
  2. Joel Spolsky给计算机专业学生的七个建议
  3. 在互联网时代一切归零
  4. 阿童木实验校区-----少儿编程鼓励跨学科融合发展!
  5. 基于JAVA学术会议信息网站计算机毕业设计源码+系统+数据库+lw文档+部署
  6. 并发和多线程(一)并发、进程、线程概念
  7. 数据结构电梯模拟 100梯1000层 不限梯数
  8. 微信小程序-点击按钮退出小程序
  9. 苹果手机信号是哪个服务器,为什么普遍苹果手机信号比安卓机还要差呢?总算是搞明白了...
  10. HTTP的SSL 证书安装