问题:我可以使用systemd启动一个进程并为该进程分配我选择的工作目录吗?
我要开始提供一项服务systemd
。启动该服务时,我希望能够为其分配一个当前的工作目录。如果我使用的话我知道怎么做init
,但是我遇到了麻烦systemd
。
这就是我一直在努力的工作。
我的服务
我创建了一个简单的实用程序(“ listdir”),用Python编写,并放置在/opt/bin/listdir
:
#! /usr/bin/python
import os
print 'Current working directory: %s' % (os.getcwd())
我的配置文件
然后,我为创建了一个listdir.service
文件systemd
并将其放在这里/lib/systemd/system/listdir.service
:
[Unit]
Description=Test of listing CWD.
[Service]
ExecStartPre=chdir /usr/local
ExecStart=/opt/bin/listdir
StandardOutput=syslog
StandardError=syslog
[Install]
WantedBy=multi-user.target
问题
运行systemctl start listdir
系统日志时,将根目录(“ /”)记录为当前工作目录。当然,我希望将其/usr/local
作为当前目录,因为我认为ExecStartPre
在启动该过程之前会更改目录。
显然,我在systemd
想这会像Shell脚本一样工作(即使我知道它不是Shell脚本)。有人可以告诉我应该怎么做吗?甚至可以使用设置工作目录systemd
吗?谢谢!
编辑:我的系统日志报告错误。(我刚刚注意到。)
Executable path is not absolute, ignoring: chdir /usr/local
因此,它chdir
是一个shell命令,而不是可执行文件本身。好的。但是我还有什么方法可以使用更改目录systemd
吗?