【发布时间】:2021-08-07 03:06:48
【问题描述】:
似乎大多数在线指南都与使用 init.d 的 Amazon Linux 有关,而 init.d 不在 Amazon Linux 2 上。Systemctl 在 Amazon Linux 2 上,它似乎没有能力(从我迄今为止发现的情况来看) ) 如果服务失败,则自动重新启动服务,即 httpd。我一直在看Monit。
...刚刚在写这个的时候发现了一点额外的信息,看来systemctl可以通过添加该行来自动重启服务;
Restart=always
我试过了,systemctl 检测到其中一项服务发生了文件更改。于是我按照提示运行了下面的命令,还是不行;
systemctl daemon-reload
在删除我所做的更改后,我最终不得不重新启动机器,以获取我更改文件以备份和运行的服务。
似乎 systemctl 能够自动重启。我现在有点迷茫,因为当您达到这种配置级别时,文档与往常一样糟糕,将其与 AWS AMI 的行为方式与您期望的不同。
一个特定的服务间歇性地失败(这并不奇怪,因为它是在您可以想象的最小的 EC2 实例上,但它在 99% 的时间里都能正常工作)。因此,如果我能够将 systemctl 或 Monit 配置为暂时自动重启服务,然后必须将 EC2 实例扩展到更大的盒子,我会更喜欢它。
更新 要添加示例服务 httpd,这是开箱即用的配置;
[Unit]
Description=The Apache HTTP Server
Wants=httpd-init.service
After=network.target remote-fs.target nss-lookup.target httpd-init.service
Documentation=man:httpd.service(8)
[Service]
Type=notify
Environment=LANG=C
ExecStart=/usr/sbin/httpd $OPTIONS -DFOREGROUND
ExecReload=/usr/sbin/httpd $OPTIONS -k graceful
# Send SIGWINCH for graceful stop
KillSignal=SIGWINCH
KillMode=mixed
PrivateTmp=true
[Install]
WantedBy=multi-user.target
【问题讨论】:
标签: linux amazon-web-services systemctl amazon-linux-2