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

Systemd says my service is active and started, but I receive no output

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

脚本位于 /home/user/projects/ytbot1/bot/main.py 和 运行 通过 python3 main.py 手动执行时完全没问题。

脚本和 .service 文件都被赋予了 root 和用户的 u+x 权限,只有当用户登录时服务才设置为 运行 (我认为,...我所做的只是在 ytbot1.service)

中设置 User=myusername
[Unit]
Description=reiss YT Bot

[Service]
User=reiss
Group=reiss
Type=exec
ExecStart=/usr/bin/python3 "/home/reiss/projects/ytbot1/bot/main.py"
Restart=always
RestartSec=5
PrivateTmp=true
TimeoutSec=900


[Install]
WantedBy=multi-user.target

这是 sudo systemctl status ytbot1

的输出
● ytbot1.service - reiss YT Bot
     Loaded: loaded (/etc/systemd/system/ytbot1.service; enabled; vendor preset: enabled)
     Active: active (running) since Mon 2022-05-16 10:34:04 CEST; 9s ago
   Main PID: 7684 (python3)
      Tasks: 1 (limit: 19141)
     Memory: 98.4M
     CGroup: /system.slice/ytbot1.service
             └─7684 /usr/bin/python3 /home/reiss/projects/ytbot1/bot/main.py

sudo journalctl -fu ytbot1.service

root@vm1234567:~# journalctl -fu ytbot1.service
-- Logs begin at Mon 2022-05-16 07:41:00 CEST. --
May 16 10:07:18 vm1234567.contaboserver.net systemd[1]: Starting reiss YT Bot...
May 16 10:07:18 vm1234567.contaboserver.net systemd[1]: Started reiss YT Bot.

到此为止。日志不更新或添加新信息。

期望的输出:

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

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

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

默认情况下,Python uses line buffering if the output is a console, otherwise full buffering。行缓冲意味着输出被保存直到有一个完整的行,然后被刷新。完全缓冲可以一次缓冲多行。并且 systemd 日志可能未被检测为控制台。