我可能会实现一个解决这个问题的一种替代方法如下:
在每个系统上我想控制,我会放置一个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