我开始使用 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。
答案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
必要的内容。