首页 > 解决方案 > 如何让 systemd 在启动时运行 python 脚本

问题描述

我试图让 systemd 在启动时执行 python3 脚本,但它失败说由于权限而没有打开一些日志文件,我找不到任何其他解决方案。如果我手动启动它,该脚本可以正常工作,systemctl start LoginAlert但在启用它以在启动时启动(使用systemctl enable LoginAlert)后,它会给我下面的错误消息。我使用自定义 .service 脚本来执行脚本。

[Unit]
Description=Login alert system.

[Service]
Type=simple
ExecStart=/usr/bin/python3 /usr/bin/LoginAlert.py

[Install]
WantedBy=multi-user.target


● LoginAlert.service - Login alert system.
     Loaded: loaded (/etc/systemd/system/LoginAlert.service; enabled; vendor preset: disabled)
     Active: failed (Result: exit-code) since Sat 2020-06-20 22:25:30 EDT; 2min 57s ago
    Process: 622 ExecStart=/usr/bin/python3 /usr/bin/LoginAlert.py (code=exited, status=1/FAILURE)
   Main PID: 622 (code=exited, status=1/FAILURE)

Warning: some journal files were not opened due to insufficient permissions

标签: linuxsystemdsystemctl

解决方案


我遇到过同样的问题。关键是警告:由于权限不足而未打开某些日志文件并不是真正的问题。这只是说您无法看到该服务的日志。

如果您运行sudo systemctl status your-service.service,该消息将消失,您可以看到该服务的日志。

谈到在启动时运行 python 脚本,我遇到了由于“权限”而没有执行 python 脚本的问题。我也那么认为。

事实上,当脚本以 root 用户运行时(因为它在启动时执行),ROOT 没有我的脚本需要的 python3 库。因此,我不需要使用pip3 install selenium安装它们(例如),我需要运行 * sudo pip3 install selenium* 以便 root 用户拥有这些库。

希望有帮助,问候!


推荐阅读