0

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

做这个的最好方式是什么?/etc/init.d 是 httpd 的方式(您会看到在其下运行的多个进程),还是有其他方式?

我应该补充一点,如果他们死了,我也希望他们自动启动,和/或在某个时间,所以可能至少 cron 并且也许 monit 必须成为解决方案的一部分?

4

1 回答 1

2

如果您需要将进程与控制终端关联,您可以考虑使用GNU Screentmux。使用 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."
于 2012-06-12T20:17:55.280 回答