2014-02-14 16 views
0

我有发送许多作业集群中的bash脚本启动时,它看起来是这样的:如何记录工作(一个或多个)的PID在bash脚本

for i in `seq 1 ${MIN}` 

do 
    cd longjob_${i}/ 
    make 
    nohup ./prog.x & 
done 

prog.x是一个Fortran可执行文件。我想记录每个工作的PID,所以我可以在需要时随意杀死工作。有没有办法做到这一点,例如,在nohup.out文件中记录pid 号码?

+0

可能重复[获取进程的PID开始通过ssh的nohup(http://stackoverflow.com/问题/ 12647382/get-the-pid-a-process-started-with-nohup-via-ssh) –

回答

1

变量$!包含最后启动的后台作业的PID:

for i in `seq 1 ${MIN}` 
do 
    cd longjob_${i}/ 
    make 
    nohup ./prog.x & 
    echo $! >> ~/pids.txt 
done 
+0

假设我发送的作业没有行echo $! >>〜/ pids.txt。在这种情况下是否有办法检索pid? – user2820579

+0

您可以使用'ps'查找所有进程。 – Barmar