我需要在 Linux 下启动几个(比如每台机器两打,至少有八台服务器)几乎相同的进程,每个进程都有自己的命令行参数,每个进程都在自己的目录中。我不想手动做这件事。
做这个的最好方式是什么?/etc/init.d 是 httpd 的方式(您会看到在其下运行的多个进程),还是有其他方式?
我应该补充一点,如果他们死了,我也希望他们自动启动,和/或在某个时间,所以可能至少 cron 并且也许 monit 必须成为解决方案的一部分?
如果您需要将进程与控制终端关联,您可以考虑使用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."