获取Linux中nohup提交的作业的PID

时间:2017-12-20 13:58:32

标签: linux bash ssh pid nohup

我正在使用nohup在我通过BSUB和ssh获得的机器中提交后台作业。

我的主要计算机位于RHEL,从那里我通过AIX接收其他BSUB计算机(向LSF提交作业)并同时执行SSH登录到另一台服务器。 获得这两台机器后,通过nohup执行脚本(inner.sh)。

我正在执行的脚本中通过echo $$捕获相应的PID(inner.sh)。 在后台提交nohup执行后,我将退出两台机器并重新登陆主RHEL机器。

现在,从这台RHEL机器,我试图通过ps -p PID在先前捕获的两个PID的帮助下获得nohup执行的状态,但没有列出任何进程。< / p>

顶级包装脚本 wrapper.sh

#!/bin/bash

#login to a remote server
ssh -k xyz@abc < env_setup.sh

#picking up a AIX machine form LSF
bsub -q night -Is ksh -i env_setup.sh

ps -p process-<AIX_machine>.pid
#got no output
ps -p process-<server_machine>.pid
#got no output

脚本传递给BSUB / SSH选择的机器执行nohup env_setup.sh

#!/bin/bash
nohup sh /path/to/dir/inner.sh > /path/to/dir/log-<hostname>.out &
exit

我尝试在BSUB / SSH选择的机器中执行的实际脚本 inner.sh

#!/bin/bash
echo $$ > /path/to/dir/process-<hostname>.pid
#hope this would give correct us the PID of the remote machine
#execute some other commands

现在,我正在为两台机器分别更新两个process-<hostname>.pid个文件,每个文件都有两个PID。

但是包装器脚本中的ps -p没有给我们输出。

我从远程计算机上获取进程ID,并在我的本地ps -p计算机上执行RHEL

这是我没有获得这两个进程的状态更新的原因吗?

我可以做其他事情来获取状态吗?

1 个答案:

答案 0 :(得分:0)

ps提供本地进程的状态。 bsub可用于获取每台远程计算机上的进程状态。