在ubuntu中作为服务运行循环python脚本

在ubuntu中作为服务运行循环python脚本,python,linux,service,sleep,Python,Linux,Service,Sleep,简称: 我有一个python脚本,我想作为服务安装它。但是,当作为服务运行时,它会终止,而当作为根用户手动运行时,它不会终止 全部: 我有一个物理HD44780 LCD显示器连接到一个显示各种诊断的服务器。 数据由python脚本收集,该脚本需要使用python2运行并具有root权限。 该脚本本质上是一个收集信息、计算某些值并写入LCD的循环。此后,它会重新进入睡眠状态5秒钟,然后再次进入睡眠状态 我希望将其作为服务运行,并遵循本教程: 我的Python脚本位于/etc/opt/lcdsys

简称: 我有一个python脚本,我想作为服务安装它。但是,当作为服务运行时,它会终止,而当作为根用户手动运行时,它不会终止

全部: 我有一个物理HD44780 LCD显示器连接到一个显示各种诊断的服务器。 数据由python脚本收集,该脚本需要使用python2运行并具有root权限。 该脚本本质上是一个收集信息、计算某些值并写入LCD的循环。此后,它会重新进入睡眠状态5秒钟,然后再次进入睡眠状态

我希望将其作为服务运行,并遵循本教程:

我的Python脚本位于/etc/opt/lcdsysinfo.py中,如下所示:

def runCycle():
   calculate values....
   time.sleep(5) <--line 121
   print on lcd

while True:
  runCycle() <-- line 170
我在/var/log/lcdsysinfo.log上有一个可写的文本文件

做完这件事后,我跑了

sudo systemctl enable lcdsysinfo
sudo systemctl start lcdsysinfo
显示器上什么也没发生如果我看

systemctl status lcdsysinfo
我会得到

lcdsysinfo.service - Service running system info LCD
Loaded: loaded (/etc/systemd/system/lcdsysinfo.service; enabled; vendor preset: enabled)
Active: failed (Result: exit-code) since Sun 2020-01-05 16:04:17 CET; 9min ago
Main PID: 6469 (code=exited, status=2)

Jan 05 16:04:17 bo-stationary systemd[1]: lcdsysinfo.service: Service hold-off time over, 
scheduling restart.
Jan 05 16:04:17 bo-stationary systemd[1]: lcdsysinfo.service: Scheduled restart job, restart 
counter is at 5.
Jan 05 16:04:17 bo-stationary systemd[1]: Stopped Service running system info LCD.
Jan 05 16:04:17 bo-stationary systemd[1]: lcdsysinfo.service: Start request repeated too 
quickly.
Jan 05 16:04:17 bo-stationary systemd[1]: lcdsysinfo.service: Failed with result 'exit- 
code'.
Jan 05 16:04:17 bo-stationary systemd[1]: Failed to start Service running system info LCD.
如果我将日志文件cat到/var/log/lcdsysinfo.log,我会得到

/usr/bin/python2: can't open file '/etc/opt/lcdsysinfo.py': [Errno 13] Permission denied
Traceback (most recent call last):
File "/etc/opt/lcdsysinfo.py", line 170, in <module> runCycle()
File "/etc/opt/lcdsysinfo.py", line 121, in runCycle
time.sleep(sleepIntervalSecs)
KeyboardInterrupt
/usr/bin/python2:无法打开文件'/etc/opt/lcdsysinfo.py':[Errno 13]权限被拒绝
回溯(最近一次呼叫最后一次):
文件“/etc/opt/lcdsysinfo.py”,第170行,在runCycle()中
文件“/etc/opt/lcdsysinfo.py”,第121行,在运行周期中
时间。睡眠(睡眠间隔)
键盘中断
我做错了什么


在我看来,这似乎与使循环休眠有关,但我有一些随着时间的推移而进行的计算,因此我会真正使用python循环并将统计数据保存在内存中,而不是读取并保存到文件以保持状态并以类似cron的方式调用脚本。

日志文件显示
无法打开文件'/etc/opt/lcdsysinfo.py'
,您是否使用
chmod
为该脚本授予了适当的权限?日志文件权限为-rwx-----,已将其更改为-rwxrwx。结果是服务仍然停止并具有相同的状态,但现在日志文件为空。我可以使用sudo/usr/bin/python2/etc/opt/lcdsysinfo.py>/var/log/lcdsysinfo.log 2>&1日志文件显示
无法打开文件'/etc/opt/lcdsysinfo.py'
,您是否使用
chmod
为该脚本授予了正确的权限?日志文件权限为-rwx-----,已将其更改为-rwxrwx。结果是服务仍然停止并具有相同的状态,但现在日志文件为空。我可以使用sudo/usr/bin/python2/etc/opt/lcdsysinfo.py>>/var/log/lcdsysinfo.log 2>&1很好地运行脚本
/usr/bin/python2: can't open file '/etc/opt/lcdsysinfo.py': [Errno 13] Permission denied
Traceback (most recent call last):
File "/etc/opt/lcdsysinfo.py", line 170, in <module> runCycle()
File "/etc/opt/lcdsysinfo.py", line 121, in runCycle
time.sleep(sleepIntervalSecs)
KeyboardInterrupt