sli*_*pha 1 debian systemd services
我刚刚得到了一个 debian 8 VPS,我正在尝试将 python 脚本作为服务运行,我写了这个(一切都是通过以 root 身份登录的 ssh 完成的):
[Unit]
Description=My Script Service
After=multi-user.target
[Service]
Type=idle
ExecStart=/usr/bin/python /web/cmcreader/test.py > /web/cmcreader/test.log 2>&1
[Install]
WantedBy=multi-user.target
Run Code Online (Sandbox Code Playgroud)
我已经把它放在/lib/systemd/system
我然后chmoded它:
chmod 644 /lib/systemd/system/cmcreader.service
然后我尝试使用以下方法激活它:
systemctl daemon-reload
systemctl enable cmcreader.service
Run Code Online (Sandbox Code Playgroud)
但是最后一个命令返回 ( enable) :
Failed to execute operation: Invalid argument
我做错了什么?谢谢。
从man systemd.directives你可以找到任何 systemd 指令的文档。在这里您可以找到ExecStart=记录在man systemd.service.
那里的文档说:
不支持使用“<”、“<<”、“>”和“>>”的重定向,不支持使用“|”的管道,使用“&”在后台运行程序以及其他 shell 语法元素。
通常也不需要它们。systemd默认情况下已经在后台运行应用程序,因此您不需要&. 它还会自动将输出捕获到 STDOUT 和 STDERR 并为您记录下来,因此您也不需要将输出重定向到日志文件。
仅用于journalctl -u cmcreader查看您的服务的日志,或journalctl查看所有日志。
如果您不确定 systemd 文件的语法,您可以使用:
systemd-analyze verify ./path/to/your.service
Run Code Online (Sandbox Code Playgroud)
此外,您创建的服务文件会进入/etc/systemd/system. 该/lib目录用于由包安装的服务文件,而不是人类。
最后,enable不启动服务,它只是运行该[Install]部分,将您的应用程序设置为在启动时启动。
要启动服务使用systemctl start your.service.
| 归档时间: |
|
| 查看次数: |
3840 次 |
| 最近记录: |