Назад | Перейти на главную страницу

Как включить systemd в Amazon Linux AMI

Я начал использовать AMI Amazon Linux. Кажется, / и т.д. / systemd / system / папка, но я не могу использовать systemctl чтобы начать остановку службы, которую я добавил в / и т.д. / systemd / system / папка.

$ systemctl
bash: systemctl: command not found

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`

к сожалению, только amazon linux v2 поддерживает systemd. Amazon linux v1.0 не поддерживает https://aws.amazon.com/amazon-linux-2/

Amazon Linux в конечном итоге основан на старой версии CentOS / RHEL и не поддерживает systemd.

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

Если вам нужен ужасный хак, чтобы заполнить пробел в ваших скриптах, простая функция может работать на вас. Он охватывает только самое необходимое и очень легко сломается.

С этим вы можете выполнить стоп, Начало, начать сначала, положение дел и активен запросы, такие как 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 если необходимо.

Если вы хотите использовать, sudo systemctl enable httpd просто используйте sudo chkconfig httpd on

Вот ссылка, AWSEC2

Изучив, я обнаружил, что Amazon Linux AMI release 2018.03 версии Amazon Linux не поддерживают systemctl. Но это не значит, что init.d службы не могут быть настроены на автоматический запуск при загрузке.

chkconfig можно использовать для реализации варианта использования.

Чтобы настроить мой init.d служба, имя которой было ingester :

sudo chkconfig ingester on

Чтобы перечислить все услуги:

sudo chkconfig --list

Вот это страница руководства из chkconfig :