Open Nightsphere opened 3 years ago
Also, I ran into the same thing with GeoProcessor and the run script sets DISPLAY
. I don't remember if I tried to run headless but the point is that if a self-contained run script is used, it can make sure that necessary setup is done in various environments.
The DISPLAY
env variable cannot be seen by cron when run from a user account instead of root. It needs to be set before the cron script is called:
* * * * * export DISPLAY=<full-display-name> && /path/to/script.bash
Closing the issue.
This is helpful for understanding places where DISPLAY might be getting set by the system:
https://stackoverflow.com/questions/52041092/setting-environment-variable-for-a-compute-engine-vm
It looks like it did not run again today. I still would like to understand why DISPLAY
is so finicky. Here are some other ideas:
If it is necessary to do this, then I recommend updating the application to accept a command line parameter such as --noui (no UI) or similar. This can be used when running in headless mode. I searched GeoProcessor for something like this but don't see anything. I remember looking into it but perhaps there has not been a need to run the GeoProcessor headless.
The issue was finally resolved. QT was trying to run GUI based code in a headless server. The original error up above gave possible plugins to use instead. One of these options is offscreen
, which renders to an offscreen buffer. This is the fix that we've been looking for. When cron runs the SNODASDaily_Automated._forCRON.sh
script, it sets the QT_QPA_PLATFORM
environment variable before it runs the SNODASDaily_Automated.py
python module.
The DISPLAY
environment variable might not even need to be set, but I will update this issue once more after tests have been run, and will close the issue if correct.
The automated script runs correctly when manually run on command line, but when the cron job runs the same script, what I believe to be a X Windows error displays: