如何将我的 Amazon Linux 服务配置为在失败时自动重新启动?

如何将我的 Amazon Linux 服务配置为在失败时自动重新启动?

我正在使用亚马逊Linux。我有一个用 bash 编写的启动和停止服务的脚本,位于

/etc/init.d/wildfly

例如,在各种运行级别,我有符号链接来确保脚本启动和停止

/etc/rc.d/rc3.d/S80wildfly
/etc/rc.d/rc2.d/S80wildfly

但我的问题是,我需要做什么才能确保服务出现故障时能够自动重新启动?我在 CentOS 上读到,您可以使用指令创建一个文件(例如“wildfly.service”)

Restart=always
RestartSec=3

Amazon Linux 上的等效指令位于何处?

答案1

亚马逊Linux 2

如果您的 Amazon Linux 版本 >=2.0,则默认具有 systemd。在这种情况下,您应该能够使用在 CentOS 上使用的相同单元文件以及重新启动指令。

亚马逊 Linux AMI

如果您正在运行 Amazon Linux AMI,则需要使用单独的管理程序来监控您的进程(如 poige 提到的),或使用 /etc/inittab。

例如,为了让 sysvinit 自动重新启动进程,请将以下内容添加到 /etc/inittab 中:

# Start and respawn process
mydaemon:2345:respawn:/path/to/executable argument1 argument2

这告诉 sysvinit 在运行级别 2、3、4 和 5 上启动进程,并在终止时重新启动它。

此外,如果您希望在启动时运行的可执行文件周围添加一些命令,则可执行文件路径可以引用在前台运行程序的脚本。

答案2

我正在使用亚马逊Linux。

好的,输入man init

如果它有任何新鲜感,你就会发现它systemd确实如此。所以你的 qn 就变成了已经回答了一些问题

如果您认为systemd过度设计(事实上我们很多人都这样做),您可以尝试使用古老的守护进程工具或类似工具(runit、supervisord)。但请做好准备,它可能不在 Amazon Linux 附带的标准存储库中。

相关内容