【问题标题】:Raspberry pi 3 crontab doens't work without logRaspberry pi 3 crontab 没有日志就无法工作
【发布时间】:2021-05-07 19:43:44
【问题描述】:

我已经发现很多有 crontab 错误的帖子,但我仍然不知道我的问题在哪里。

我想在 /home/pi/somedir/main.py 上启动一个 python 脚本并修复我的脚本中的任何相对路径问题,我在它旁边创建了一个 start.sh 包含

cd /home/pi/somedir
/usr/bin/python3.7 main.py

我用sudo chmod -x start.sh 使它可以执行,它可以正常工作,我手动执行/home/pi/somedir/start.sh,但我想在启动时自动启动它。

我尝试了多种方法(例如/etc/rc.local),但都没有成功。由于 crontab 似乎是更好的方法,我尝试了crontab -epi 用户的 crontab)并添加了

@reboot bash /home/pi/somedir/start.sh > /home/pi/somedir/logstart.txt &

拥有日志并在不阻塞系统其余部分的情况下执行脚本。但是脚本没有启动,并且日志文件中没有任何内容。

脚本是一个带有日志输出的python3 discord bot,手动启动时只运行find。它是 raspberry pi 3B+,全新安装了 raspberry pi os 桌面,我没有在上面运行其他任何东西。

感谢您的帮助,如果我的英语不正确,我们深表歉意!

ps:如果你知道更好的选择来托管 python3 脚本,比如在树莓派上的不和谐机器人,那当然也很有用,我显然是个初学者!

【问题讨论】:

  • 尝试将 #!/bin/sh 添加到您的脚本头,然后使用此 @reboot /home/pi/somedir/start.sh > /home/pi/somedir/logstart.txt &跨度>
  • 如果您不想重新启动来测试它,请将 @reboot 替换为 "* * * * *" 不带引号,让它每分钟运行一次。
  • 脚本仍然没有启动并且没有日志:/感谢测试提示!
  • 哦,实际上脚本现在会在一段时间后启动,所以它似乎只是在启动时才出现。有什么方法可以延迟脚本的开始吗?或者“* * * * *”参数可以用于一般用途?它是每次都重新启动脚本还是仅在脚本未实际运行时重新启动?
  • “@reboot”实际上是在机器完全启动之前运行脚本。我不知道在 Pi 上,但在我运行 ubuntu 的笔记本电脑上,“@reboot”在我看到登录屏幕之前就触发了。 run every minute 脚本应该在每次触发时启动一个全新的进程。这是一个很好的链接,可以将其设置为按您想要的方式运行,而不是每分钟运行一次。 crontab.tech

标签: python cron raspberry-pi raspberry-pi3 startup


【解决方案1】:

问题是脚本不会像在系统完全启动之前那样在重新启动时启动。一种解决方案是在系统完全启动时的精确时间启动该过程,例如每天早上。另一种方法是在运行 start.sh 脚本之前添加延迟,例如

@reboot sleep 60 && /home/pi/somedir/start.sh > /home/pi/somedir/logstart.txt &

也适合我。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-12-08
    • 2017-07-18
    • 2017-08-24
    • 1970-01-01
    • 1970-01-01
    • 2016-12-13
    • 1970-01-01
    • 2017-07-31
    相关资源
    最近更新 更多