我正在尝试制作一个用户运行 python 脚本的 systemd 服务 - 但是,当我尝试使用 启动服务systemctl --user start shadesmath
,然后执行 时systemctl status shadesmath
,我得到:
● shadesmath.service
Loaded: not-found (Reason: No such file or directory)
Active: inactive (dead)
以下是我的文件的内容shadesmath.service
,该文件已具有~/.config/systemd/user/shadesmath.service
权限744
:
[Unit]
Description=ShadesMath
AssertPathExists=/home/mikel/bots/mathbot/mathbot
[Service]
WorkingDirectory=/home/mikel/bots/mathbot/mathbot
ExecStart=/home/mikel/anaconda3/bin/python bot.py parameters.json
Restart=always
[Install]
WantedBy=default.target
我尝试运行systemctl --user enable shadesmath
,它会在中创建指向该服务的符号链接~/.config/user/systemd/default.target.wants
,但是当我尝试启动该服务时,这似乎并没有改变任何东西。
这是我第一次尝试使用 systemd,所以很有可能我做了一些愚蠢的事情,但我搞不清楚问题出在哪里。任何关于如何设置的指示都将不胜感激。我的目标是拥有一个运行此 python 脚本的服务,并在启动时/脚本完成或崩溃时重新运行它 - 理想情况下,我希望这是一个用户服务,因为我不希望它以 root 身份运行。
答案1
创建或更改单元文件后,您需要告诉 systemd 重新加载它:
systemctl --user daemon-reload
这解释了为什么重启可以为@noraj 修复该问题。
答案2
我也遇到了同样的问题;注销并重新登录不起作用,但答案很简单:只需重新启动。