Python subprocess.popen из задания cron - PullRequest
0 голосов
/ 29 июня 2019

Я пытаюсь настроить сервер для запуска при запуске (Raspberry Pi) - сервер вызывает скрипт, который вызывает скрипт ... кроме случаев, когда он не запускается.

  1. добавьте задание cron, используя crontab -e и написав @reboot python3 /path/to/my_server.py (также проверено с & в конце строки) ... это прекрасно работает.
  2. my_server.py использует httpd.server_forever() для прослушивания на нескольких конечных точках ... это прекрасно работает.
  3. Одна из конечных точек сервера запускается subprocess.Popen(['python3', '/path/to/my_script.py']).
  4. my_script.py затем запускается subprocess.Popen(['qgis']) (также пытается с shell=True).

Однако QGIS не запускается.

Это происходит только при попытке запустить все при загрузке с заданием cron. Если я вручную открываю терминал и запускаю python3 /path/to/my_server.py, тогда все работает как положено. Я думаю, что это связано с ... вещами, которые не запускаются в оболочке / терминале - возможно, поведение Popen?

1 Ответ

0 голосов
/ 30 июня 2019

Проблема в том, что QGIS требует, чтобы x сервер был запущен, а cron по умолчанию его не будет иметь.

Исправлено: измените cron запись на @reboot export DISPLAY=:0; python3 /path/to/my_server.py и все работает!

...