如何在没有jobs命令的情况下获取子进程ID

时间:2014-03-08 13:10:05

标签: shell

好的,所以我正在使用一个需要尽可能便携的shell脚本,我想确保我可以使用trap命令干净地整理任何子进程。

现在,在更新的平台上,jobs -p命令可用于获取子进程ID的列表,适合直接投入kill命令来整理,而不用担心。

但是,有些环境没有这个。为了解决这个问题,我使用了一个变量,我在其中抛出了进程ID,但它很混乱,并且输入错误可能会导致部分或全部子进程在它们应该被杀死时被杀死。

因此,在没有jobs命令的情况下,有哪些替代方案?或者换句话说,杀死脚本的所有子进程的最兼容的方法是什么?

让您了解潜在的限制;我需要使用的最基本系统没有pgrep,只有ps的基本版本只支持-w标志。它可以访问/proc/$$/下的特殊文件,但我不确定如何处理这些文件(其中任何一个甚至列出子进程?)。这是困难的一个重要部分,因为许多类似的问题使用我无法访问的工具列出解决方案,我只是喜欢兼容性问题=)

1 个答案:

答案 0 :(得分:0)

You can get the child pid using `!`

$!
相关问题