• use redirection characters to control output to file. 输出到文件
  • use piping to control output to other programs. 输出到其他程序

files: > 2>file1.txt /dev/pts/2 /dev/tty1 /dev/null /dev/sda
programs: |

进程管道

用法:command1 | command2 | command3 |….
进程管道Piping - 图1
[root@centos7-1 ~]# ll /dev/ |less
[root@centos7-1 ~]# ps aux |grep ‘sshd’
[root@centos7-1 ~]# rpm -qa |grep ‘httpd’ //查询所有安装的软件包,过滤包含httpd的包
[root@centos7-1 ~]# yum list |grep ‘httpd’

  • 案例1:将/etc/password中的用户按UID大小排序

[root@centos7-1 ~]# sort -t”:” -k3 -n /etc/passwd //以: 分隔,将第三列按字数升序
[root@centos7-1 ~]# sort -t”:” -k3 -n /etc/passwd -r //逆序
[root@centos7-1 ~]# sort -t”:” -k3 -n /etc/passwd |head

-t 指定字段分隔符—field-separator
-k 指定列
-n 按数值

  • 案例2:统计出最占CPU的5个进程

[root@centos7-1 ~]# ps aux —sort=-%cpu |head -6
[root@bogon ~]# ps aux —sort=-%cpu | head -6 | grep -v ‘%CPU’

  • 案例3:统计当前/etc/password中用户使用的shell类型

[root@centos7-1 ~]# awk -F: ‘{print $7}’ /etc/passwd # 按照:分割取出第七列
[root@centos7-1 ~]# awk -F: ‘{print $7}’ /etc/passwd |sort # 排序,将相同的聚在一起
[root@centos7-1 ~]# awk -F: ‘{print $7}’ /etc/passwd |sort |uniq # 去重
[root@centos7-1 ~]# awk -F: ‘{print $7}’ /etc/passwd |sort |uniq -c
2 /bin/bash
1 /bin/sync
1 /sbin/halt
41 /sbin/nologin
1 /sbin/shutdown

-F:指定字段分隔符
$7:第7个字段

  • 案例4:统计网站的访问情况 top 20

思路:打印所有访问的连接 | 过滤访问网站的连接 | 打印用户的IP | 排序 | 去重
[root@centos7-1 ~]# yum -y install httpd
[root@centos7-1 ~]# systemctl start httpd
[root@centos7-1 ~]# systemctl stop firewalld

[root@centos7-1 ~]# ss -an |grep :80 |awk -F”:” ‘{print $8}’ |sort |uniq -c
4334 192.168.0.66
1338 192.168.10.11
1482 192.168.10.125
44 192.168.10.183
3035 192.168.10.213
375 192.168.10.35
362 192.168.10.39
[root@centos7-1 ~]# ss -an |grep :80 |awk -F”:” ‘{print $8}’ |sort |uniq -c |sort -k1 -rn |head -n 20

  • 案例5:打印当前所有IP

[root@centos7-1 ~]# ip addr |grep ‘inet ‘ |awk ‘{print $2}’ |awk -F”/“ ‘{print $1}’
192.168.122.205
先过滤行,再过滤列
**

  • 案例6:打印根分区已用空间的百分比(仅打印数字)

[root@centos7-1 ~]# df -P |grep ‘/$’ |awk ‘{print $5}’ |awk -F”%” ‘{print $1}’