如何跟踪生成多个免费进程的多个活动脚本的 PID

如何跟踪生成多个免费进程的多个活动脚本的 PID

我有一些程序需要按顺序运行,每个程序之间都有一个共同任务,修改数据并将其发送到另一个位置进行处理。每个modify_data脚本在复制主数据后都会产生几个子线程。我想跟踪所有子线程,如果主程序中出现故障,我可能需要杀死 1 个或多个正在运行的 edit_data 脚本的生成子线程,具体取决于我需要重新启动处理的时间。

我知道如果我知道父 ID 是什么,我可以使用 pkill -STOP -P $desired_PID 但我需要一种好方法来跟踪修改数据脚本的 pid,并在它们完成运行后将其删除,这样我就不会意外杀死其他东西。我天真的解决方案是在将每个脚本生成到某个环境变量时记录 $$ ,并在脚本完成运行后将其从该变量中删除,但我看到了几个问题,我怀疑已经创建了更好的解决方案。

驱动程序的例子:

progr1
prog2
modify_data.sh && active_pid="$active_pid $$"
prog3
modify_prog.sh && active_pid="$active_pid $$"
prog4
prog5
prog6
modify_prog.sh && active_pid="$active $$"
...

相关内容