如何从 Systemd 服务启动二进制文件

如何从 Systemd 服务启动二进制文件

因此,我有一个 start.sh 文件来启动 imagecache 服务。并且我有一个可执行二进制文件“imgproxy”,我需要启动它并向其传递两个参数,就像文本文件一样。start.sh 文件主体:

export IMGPROXY_LOCAL_FILESYSTEM_ROOT="/home/filestorage/media"
export IMGPROXY_BIND=":9608"
./home/tools/imgproxy/imgproxy -keypath ./home/tools/imgproxy/key.txt -saltpath 
./home/tools/imgproxy/salt.txt

ExecStartPre=nohup /bin/bash /home/tools/imgproxy/start.sh </dev/null >/dev/null 2>&1 &

我使用命令“ExecStartPre”启动它,因为我有主服务和二进制文件及其依赖关系。我必须在启动主服务之前启动这个二进制文件。

因此,当我启动服务时出现以下错误:

systemd[1]: [/etc/systemd/system/imagecache.service:11] Executable path is not absolute, ignoring: nohup bash /home/tools...ull 2>&1 &

有人知道如何修复它吗?

先感谢您。

答案1

绝对路径是从根目录开始的文件的完整路径/。看起来您需要提供nohupCentOS 7 系统上的绝对路径/usr/bin/nohup


我真的不知道你使用的工具,但如果可能的话,我会尝试将ExecPreStart其作为自己的服务的目标,并让主服务依赖于它。systemd.service非常值得一读

相关内容