【问题标题】:Get PID of the jobs submitted by nohup in Linux获取Linux中nohup提交的作业的PID
【发布时间】: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-&lt;hostname&gt;.pid 文件,分别更新了两台机器的两个 PID。

但是ps -p at wrapper script 没有给我们任何输出。

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

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

我可以做任何其他事情来获得状态吗?

【问题讨论】:

  • ps 正在您的本地计算机上运行,​​因此您只是在查看它的进程。你必须sshbsub 进入远程机器,然后ps 在那里。
  • 您是否希望ssh -k xyz@abc &lt; env_setup.sh 之后的命令在abc 上运行?他们不是。 stackoverflow.com/questions/37586811/…

标签: linux bash ssh pid nohup


【解决方案1】:

ps 给出本地进程的状态。 bsub 可用于获取每台远程机器上的进程状态。

【讨论】:

  • 是否可以通过 bsub 从我的本地机器上获取远程机器的状态?
  • bsub + ps:如果内部脚本回显hostname + pid,则bsub或ssh machine + ps -p pid,注意pid可以重复使用,可能有误解但问题没有' t 给出上下文
猜你喜欢
  • 1970-01-01
  • 2023-03-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-07-11
  • 2012-09-20
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多