我创建了一个名为 red-cartridgemom.service 的 systemd 服务:
[Unit]
Description=Red-DiscordBot-CK
After=multi-user.target
[Service]
WorkingDirectory=/home/twop0intfive/server1504/discord_stuff/Red-DiscordBot-CK/Red-DiscordBot/
User=twop0intfive
Group=twop0intfive
ExecStart=/usr/bin/python3.5 /home/twop0intfive/server1504/discord_stuff/Red-DiscordBot-CK/Red-DiscordBot/red.py
Type=idle
Restart=always
RestartSec=15
[Install]
WantedBy=multi-user.target
但是,当我启动服务并使用 journalctl 监控时:
Aug 25 18:04:31 server1504 systemd[1]: red-cartridgemom.service holdoff time over, scheduling restart.
Aug 25 18:04:31 server1504 systemd[1]: Started Red-DiscordBot-CK.
Aug 25 18:04:31 server1504 systemd[1]: Starting Red-DiscordBot-CK...
Aug 25 18:04:31 server1504 systemd[3018]: Failed at step CHDIR spawning /usr/bin/python3.5: No such file or directory
Aug 25 18:04:31 server1504 systemd[1]: red-cartridgemom.service: main process exited, code=exited, status=200/CHDIR
Aug 25 18:04:31 server1504 systemd[1]: Unit red-cartridgemom.service entered failed state.
Aug 25 18:04:31 server1504 systemd[1]: red-cartridgemom.service failed.
...该服务从未正确启动。
该路径下的文件确实存在。我对此进行了一段时间的思考,直到我意识到也许 systemctl 正在看到
/usr/bin/python3.5
作为类型为 '.5' 的文件 'python3' - 这可能吗?如果可以,有什么方法可以解决这个问题并让 systemd 正确“看到” /usr/bin/python3.5?
答案1
所以!
#support 频道中有人建议运行 do-release-upgrade(上次我运行它时,我的机器人停止工作,这也是我到目前为止运行 Ubuntu 15.04 的原因),现在,在 Ubuntu 15.10 上,我不再遇到上述问题。建议这样做的人在 Ubuntu 16.04.1 中运行了一个与我上面粘贴的脚本几乎相同的脚本,并且没有遇到我遇到的问题。
看来‘python3.5’中的‘.’确实是罪魁祸首,但看起来 systemd 中的这个问题在 Ubuntu 版本之间已经得到修复。
总结:这个问题似乎不存在于 Ubuntu 15.10 及更高版本中。对我来说,解决方法是升级到 15.10。
感谢您的时间!