我可能會實現一個解決這個問題的一種替代方法如下:
在每個系統上我想控制,我會放置一個bash腳本做兩件事情:(1)殺死正在運行的進程, (2)重新啓動它。然後,我可以在我的'主'系統上有第二個bash腳本,它只需通過ssh命令調用此腳本。例如:
腳本1:recycle_process.sh(放置在每個系統上我希望控制)
#!/bin/bash
pid=`pgrep 'my_process_name'`
kill $pid
# Launch 'my_process_name' (as a background process!)
腳本2:do_recycle.sh(放置在主控制器系統)
#!/bin/bash
_host=$1
if(-z $_host) {
echo "Gimme a host name to connect to!";
exit(1);
}
ssh [email protected]$_host screen -dm /path/to/recycle_process.sh
現在,您只需從主系統的命令行運行do_recycle.sh myhostname
,並且(我相信)您的問題將得到解決。在這種情況下,我不認爲你需要保持屏幕會話的活着。這個過程總是在後臺運行。這就是說,我不確定你是如何設置的;您可能必須更改上述腳本2中的屏幕線以使用您的環境。
當然,您必須知道要殺死進程的進程ID。應該很容易與正確的pgrep行... – 2012-01-15 01:36:23
可以@JonahBishop或康拉德請解釋如何獲得PID,所以我可以殺死進程?說開始我的過程,我說'捆綁exec耙start_that_one_process' – BananaNeil 2012-01-15 01:39:23
[Wikipedia文章上的pgrep](http://en.wikipedia.org/wiki/Pgrep)有一些有用的例子。另請參閱[手冊頁](http://linux.die.net/man/1/pgrep)。我忘記了** pkill **,但它也是一個選項(請參閱第二個鏈接瞭解更多)。 – 2012-01-15 01:43:12