第六十讲——进程间通信 本文共有24101个字,关键词: 进程间通信(IPC:inter process communication) 进程间通信是linux操作系统中非常常用的一种机制,我们说过,进程与进程间是相互意识不到存在的,那么进程与进程之间的通信还要到交换机上跑一圈?当然不是的。 一是通过共享内存,一个进程写点数据,另一个进程去读。 二是通过信号(signal)向另一个进程发送一个简短的信号。 三是通过旗语(semaphore),一个进程向另一个进程打个手势之类的。 信号: 使用kill –l可以显示出所有的可用信号。 kill 主要功能是终止一个进程。 但是kill通常用来向一个进程发送信号。 较为重要的信号有: 数字1:SIGHUP,让一个进程不用重启就可以重读配置文件,并让新的配置文件信息生效。 数字2:SIGINI:(Ctrl+C)终止(中断)一个前台进程。 数字9:SIGKILL:杀死一个进程,直接结束进程。 数字15:SIGTERM:终止一个进程,释放资源后终止。 我们制定一个信号的方式可以为: 信号号码:kill -# 信号名称:kill –SIGHUP 信号名称简写:kill –HUP kill 进程号,默认发送的是15号信号。 kill all command(进程名) 只要是叫这个名的进程全部结束 pkill 杀死一个进程,用法同pgrep 我们在执行一个命令的时候,有时候不想直接结束当前程序,又希望能够执行其他程序执行。这时候我们就需要使用到一种机制,一种将当前程序放入后台藏起来,使用的时候又能够取回来的机制。 ctrl + z 将当前进程放入后台藏起来。 fg命令,可以将后台藏起来的命令调入前台。 我们将占据了(终端)命令提示符的进程称为前台进程。 启动后释放命令提示符,在后台默默完成,称为后台进程。 我们在执行命令的时候,在命令前面加一个&符号,就会在执行程序后释放掉命令提示符。 当我们把一个进程从前台送入后台时,默认送给一个stop信号,进程送到后台时为停止状态。 #bg (background):让后台的停止作业继续运行,在后台运行。 #jobs 查看所有的作业(一般是后台的所有作业) 每一个作业都有作业号,作业号不同于进程号,且作业号前有加号“+”。 “+”:表示为被默认操作的作业。 “-”: 表示命令将第二个默认操作的作业。 #bg jobID(作业号),作业号可以省略,默认为带+号的作业。 #fg (jobID)将后台的作业调回前台。 bg和fg是不能够操作进程的,所以可以省略(%)号。 使用kill %jobID 终止一个作业。不加%为终止一个进程。 #vmstat:系统状态查看命令 procs 与进程相关 r:运行队列长度 b:阻塞队列长度 memory 与内存相关 swapd:交换空间已使用大小 free:空闲内存 buff:缓冲 cache:缓存 swap 与交换内存相关,表示从物理内存到swap分区有多少页面换进换出。 si (swap in):从物理内存放到交换内存(多少个页面) so(swap on): 从交换内存调入物理内存(多少个页面) io 与I/O相关 bi (blocks in)有多少个硬盘块调入内存 bo (blocks on)有多少个块同步到硬盘 system 与系统相关 in 中断的个数 cs 上下文切换的次数(进程切换的次数),当指定vmstat的时间间隔时,表示为,这个时间内切换了多少次。 cpu 与CPU相关 us 用户空间占用cpu的百分比 sy 内核空间占用cpu 的百分比 id 空闲的百分比 wa 等待io完成的百分比 st 被偷走的时间,指那些切换进程所消耗掉的时间。 vmstat #(number)刷新间隔,单位为秒 vmstat # # (vmstat 1 5)每隔一秒刷新一次,刷新五次。 uptime命令与top命令的第一行一样。 我们通过查看/proc/meminfo文件,也可以实现查看内存的信息。 查看/proc/##PID/maps可以查看当前进程占用物理内存的地址。 「一键投喂 软糖/蛋糕/布丁/牛奶/冰阔乐!」 赞赏 × 几人行 (๑>ڡ<)☆谢谢老板~ 2元 5元 10元 50元 100元 任意金额 2元 使用微信扫描二维码完成支付 版权声明:本文为作者原创,如需转载须联系作者本人同意,未经作者本人同意不得擅自转载。 给自己讲linux 2017-01-29 评论 1692 次浏览