将 Python 程序设置为 systemd 服务

将 Python 程序设置为 systemd 服务

我编写了一个程序来记录某些系统统计数据,我想将该程序作为 Linux 服务运行,以便我可以轻松管理它(启动、停止等)。我花了几个小时研究和尝试,但似乎无法正确配置我的 systemd 服务文件。

到目前为止,我的服务文件中有这个:(clopper 是我的用户名,resourciter 是我的 python 程序名)

[Unit]
Description=Simplified Resourciter logger service
After=syslog.target

[Service]
Type=simple
User=clopper
Group=clopper
WorkingDirectory=/home/clopper/resourciter/
ExecStart=/usr/bin/python3 /home/clopper/resourciter/runMonitor.py
StandardOutput=syslog
StandardError=syslog

[Install]
WantedBy=multi-user.target

但是当我尝试启动该服务时一直出现此错误:

pam_unix(sudo:auth): auth could not identify password for [clopper]

我似乎找不到关于配置 systemd 服务文件的来龙去脉的权威参考。

有任何想法吗?

答案1

看起来你的 Python 脚本正在尝试sudo以 root 身份执行命令。

当您的脚本作为服务运行时,这实际上无法工作,因为脚本上没有附加终端,因此sudo无法要求输入密码以允许您的脚本以 root 身份运行命令。

有多种方法可以配置 sudo 来运行命令,而无需输入密码,也不需要连接终端...但在我们采用这种方法之前,您是否考虑以 root 身份运行整个脚本,而不是sudo在其中使用?这样可以简化事情...

相关内容