2012-06-12 41 views
0

我需要在Linux下启动几个(每台机器至少有8台服务器)几乎相同的进程,每个进程都有自己的命令行参数,每个进程都在自己的目录中。我不想亲手做这件事。Linux中的多个进程

这样做的最好方法是什么?它是以/etc/init.d这种方式与httpd这样做的(你会看到几个进程正在运行),还是有其他方式?

我应该补充说,如果他们死亡,或者在某个特定时间,我也希望他们自动启动,因此可能至少cron和monit必须成为解决方案的一部分?

+0

我要补充一点,我还希望他们能够自动,如果他们死开始,和/或在一定的时间,所以可能至少cron和可能的monit必须是一部分的解决方案? – Ivan

+3

如果您要添加到您的问题中,请单击您的问题下的[编辑](http://stackoverflow.com/posts/11004050/edit)链接并编辑该问题。评论不应包含重要信息,否则您的问题将无法得到解答。 – ghoti

+0

这些流程是否需要与控制终端相关联,还是可以在后台运行? – ghoti

回答

2

如果您需要将流程与控制终端关联,您可以考虑使用GNU Screentmux。随着屏幕上,您可以创建类似的配置文件:

startup_message off 
screen -t foo 1 /path/to/someprogram 
screen -t bar 2 /path/to/another 

如果你还好只是backgrounding他们,然后...只是背景他们。

#!/bin/bash 

/usr/bin/nohup /path/to/someprogram & 
/usr/bin/nohup /path/to/another & 

echo "All done!" 

如果您需要它们在死亡时重新启动,那么可以考虑将它们包裹在一个再发射器中。例如,请参阅daemontools。或者像一个简单的shell脚本:

while ! /path/to/flakeybinary; do 
    echo "Darn, died again." >&2 
done 
echo "Exited normally, yay." 
+0

谢谢。所以对于参数,我可以说/ usr/bin/nohup/path/to/someprogram param1 param2& – Ivan

+1

我认为这对你来说是一个有价值的实验。 – ghoti