Use redirection characters to control output to files
Use piping to control output to other programs
进程间的通信
Linux 管道可以用于 Linux 程序之间,Linux 命令之间以及 Linux 程序和命令之间的通信。
在 shell 中,管道符(pipeline)是 shell 编程中众多控制操作符里的一个,用来分隔一个或多个命令的序列。
shell 编程中管道符号是竖杠符号 |(有时会用到 |& 符号),在 shell 中使用管道的格式如下,代表着 command1 的标准输出作为 command2 的标准输入使用,而 command2 的标准输出又作为 command3 的标准输入使用
command1 | command2 | command3
image.png
(base) root@dell:~ # ll /dev/ |less
(base) root@dell:~ # ps aux |grep 'sshd'
root 2032 0.0 0.0 72296 6216 ? Ss Jul03 0:00 /usr/sbin/sshd -D
root 9620 0.0 0.0 72296 4020 ? Ss Jul03 0:00 /usr/sbin/sshd
root 11371 0.0 0.0 72296 4000 ? Ss Jul03 0:00 /usr/sbin/sshd
root 18705 0.0 0.0 105824 7088 ? Ss 01:11 0:00 sshd: root@pts/0
root 20863 0.0 0.0 105692 7156 ? Ss 07:52 0:00 sshd: root@pts/1
root 21008 0.0 0.0 13136 1120 pts/1 S+ 07:53 0:00 grep --color=auto sshd
--将/etc/passwd中的用户按UID大小排序
(base) root@dell:~ # sort -t":" -k3 -n /etc/passwd
root:x:0:0:root:/root:/bin/bash
daemon:x:1:1:daemon:/usr/sbin:/usr/sbin/nologin
bin:x:2:2:bin:/bin:/usr/sbin/nologin
sys:x:3:3:sys:/dev:/usr/sbin/nologin
sync:x:4:65534:sync:/bin:/bin/sync
games:x:5:60:games:/usr/games:/usr/sbin/nologin
man:x:6:12:man:/var/cache/man:/usr/sbin/nologin
lp:x:7:7:lp:/var/spool/lpd:/usr/sbin/nologin
mail:x:8:8:mail:/var/mail:/usr/sbin/nologin
(base) root@dell:~ # sort -t":" -k3 -n /etc/passwd -r --逆序
(base) root@dell:~ # sort -t":" -k3 -n /etc/passwd |head --默认展示前10条
-t 指定字段分隔符 --field-separator
-k 指定列
-n 按数值
-统计出最占CPU的5个进程
root@ubuntu:~ # ps aux --sort=-%cpu |head -6
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
root 23197 79.0 0.0 17328 4920 pts/14 R+ 15:58 0:00 nvidia-smi
root 22850 58.1 4.7 19492116 1543568 pts/0 Dl+ 15:57 0:14 python3 ai_master.py
root 16559 29.2 3.4 16462356 1113008 pts/1 Sl 14:29 25:52 python3 ai_fr.py
root 9654 20.7 0.8 6101632 277880 ? Sl 15:00 11:57 /root/anaconda3/envs/ctfs/bin/python worker.py --code 001
root 12573 19.7 0.7 1342652 230996 ? Sl 15:45 2:35 ffmpeg -y -f rawvideo -pix_fmt bgr24 -s 960x540 -r 25 -i - -pix_fmt yuv420p -f mp4 -v quiet /data/static/2019-07-08/5c7df3e892ec987fcfbbaa578c4b1d55.mp4
-使用mkfifo或mknod命令来创建一个命名管道
lyq@DESKTOP-40030BI:~$ mkfifo ppie
lyq@DESKTOP-40030BI:~$ ls -l ppie
prw-rw-rw- 1 lyq lyq 0 Jul 8 18:26 ppie
lyq@DESKTOP-40030BI:~$ echo 'huahua' > ppie
--写操作会阻塞,因为管道另一端没有人读。这是内核对管道文件定义的默认行为。
--此时如果有进程读这个管道,那么这个写操作的阻塞才会解除:
^C
lyq@DESKTOP-40030BI:~$ cat ppie
^C
网友评论