【发布时间】: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 -e(pi 用户的 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