假设我有两台服务器,server1 和 server2
在服务器1中,我做ssh root@server2 "some_command"
some_command
如何从 server1找到它的 pid ?
答案1
ssh user@server2 'echo "$$" | tee some_command.pid && exec some_command'
将输出解释该代码的 shell 进程的 PID,将副本保存在 some_command.pid
主目录中的文件中,user
然后保存在同一进程(不是子进程)中,因此使用相同的 PID 将执行some_command
.
稍后,您可以ssh user@server2 'cat some_command.pid'
检索该 PID(是否仍有进程在运行该进程some_command
,以及这些进程之一是否具有相同的 PID,以及运行该 shell 的进程是否some_command
仍在运行some_command
) )。
答案2
您可以使用以下命令从 server1 找到命令的 pid:
ssh root@server2 "some_command && ps -ef|grep some_command"
答案3
另一种选择是:
ssh user@server2 'pidof some_command'
由于您没有提及您所在的 *nix,我不知道您是否有权访问该命令。我知道它在 Debian 及其衍生品以及 RedHat 及其衍生品上是最不可用的......
答案4
你还可以这样做:
ssh user@server2 'some_command & echo "$!" '
根据 Stéphane Chazelas 编辑,事实上,当我检查时,我没有意识到两个单独的命令不会回显 PID。它在这个化身中起作用。谢谢。