我正在尝试在群集上实现像扭矩PBS这样的作业排队系统。
一个要求是即使在父项退出后也要终止所有子进程。这很重要,因为如果某人的工作没有等待其子进程有意或无意地结束,则子进程成为孤立并被进程init采用,那么很难跟踪子进程并杀死它们。
然而,我找到了解决问题的技巧,魔术特性是子进程的cpu亲和性,因为所有子进程与其父进程具有相同的cpu亲和性。但这并不完美,因为cpu亲和力也可以故意改变。
我想知道父进程及其后代是否还有其他任何内容,同时也是不可变的
答案 0 :(得分:0)
Linux中的进程表(例如几乎所有其他操作系统中)只是计算机RAM中的数据结构。它包含有关操作系统当前处理的进程的信息。
此信息包括有关每个流程的一般信息
信用转到Marcus Gründler
非现有信息可以帮助您。
但是当父进程id变为1(init)时,您可以使用该进程应该停止的事实。
#!/usr/local/bin/python
from time import sleep
import os
import sys
#os.getppid() returns parent pid
while (os.getppid() != 1):
sleep(1)
pass
# now that pid is 1, we exit the program.
sys.exit()
这会解决您的问题吗?