【问题标题】:How to record pid of job(s) launched in a bash script如何记录在 bash 脚本中启动的作业的 pid
【发布时间】:2014-02-14 20:14:34
【问题描述】:

我有一个 bash 脚本,可以将许多作业发送到集群,它看起来像这样:

for i in `seq 1 ${MIN}`

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

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

【问题讨论】:

标签: linux bash shell process parallel-processing


【解决方案1】:

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

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

【讨论】:

  • 假设我发送的作业没有 echo $! >> ~/pids.txt。在这种情况下有没有办法检索 pid?
  • 您可以使用ps 查找您的所有进程。
猜你喜欢
  • 1970-01-01
  • 2018-07-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-11-27
  • 1970-01-01
  • 2015-12-06
相关资源
最近更新 更多