【发布时间】:2017-12-20 13:58:31
【问题描述】:
我正在使用 nohup 在通过 BSUB 和 ssh 获得的机器中在后台提交作业。
我的主要机器在RHEL,从那里我通过BSUB(向LSF 提交工作)拿起其他AIX 机器,并通过SSH 登录到另一台服务器。
得到这两台机器后,通过 nohup 在那里执行一个脚本(inner.sh)。
我正在通过我正在执行的脚本中的echo $$ (inner.sh) 捕获相应的 PID。
在后台提交 nohup 执行后,我将退出两台机器并返回到主 RHEL 机器。
现在,在这台RHEL 机器上,我正试图借助先前捕获的两个 PID,通过ps -p 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 at wrapper script 没有给我们任何输出。
我正在从远程机器上获取进程 ID,并在我的本地 RHEL 机器上执行 ps -p。
这是我没有得到这两个进程的任何状态更新的原因吗?
我可以做任何其他事情来获得状态吗?
【问题讨论】:
-
ps正在您的本地计算机上运行,因此您只是在查看它的进程。你必须ssh或bsub进入远程机器,然后ps在那里。 -
您是否希望
ssh -k xyz@abc < env_setup.sh之后的命令在abc上运行?他们不是。 stackoverflow.com/questions/37586811/…