【问题标题】:How to Automatically Restart Linux Services on Amazon Linux 2 using Systemctl?如何使用 Systemctl 在 Amazon Linux 2 上自动重启 Linux 服务?
【发布时间】: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


    【解决方案1】:

    Systemd 尝试启动服务几次,如果服务到达StartLimitBurst,则停止尝试。您的服务中可能存在未配置的配置。

    【讨论】:

    • 谢谢哈维尔。我刚刚添加了一个开箱即用的配置文件。我之前添加的唯一一行是 Restart=always,它破坏了一些东西。这里是否缺少一些应该与 Restart=always 行一起出现的东西?
    • 您将类型定义为通知。对于 apache,您应该将其更改为 forking
    猜你喜欢
    • 1970-01-01
    • 2022-08-10
    • 1970-01-01
    • 2021-09-08
    • 2022-07-03
    • 1970-01-01
    • 1970-01-01
    • 2019-08-23
    • 2023-04-05
    相关资源
    最近更新 更多