在我的带有 ubuntu 20.04 的树莓派设备上,当我在重启设备后手动运行 start.py 代码时
在文件夹/home/okay 中
python3 start.py
两个脚本一个接一个地运行。但是当我把这段代码放在 crontab 中的@reboot 中时,
@reboot sleep 300 && python3 /home/okay/start.py
只有第一个脚本运行,第二个不运行。py脚本如下
import os
os.system ("python3 /home/okay/avadot.py & ")
os.system ("python3 /home/okay/main.py &")
我用 os.system 编写代码的原因是,两个 py 文件都运行一段时间 True: 每 10 分钟循环一次。因此,一个完成后不能启动另一个,两者必须同时开始工作。
最佳答案
将 Python 用于 cron
似乎没有多大意义。工作。os.system("cmd &")
将运行 cmd
作为它生成的 shell 的后台作业,但 shell 会一直挂起,直到后台作业完成。您可以通过多种方式分离,但最简单的解决方案是从同一个 shell 运行这两个作业,而根本不使用 Python。
#!/bin/sh
python3 /home/okay/avadot.py &
python3 /home/okay/main.py &
如果你非常想多花一个进程,你可以从 Python 运行它:import subprocess
subprocess.run("""
python3 /home/okay/avadot.py &
python3 /home/okay/main.py &
""", shell=True, check=True)
或重构您的代码,以便您可以 import
这两个脚本并使用 multiprocessing
运行它们.回到更简单的建议,您可以从一个
cron
启动两个进程。工作@reboot sleep 300 && python3 /home/okay/avadot.py & python3 /home/okay/main.py &
但是 cron
已经在后台运行,所以你可以把它分成@reboot sleep 300 && python3 /home/okay/avadot.py
@reboot sleep 300 && python3 /home/okay/main.py
可能会有其他并发症;一个常见的初学者难题是尝试运行需要图形显示或用户交互的工具,这当然不是从 cron
获得的。一点也不。或许见 CronJob not running了解更多信息和故障排除提示。
关于python - 无法使用 Crontab @reboot 运行第二个 py 脚本 - Ubuntu 20.04,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/72678934/