如何在 Amazon Linux AMI 上启用 systemd

如何在 Amazon Linux AMI 上启用 systemd

我开始使用 Amazon Linux AMI。它似乎有/etc/systemd/系统/文件夹,但我无法使用系统控制启动停止我添加到的服务/etc/systemd/系统/文件夹。

$ systemctl
bash: systemctl: command not found

答案1

Amazon Linux v 2.0 确实支持 systemd 并且默认安装:

cat /etc/os-release
NAME="Amazon Linux"
VERSION="2.0 (2017.12)"
ID="amzn"
ID_LIKE="centos rhel fedora"
VERSION_ID="2.0"
PRETTY_NAME="Amazon Linux 2.0 (2017.12) LTS Release Candidate"
ANSI_COLOR="0;33"
CPE_NAME="cpe:2.3:o:amazon:amazon_linux:2.0"
HOME_URL="https://amazonlinux.com/"

rpm -qa | grep -i systemd
systemd-libs-219-42.amzn2.4.x86_64
systemd-219-42.amzn2.4.x86_64
systemd-sysv-219-42.amzn2.4.x86_64`

答案2

遗憾的是,只有 amazon linux v2 支持 systemd。Amazon linux v1.0 不支持 https://aws.amazon.com/amazon-linux-2/

答案3

Amazon Linux 最终基于旧版本的 CentOS/RHEL,并且不支持 systemd。

https://forums.aws.amazon.com/message.jspa?messageID=731256

答案4

如果你需要一个可怕的黑客来填补脚本中的空白,一个简单的函数可能适合您。它仅涵盖基本功能,并且很容易损坏。

通过此您可以执行停止开始重新开始地位活跃请求,例如systemctl start docker。显然输出不会匹配systemctl,尽管is-active在我的系统上提供了相同的文本输出。

  #!/bin/bash

  function systemctl() {
    if [ "$1" == 'is-active' ]; then
      if [ -z "$(service $2 status | grep "is stopped")" ]; then
        echo "$2 is active"
      else
        echo "$2 is inactive"
      fi
    else
      service $2 $1
    fi
  }

您可以通过将整个函数定义放入 if 块中来扩展它,以测试操作系统类型或是否存在systemctl必要的内容。

相关内容