linux - 如何记录 bash 脚本中启动的作业的 pid

标签 linux bash shell process parallel-processing

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

for i in `seq 1 ${MIN}`

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

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

最佳答案

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

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

关于linux - 如何记录 bash 脚本中启动的作业的 pid,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21788739/

相关文章:

bash - 在命令运行过程中超时后采取行动

sql - 如何通过Powershell将参数传递给SQL脚本

linux - wget 仅记录成功下载的 url

Python 程序可以在 Windows 上运行,但不能在 Linux 上运行

linux - 允许运行的最大线程数

bash - 如何将同一列粘贴n次?

linux - bash 脚本中的空回显是什么意思?

ruby-on-rails - 生产中的 Rails 5 控制台不从环境中读取数据库密码

linux - grep、awk 和 sed 有什么区别?

linux - Jenkins 在 "Execute shell"步骤期间生成无限数量的进程