有一个脚本必须由 systemd 服务的ExecStartPre
.将此脚本放入的正确路径是什么以及如何在单元中指定它?当前使用此类路径失败(由于单元文件错误,服务将无法启动):
- 脚本文件
- ./脚本.sh
- /etc/systemd/system/script.sh
- /usr/local/sbin/script.sh
这是我在状态中收到的错误:
进程:8679 ExecStartPre=/usr/local/sbin/script.sh(代码=已退出,状态=203/EXEC)
这是脚本:
#!/bin/bash
if [ ! -e /var/log/myservice ];
then
echo "myservice's log directory doesn't exist. creating it."
mkdir /var/log/myservice
fi
答案1
由于您不需要更改脚本,因此建议在这个答案中适用:脚本应放入/usr/local/sbin
.它还需要是可执行的。你ExecStartPre
会是
ExecStartPre=/usr/local/sbin/script.sh
但是,您根本不需要脚本来创建目录:
ExecStartPre=mkdir -p /var/log/myservice
更好的是,使用LogsDirectory=
,这将在必要时创建目录,并确保该目录在沙箱内可用(如果服务已沙箱化):
LogsDirectory=myservice