Systemd 说我的服务已激活并已启动,但我没有收到任何输出

kah*_*kah 2 python linux bots vps systemd

我正在尝试在 VPS 上运行一个机器人,并且我能够创建一个 systemd 服务,以便在服务器因任何原因重新启动时能够自动运行我的 python 代码。该服务已启用,当我检查其状态时,状态显示为活动,journalctl 显示 .py 文件已启动,但这就是我的进度结束的地方。在服务启动的通知后,我没有收到其他输出。当我检查我的 VPS 控制台时,CPU 使用率为 0,这意味着该脚本实际上没有运行。

\n

该脚本位于/home/user/projects/ytbot1/bot/main.py并通过手动执行时运行得非常好python3 main.py

\n

脚本和 .service 文件都被授予 root 和用户的 u+x 权限,并且该服务设置为仅在用户登录时运行(我认为,...我所做的就是设置 User=myusername ytbot1.service)

\n
[Unit]\nDescription=reiss YT Bot\n\n[Service]\nUser=reiss\nGroup=reiss\nType=exec\nExecStart=/usr/bin/python3 "/home/reiss/projects/ytbot1/bot/main.py"\nRestart=always\nRestartSec=5\nPrivateTmp=true\nTimeoutSec=900\n\n\n[Install]\nWantedBy=multi-user.target\n
Run Code Online (Sandbox Code Playgroud)\n

这是输出sudo systemctl status ytbot1

\n
\xe2\x97\x8f ytbot1.service - reiss YT Bot\n     Loaded: loaded (/etc/systemd/system/ytbot1.service; enabled; vendor preset: enabled)\n     Active: active (running) since Mon 2022-05-16 10:34:04 CEST; 9s ago\n   Main PID: 7684 (python3)\n      Tasks: 1 (limit: 19141)\n     Memory: 98.4M\n     CGroup: /system.slice/ytbot1.service\n             \xe2\x94\x94\xe2\x94\x807684 /usr/bin/python3 /home/reiss/projects/ytbot1/bot/main.py\n
Run Code Online (Sandbox Code Playgroud)\n

sudo journalctl -fu ytbot1.service

\n
root@vm1234567:~# journalctl -fu ytbot1.service\n-- Logs begin at Mon 2022-05-16 07:41:00 CEST. --\nMay 16 10:07:18 vm1234567.contaboserver.net systemd[1]: Starting reiss YT Bot...\nMay 16 10:07:18 vm1234567.contaboserver.net systemd[1]: Started reiss YT Bot.\n
Run Code Online (Sandbox Code Playgroud)\n

一切就到此为止了。日志不会更新或添加新信息。

\n

期望的输出:

\n
-- Logs begin at Mon 2022-05-16 07:41:00 CEST. --\n    May 16 10:07:18 vm1234567.contaboserver.net systemd[1]: Starting reiss YT Bot...\n    May 16 10:07:18 vm1234567.contaboserver.net systemd[1]: Started reiss YT Bot.\nHandling GoogleAPI\n2022 5 15 14 38 2\n./APR_2022_V20 MAY_2022_V15.mp4\n            DOWNLOADING VIDEOS...\n[...] *Script runs, you get the picture*\n
Run Code Online (Sandbox Code Playgroud)\n

有什么帮助吗?是否我的 .py 文件位于错误的位置,或者 .service 文件/工作目录有问题?也许我应该使用不同版本的Python?我尝试运行的脚本非常复杂,所以分叉可能是一个问题(代码调用了几个google api,但设置 Type=forking 只是强制服务启动无限加载,然后由于某种原因超时)?我不知道可能...我很感激反馈。谢谢!

\n

use*_*751 5

尝试使用/usr/bin/python3 -u然后使用文件路径。

-u选项告诉 Python 不要完全缓冲输出。

默认情况下,如果输出是控制台,Python 使用行缓冲,否则使用全缓冲。行缓冲意味着输出被保存直到有完整的行,然后刷新。完全缓冲可以一次缓冲多行。并且 systemd 日志可能不会被检测为控制台。