问题:我可以使用 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
?