Python subprocess.popen 来自 cron 作业

Python subprocess.popen from within a cron job

我试图在启动时将服务器设置为 运行 (Raspberry Pi) - 服务器调用一个脚本,该脚本又调用一个脚本...除非它们没有启动。

  1. 使用 crontab -e 并写入 @reboot python3 /path/to/my_server.py 添加 cron 作业(也在行尾使用 & 进行测试)...这很好用。
  2. my_server.py 使用 httpd.server_forever() 在几个端点监听...这很好用。
  3. 其中一个服务器端点 运行s subprocess.Popen(['python3', '/path/to/my_script.py']).
  4. my_script.py 然后 运行s subprocess.Popen(['qgis']) (也尝试过 shell=True)。

但是,QGIS 没有开始。

只有在尝试 运行 使用 cron 作业启动所有内容时才会发生这种情况。如果我手动打开终端并 运行 python3 /path/to/my_server.py 那么一切都会按预期进行。我认为它与...有关 shell/terminal 中没有 运行 的事情 - 也许是 Popen?

的行为

问题是 QGIS 要求 x 服务器是 运行,而 cron 默认情况下没有。

修复:将 cron 条目更改为 @reboot export DISPLAY=:0; python3 /path/to/my_server.py,一切正常!