15 程序管道Piping

2021-10-04 16:26:20 字數 3194 閱讀 2155

• use redirection characters to control output to files.

• 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 |

[root@fanhua ~]

# ll /dev/ |less

[root@fanhua ~]

# ps aux |grep 'sshd'

[root@fanhua ~]

# rpm -qa |grep 'httpd' //查詢所有安裝的軟體包,過濾包含httpd的包

[root@fanhua ~]

# yum list |grep 'httpd'

案例1:將/etc/passwd中的使用者按uid大小排序

[root@fanhua ~]

# cat a.txt

1:h2:h

3:h4:h

5:h6:h

7:h8:h

9:h10:h

[root@fanhua ~]

# sort -t":" -k3 -n a.txt //以: 分隔,將第三列按字數公升序

[root@fanhua ~]

# sort -t":" -k3 -n a.txt -r //-r 逆序

[root@fanhua ~]

# sort -t":" -k3 -n a.txt |head //-t 指定字段分隔符 -k 指定列 -n 按數值

案例2:統計出最佔cpu的5個程序

[root@fanhua ~]

# ps aux --sort=-%cpu |head -6

案例3:統計當前/etc/passwd中使用者使用的shell型別

思路:取出第七列(shell) | 排序(把相同歸類)| 去重

[root@fanhua ~]

# awk -f: '' /etc/passwd

[root@fanhua ~]

# awk -f: '' /etc/passwd |sort //sort分類

[root@fanhua ~]

# awk -f: '' /etc/passwd |sort |uniq //uniq去重

[root@fanhua ~]

# awk -f: '' /etc/passwd |sort |uniq -c //去重並統計類別的數量

40 /bin/bash

1 /bin/sync

1 /sbin/halt

22 /sbin/nologin

1 /sbin/shutdown

-f: 指定字段分隔符

$7 第七列欄位

# ss -an |grep :80 |awk -f":" '' |sort |uniq -c |sort -k1 -rn |head -n 20案例5: 列印當前所有ip

[root@fanhua ~]

# ip addr |grep 'inet ' |awk '' |awk -f"/" '' 127.0.0.1

192.168.2.115

案例6:列印根分割槽已用空間的百分比(僅列印數字)

[root@fanhua ~]

# df -p |grep '/$' |awk '' |awk -f"%" '' 6

[root@fanhua ~]

# df -th|grep '/$' |awk '' |awk -f"%" '' 9

[root@fanhua ~]

# ip addr |grep 'inet ' |tee ip.txt |awk -f"/" '' |awk '' //將前面內容tee輸入重定向到ip.txt檔案裡面去

127.0.0.1

172.16.60.1

[root@fanhua ~]

# cat ip.txt

inet 127.0.0.1/8 scope host lo

inet 172.16.60.1/24 brd 172.16.60.255 scope global eth0

[root@fanhua ~]

# ip addr |grep 'inet ' |tee -a ip.txt |awk -f"/" '' |awk '' -a追加

127.0.0.1

172.16.60.1

[root@fanhua ~]

# date >date.txt

[root@fanhua ~]

# date |tee date.txt

[root@fanhua ~]

# top -d 1 -bn 1 > top.txt

=[root@fanhua ~]

# top -d 1 -bn 1 |tee top.txt

top -d 1 一秒重新整理一次top

top -d 1 -bn 1 一秒重新整理一次top只執行一次

15 匿名管道

1.匿名管道的概念 本質 核心緩衝區 是偽檔案,不占用磁碟空間,磁碟上不存在 特點 1 由讀端和寫端兩部分組成,對應兩個檔案描述符 2 資料寫端流入,讀端流出 3 操作管道的程序被銷毀之後,管道自動被釋放 核心自動操作 不需要手動釋放 4 管道預設是阻塞的,讀和寫均預設阻塞。2.匿名管道的原理 1 ...

程序通訊 程序管道

程序間通訊的幾種常用方式 管道 命名管道 訊號 訊號量 共享記憶體 訊息佇列 套接字。管道 pipe 一種半雙工的通訊方式,資料只能單向流動且只能在具有共同祖先的程序間使用。命名管道 name pipe 也是一種半雙工的通訊方式,但他允許不相關程序間的通訊。訊號 sinal 乙個程序通過訊號通知其他...

程序通訊1 管道 命名管道

匿名管道 管道是一種簡單的程序通訊 ipc 機制。管道實質上就是pipe函式在核心中開闢了一段緩衝區,有乙個讀端和乙個寫端。兩個程序之間能夠通訊的本質 通過fork函式傳遞檔案描述符 子程序是父程序的副本,父程序所有開啟的檔案描述符都被複製到子程序中,父子程序的每個相同的開啟描述符共享乙個檔案表項 ...