systemd 是否有工作目录说明符

systemd 是否有工作目录说明符

当我在单元文件中指定工作目录时,我想通过说明符从 ExecStart 部分引用它,即

[Unit]
Description=A test daemon that says hello
[Service]
Type=oneshot
WorkingDirectory=/home/foo/scipts
ExecStart="%<<WORKING_DIRECTORY_SPECIFIER>>/echo_hello.sh"
RemainAfterExit=yes

Systemd 可以实现这一点吗?如果不可以,有没有什么解决方法?

答案1

您无需在 中专门指定工作目录ExecStart,因为所有命令都会像您已经指定它一样启动。这就是它的重点。

您不应使用~,因为这将使用服务运行时的 。相反,请使用相对路径$HOME$USER

如果您的WorkingDirectory指向/home/foo/scripts/,那么您只需要使用ExecStart=./somescript.sh 如果您有子目录,它是同样的事情 - ExecStart=subdir1/subdir2/somescript.shWorkingDirectory基本上是cd用于服务的。

答案2

不,您可以使用~或绝对目录路径。但要小心:~很可能指向/root/该单位用户的家。

并且 WorkingDirectory 本身理解说明符但这些都不是特定于用户的,除了

"%g"    User group  
"%G"    User GID    
"%u"    User name   
"%U"    User UID    

但这些往往默认为用户root。

相关内容