获取通过源运行的后台进程的 PID

获取通过源运行的后台进程的 PID

因此,我有一个作为源运行的小脚本(对于那些感兴趣的人,我这样做是为了获得运行脚本的人的正确 $SECONDS 值),并将程序放在后台。在这个脚本中有一个无限循环,每秒运行一次以更新临时文件。

所以我的问题是,如何获得需要终止的脚本内循环的 PID,以终止临时文件/脚本的更新?

答案1

  1. 如果您获取它,它实际上并不是一个单独的脚本。就好像您在源/调用它的位置/脚本中存在您源的所有行。

  2. 循环没有 PID。如果在前台,则在当前PID下工作。但是如果你将它发送到后台,那么该作业就会获得它自己的 PID,你可以通过以下方式获得它:

    do-something-in-a-loop & pid=$!

  3. 如果您知道任务的工作规范,您也可以使用它。如果你只有一份工作,你可以做kill %1

答案2

简而言之,循环没有自己的 PID,因为它不在单独的进程中运行,即循环的 PID 是脚本的 PID。

如需更有用的答案,请发布实际代码。

相关内容