我需要在Linux下启动几个(每台机器二十几个,至少有八台服务器)几乎是不同的进程,每个进程都有自己的命令行参数,每个都在自己的目录中。我不想手工做这件事。
最好的方法是什么?用/etc/init.d是httpd做的方式(你看到几个进程在那下运行),还是有其他方式?
我应该补充一点,我也希望他们能够自动启动,如果他们死了,和/或在某个时间,那么至少cron和monit可能必须成为解决方案的一部分?
答案 0 :(得分:2)
如果您需要将流程与控制终端相关联,则可以考虑使用GNU Screen或tmux。使用Screen,您可以创建一个配置文件,如:
startup_message off
screen -t foo 1 /path/to/someprogram
screen -t bar 2 /path/to/another
如果你只是背景他们,那么......只是背景他们。
#!/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."