Python subprocess.popen 来自 cron 作业
Python subprocess.popen from within a cron job
我试图在启动时将服务器设置为 运行 (Raspberry Pi) - 服务器调用一个脚本,该脚本又调用一个脚本...除非它们没有启动。
- 使用
crontab -e
并写入 @reboot python3 /path/to/my_server.py
添加 cron 作业(也在行尾使用 &
进行测试)...这很好用。
my_server.py
使用 httpd.server_forever()
在几个端点监听...这很好用。
- 其中一个服务器端点 运行s
subprocess.Popen(['python3', '/path/to/my_script.py'])
.
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
,一切正常!
我试图在启动时将服务器设置为 运行 (Raspberry Pi) - 服务器调用一个脚本,该脚本又调用一个脚本...除非它们没有启动。
- 使用
crontab -e
并写入@reboot python3 /path/to/my_server.py
添加 cron 作业(也在行尾使用&
进行测试)...这很好用。 my_server.py
使用httpd.server_forever()
在几个端点监听...这很好用。- 其中一个服务器端点 运行s
subprocess.Popen(['python3', '/path/to/my_script.py'])
. my_script.py
然后 运行ssubprocess.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
,一切正常!