Как запускать GUI/графические программы через cron

Как запускать GUI/графические программы через cron

Сталкивались ли вы с тем, что вам нужно было запускать какое-нибудь графическое приложение каждый день в определенное время. Мне, например, нужно было периодически запускать Thunderbird для проверки электронной почты. Самое первое решение, которое сразу приходит на ум - это CRON.

Все, что вам нужно сделать - добавить новую задачу в ваш crontab:

crontab -e

Но для запуска графических приложений, вам нужно объяснить CRON на каком именно экране приложение должно запуститься. Для этого просто нужно добавить следующее:

export DISPLAY=:0

:0 - значение по-умолчанию. Если нужно запустить приложение на другом экране, то нужно его изменить на соответствующую цифру.

Другими словами CRON задачу нужно изменить из следующего:

# Запуск Thunderbird каждый день в 18:30
30 18 * * * thunderbird

На это:

# Запуск Thunderbird каждый день в 18:30
30 18 * * * export DISPLAY=:0 && thunderbird

Если нужно еще и закрыть приложение через некоторое время, то просто используйте команду killall:

# Закрытие Thunderbird в 19:00
00 19 * * * killall thunderbird

Thunderbird приведен только для примера. С таким же успехом можно использовать это решение для запуска и других GUI приложений.