Linux 获取在其他计算机上运行的最后一个命令的PID

Linux 获取在其他计算机上运行的最后一个命令的PID,linux,bash,pid,rsh,Linux,Bash,Pid,Rsh,我正在使用以下代码在另一台计算机上启动命令: #!/bin/bash /usr/bin/rsh -n $Host_Name "cat asdf.txt &" 我正试图通过以下方式获得cat命令的PID: /usr/bin/rsh -n $Host_Name pid="$!" 但当我回显$pid时,它只是空白的。我做错了什么?是否有更简单的方法获取在不同机器上执行的最后一个命令的PID 谢谢您只能拿到美元!启动命令的shell中的background命令的。如果您的命令没有向stder

我正在使用以下代码在另一台计算机上启动命令:

#!/bin/bash
/usr/bin/rsh -n $Host_Name "cat asdf.txt &"
我正试图通过以下方式获得cat命令的PID:

/usr/bin/rsh -n $Host_Name pid="$!"
但当我回显$pid时,它只是空白的。我做错了什么?是否有更简单的方法获取在不同机器上执行的最后一个命令的PID


谢谢

您只能拿到美元!启动命令的shell中的background命令的。如果您的命令没有向stderr输出任何内容,则可以执行以下操作:

/usr/bin/rsh -n $Host_Name "cat asdf.txt & echo $! >&2" 2> pidfile
然后,启动命令的pid将本地存储在“pidfile”中


只是一个旁注:我永远不会使用rsh。它本质上是不安全的。我会改用ssh;)

我认为有一些问题(但我可能错了)。首先,rsh的每次调用可能都会远程生成一个新的shell,这意味着$!变量将不会在新的shell中设置,并且前一个shell的变量将丢失。其次,根据您使用的语法,IIRC告诉您的本地shell将pid设置为本地$!在执行rsh命令之前。您可能应该执行类似于
pid=$(/usr/bin/rsh-n$Host_Name'echo$!)
,但请记住,如果生成新的远程shell实例,这也将返回空白。