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

Dav*_*ave 2 amazon-ec2 services autostart amazon-linux

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

/etc/init.d/wildfly
Run Code Online (Sandbox Code Playgroud)

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

/etc/rc.d/rc3.d/S80wildfly
/etc/rc.d/rc2.d/S80wildfly
Run Code Online (Sandbox Code Playgroud)

但是我的问题是,我需要怎么做才能保证服务失败了,可以自动重启?我在 CentOS 上阅读,您可以使用指令创建一个文件(例如“wildfly.service”)

Restart=always
RestartSec=3
Run Code Online (Sandbox Code Playgroud)

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

nov*_*ice 5

亚马逊 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
Run Code Online (Sandbox Code Playgroud)

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

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