我正在使用nohup在我通过BSUB和ssh获得的机器中提交后台作业。
我的主要机器是在RHEL
,从那里我正在接受AIX
的其他BSUB
机器(向LSF提交工作)并且还在另一台服务器上进行SSH登录。获得这两台机器后,通过nohup执行脚本(inner.sh
)。
我正在执行的脚本中通过echo $$
捕获相应的PID(inner.sh
)。在后台提交nohup执行后,我退出两台机器并重新登陆主RHEL机器。
现在,从这台RHEL
机器,我试图通过ps -p PID
在先前捕获的两个PID的帮助下获得nohup执行的状态,但没有列出任何进程。
顶级包装器脚本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
。
这是我没有获得这两个进程的状态更新的原因吗?
我可以做任何其他事情来获得状态吗?
ps
给出了本地流程的状态。 bsub
可用于获取每台远程计算机上的进程状态。