我有一项我想开始的服务systemd。当该服务启动时,我希望能够为其分配一个当前工作目录。如果我正在使用init,我知道该怎么做,但是我在使用systemd.
这就是我一直在努力工作的内容。
我创建了一个简单的实用程序(“listdir”),用 Python 编写,并放置在/opt/bin/listdir:
#! /usr/bin/python
import os
print 'Current working directory: %s' % (os.getcwd())
Run Code Online (Sandbox Code Playgroud)
然后我创建了一个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
Run Code Online (Sandbox Code Playgroud)
当我运行systemctl start listdir我的系统日志时,将根目录(“/”)记录为当前工作目录。当然,我期望/usr/local作为当前目录,因为我认为ExecStartPre在开始该过程之前会更改目录。
显然,我想象它systemd会像 shell 脚本一样工作(即使我知道它不是 shell 脚本)。有人可以让我知道我应该做什么吗?甚至可以使用systemd? 谢谢!
编辑:我的系统日志报告错误。(我刚注意到。)
Executable path is not absolute, ignoring: chdir /usr/local
Run Code Online (Sandbox Code Playgroud)
所以,chdir是一个shell命令,而不是一个可执行文件本身。好的。但是我还有什么方法可以使用 更改目录systemd吗?
Eri*_*ouf 309
在 systemd >= 227 上,您应该能够使用:
[Service]
WorkingDirectory=/usr/local
Run Code Online (Sandbox Code Playgroud)
让你的脚本在那里执行。
(文档)
| 归档时间: |
|
| 查看次数: |
110912 次 |
| 最近记录: |