【问题标题】:Crontab not starting python programcrontab 没有启动 python 程序
【发布时间】:2021-04-03 07:16:18
【问题描述】:

我创建了一个 Python 程序“test.py”并将其保存在 /home/pi/ 下。当我使用“python3 /home/pi/test.py”在终端中运行它时,它运行正常并说“hello world”。代码如下所示。

import os
import alsaaudio

m = alsaaudio.Mixer()
current_volume = m.getvolume()
m.setvolume(35)

os.system("espeak 'Hello World!'")

我希望这个程序在我的树莓派启动时启动。我试图在 crontab 中添加这一行,但我的树莓派没有执行该命令。有谁知道为什么我的程序不会执行?

@reboot python3 /home/pi/test.py

这是系统日志的图像

【问题讨论】:

  • 能否请您提供日志文件的输出/var/log/syslog... 并提供您的 crontab 的内容以及它是针对哪个用户的。谢谢。哦,还有相关文件的权限。
  • 我添加了日志的图像。我以 root 用户 sudo crontab -e 运行 crontab 我设置的唯一 crontab 是我上面显示的那个。谢谢。我已经尝试在 crontab 中使用 sudo 运行脚本,但仍然无法正常工作。
  • 试着把它放在pi的crontab下。
  • 这对你有用吗?
  • 不,即使将它放在 pi 的 crontab 下,它也不起作用。我检查了服务的状态,发现了问题。事实证明,我的一些导入在 python 中不起作用。当我的系统尝试启动脚本时,程序中有错误,所以它会简单地退出。所以看起来这不是crontab的问题。将库加载到我的程序中只是一个问题

标签: python cron raspberry-pi


【解决方案1】:

你可以尝试添加python3的完整路径吗:

@reboot /usr/bin/python3 /home/pi/test.py


此外,关于想要在设备启动时运行代码 - 您可以将代码作为服务运行。
为此,在/etc/systemd/system 下创建一个.service 文件(例如my-code.service

在文件中输入以下内容

[Unit]
Description=My python service
After=network.target

[Service]
ExecStart=/usr/bin/python3 -u test.py
WorkingDirectory=/home/pi

[Install]
WantedBy=multi-user.target

最后启用服务(以便它在启动时运行)

sudo systemctl enable my-code

如果你想独立运行也可以运行

sudo systemctl start my-code

【讨论】:

  • 我尝试了您的两个建议,但都没有奏效。我检查了服务的状态,发现了问题。事实证明,我的一些导入在 python 中不起作用。当我的系统尝试启动脚本时,程序中有错误,所以它会简单地退出。所以看起来这不是crontab的问题。这只是将库加载到我的程序中的问题。
猜你喜欢
  • 2020-04-22
  • 1970-01-01
  • 1970-01-01
  • 2015-03-03
  • 1970-01-01
  • 1970-01-01
  • 2018-08-27
  • 2014-03-25
  • 1970-01-01
相关资源
最近更新 更多