Bash 内置了 wait 命令用于等待进程的退出,并返回其退出码:

wait [-n] [n ...]Wait for each specified child process and return its termination status.
Each n may be a process ID or a job specification; if a job spec is given, all processes in that job's pipeline are waited for.
If n is not given, all currently active  child  processes  are waited for, and the return status is zero.
If the -n option is supplied, wait waits for any job to terminate and returns its exit status.
If n specifies a non-existent process or job, the return status  is 127.
Otherwise, the return status is the exit status of the last process or job waited for.

但是,从说明来看,wait只能等待当前shell的子进程。如果等待的进程不是当前进程的子进程,则会报告如下错误:

$ wait 1
-bash: wait: pid 1 is not a child of this shell

但是,很多时候我们需要等待任意的进程,那么,wait就不适用了。则需要其他办法。

等待任意进程退出的办法

tail

用法:tail --pid=$pid -f /dev/null

注意:这种方法不适用于 macOS,因为其下的 tail 不支持--pid 参数。但可以用来自 GNU 的 gtail。

哈哈,可能谁也没有想到 tail 竟然还有--pid这个神奇的参数。

tail 的帮助说明:

--pid=PIDwith -f, terminate after process ID, PID dies-f, --follow[={name|descriptor}]output appended data as the file grows;an absent option argument means 'descriptor'

lsof

用法:lsof -p $pid +r 1 &>/dev/null

lsof 用于枚举打开的文件。所以这个命令要求进程有打开文件。哪个进程那么极端会没有打开文件呢?

  • 参考
    Wait for a process to finish

shell等待特定进程pid退出的方法相关推荐

  1. nodejs进程异常退出处理方法

    nodejs进程异常退出处理方法 参考文章: (1)nodejs进程异常退出处理方法 (2)https://www.cnblogs.com/mengff/p/10207154.html (3)http ...

  2. shell获取当前进程pid和上一个进程pid

    $$  获取当前shell的进程号(PID) $!  执行上一个指令的PID 转载于:https://www.cnblogs.com/aggavara/archive/2012/11/16/27733 ...

  3. java 添加等待时间_Java中线程等待特定时间的最有效方法 - java

    我知道这个问题here,但是我有一个稍微不同的问题.如果我希望自己通过各种Thread方法(而不是通过实用程序类或Quartz)手动编码某个线程在特定时间的运行,那么最有效(就开销而言)进行编码. 我 ...

  4. python获取子进程pid_使用python获取进程pid号的方法

    保存为.py文件后 运行脚本在后面添加进程名称即可 比如:python proinfo.py qq 即可获取QQ的进程信息,注意不区分大小写 代码如下: #-*- encoding:UTF-8 -*- ...

  5. linux shell 脚本 父子进程 等待子进程,SHELL父子进程分析

    导言 本节将就shell交互(脚本执行)过程中涉及子进程(subprocess)以及子SHELL(subshell)的部分,配以实例,进行说明.将详细讨论如下问题:subprocess和subshel ...

  6. 《Linux进程概念,进程创建退出等待替换,环境变量等基础操作 ---总结》

    前言 Linux系统的进程概念,进程状态,以及操作创建进程,还有环境变量及相关指令,程序地址空间等一些知识的梳理,将自己的理解总结如下,希望和各位一起进步,一起学习. 以下是本篇文章正文内容. 文章目 ...

  7. Python 技术篇-通过进程名称、PID杀死windows进程的两种方法,获取当前运行程序的pid

    方法一: 利用 os 杀死进程. import os# 通过进程名称杀死进程 os.system('taskkill /f /im %s' % 'python.exe')# 通过pid杀死进程 os. ...

  8. shell中用grep查找并且不输出_Linux中用 grep查找特定进程,屏蔽grep进程本身(也就是不出现grep --color=auto)...

    2020年6月8日09:03:12更新 一些细节. 日常操作linux 中,通常在使用 ps命令后 用管道连接 查询特定进程会显示 grep进程本身. 如下: 1 [root@ecs-linux-by ...

  9. Ubuntu应用---强制退出应用方法(kill 进程 或者 退出窗口)

    Ubuntu应用---强制退出应用方法(kill 进程 或者 关闭窗口) 注意 一. 查看进程 二. kill 单一进程 三. kill 某一应用的所有进程 四. 强制关闭窗口(死进程) 注意 系统: ...

最新文章

  1. Nature会议:驾驭植物微生物组(21年10月22-24,在线,优惠截止9月24日)
  2. Java对List对象进行排序
  3. BERT和ERNIE谁更强?这里有一份4大场景的细致评测
  4. corba中IDL接口传值中文报错问题
  5. 如何在两个目录中删除其中一个目录中同名文件
  6. 一个肯德基拖着6个“拖油瓶”的百胜中国,如何赢下中国市场?
  7. [Swift]LeetCode781. 森林中的兔子 | Rabbits in Forest
  8. mysql 核心目录
  9. 使用Fiddler监控网易云笔记客户端向服务器定时发送的sync请求
  10. 计算机网络实验ifconfig,《计算机网络》操作系统网络配置实验.doc
  11. python 小海龟鼠标画图_Python小海龟画图
  12. 《SQL高级应用和数据仓库基础(MySQL版)》学习笔记 ·011【视图和索引】
  13. 浏览器异步加载和同源策略
  14. Windows系统下将目录挂载为一个磁盘并分配盘符
  15. Android View框架总结(一)
  16. 安装mongodb以及设置为windows服务 详细步骤
  17. (3)【路径平滑篇】路径平滑与拟合方向
  18. 专业程序员开发-老狼孩插件懒人精灵版
  19. 鲁大师手机HTML5性能,鲁大师5月新机性能排行:同样是线上手机,跑分相差30万?...
  20. 2019考研 报名条件是什么?

热门文章

  1. 微软SQL 报表服务的研究
  2. 【ELK】ELK安装与配置
  3. 【转载】Kubernetes 加入Docker 平台,Mac和Windows开发者的福音
  4. 解放计算给服务带来的压力,第一想到的就是阿里云高性能计算(HPC)
  5. Centos系统普通用户开启sudo命令
  6. docker使用问题总结
  7. Java从零开始学十四(包和访问控制)
  8. 使用控制结构——循环语句——基本循环
  9. linux gcc 静态 动态链接库
  10. 拯救你的颈椎,笔记本支架如何选择?