美文网首页
linux系列8-管道

linux系列8-管道

作者: 蕴重Liu | 来源:发表于2019-07-08 16:56 被阅读0次

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

相关文章

  • linux系列8-管道

    Use redirection characters to control output to filesUse ...

  • linux系列8-路径篇

    /是根节点,~是home 如使用root账户登录,~就是/root/ 如使用name登录,~就是/home/name/

  • Linux进程间通信

    Linux进程间通信的概念 linux下进程间通信的几种主要手段简介: 管道(Pipe)及有名管道(named p...

  • fifo()函数

    linux系统编程之管道(三):命名管道FIFO和mkfifo函数 - Meditation - 博...

  • linux 管道

    符号表示 |和管道特别形象。 作用 管道是Linux中很重要的一种通信方式,是把一个程序的输出直接连接到另一个程序...

  • 管道命令

    参考linux shell 管道命令(pipe)使用及与shell重定向区别、管道命令 管道命令操作符是:”|”,...

  • Linux 进程之间的通信方式

    linux使用的进程间通信方式 管道(pipe)、流管道(s_pipe)、无名管道(FIFO)、 套接字 sock...

  • Linux进程间通信 -- 匿名管道和FIFO

    Linux进程间通信 -- 匿名管道和FIFO 匿名管道 管道包括三种: 匿名管道pipe. 特点:一是单工(单项...

  • Linux进程间通信(Interprocess Communic

    linux下进程间通信的几种主要手段简介: 管道(Pipe)及有名管道(named pipe):管道可用于具有亲缘...

  • Linux下进程通信 匿名管道pipe

    匿名管道(pipe): 匿名管道(pipe)是Linux支持的最初Unix IPC形式之一 匿名管道进行父子进程之...

网友评论

      本文标题:linux系列8-管道

      本文链接:https://www.haomeiwen.com/subject/xrtahctx.html