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}' 查找时如何区分文件和目录? 5. 根据颜色区分,深蓝色为目录,白色为文件 6. ls –l 输出结果中以d开头的绝对是目录 7. ls –F或-p(前后加斜杠)通过给目录加标识,然后通过过滤标识就是目录 8. 上面的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 仅删除变量