我编写了一个程序来记录某些系统统计数据,我想将该程序作为 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
在其中使用?这样可以简化事情...