2012-09-28 69 views
0

獲得最後一個命令運行的PID我使用下面的代碼到另一臺機器上啓動一個命令:上的其他機器

#!/bin/bash 
/usr/bin/rsh -n $Host_Name "cat asdf.txt &" 

,我試圖通過以下獲得cat命令的PID:

/usr/bin/rsh -n $Host_Name pid="$!" 

但是當我回顯$ pid時,它只是空白。我做錯了什麼?有沒有一種更簡單的方法來獲取在不同機器上執行的最後一個命令的PID?

感謝

+0

我覺得有一些問題(但我可能是錯的)。首先,每次調用rsh都應該遠程產生一個新的shell,這意味着$!變量將不會在新shell中設置,並且前一個shell的變量將會丟失。其次,通過你使用的語法,IIRC你告訴你的本地shell將pid設置爲本地$!在執行rsh命令之前。你應該做'pid = $(/ usr/bin/rsh -n $ Host_Name'echo $!')'',但是記住如果它產生一個新的遠程shell實例,它也會返回空白。 –

回答

2

您只能得到$!在你啓動命令的shell中的後臺命令。如果您的命令無法正常輸出到標準錯誤,這可能是工作:

/usr/bin/rsh -n $Host_Name "cat asdf.txt & echo $! >&2" 2> pidfile 

的啓動命令的PID隨後將在「pidfile進程文件,」本地存儲。

只是一個側面說明:我永遠不會使用rsh。它本質上是不安全的。我會用ssh代替;)

相關問題