Как я могу показывать сообщения уведомления-отправки, инициированные crontab? [dубликат]

Просто избавитесь от двух блоков if if fi в pre-start и post-stop в /etc/init/networking.conf, чтобы снова перезапустить перезапуск службы.

3
задан 26 March 2018 в 15:36

6 ответов

Чтобы выполнить любое приложение, связанное с графическим интерфейсом от Cron, вы должны экспортировать несколько переменных окружения рабочего стола. Ниже приведенное решение основано на этом ответе, где приведены более подробные сведения.

Как запустить какое-либо приложение, связанное с графическим интерфейсом, из crontab в Ubuntu 16.04, 17.10 и другие дистрибутивы Ubuntu с Gnome

Создайте сценарий запуска, который будет экспортировать переменные среды рабочего стола и запустит ваше приложение. Назовем это cron-gui-launcher. Его содержание должно быть (referenc: [1], [2] и [3]):

#!/bin/bash -e

# Check whether the user is logged-in
while [ -z "$(pgrep gnome-session -n -U $UID)" ]; do sleep 3; done

# Export the current desktop session environment variables
export $(xargs -0 -a "/proc/$(pgrep gnome-session -n -U $UID)/environ")

# Execute the input command
nohup "$@" >/dev/null 2>&1 &

exit 0
Для других окружений рабочего стола измените gnome-session в этой части $(pgrep gnome-session -n -U $UID) с именем процесса используемого DE, например mate-session. Здесь представлен список самых Ubuntu DE. Реализация Lubuntu того же скрипта - здесь. Сценарий можно использовать для запуска приложения GUI из сеанса TTY или SSH в сеансе рабочего стола текущего пользователя. Сделайте исполняемый файл: chmod +x cron-gui-launcher. Сценарий будет работать до тех пор, пока пользователь не войдет в систему, включая заблокированный экран. Пожалуйста, не изменяйте и не запускайте скрипт как root. Это может быть вредно для системы!

Затем используйте его внутри crontab следующим образом:

*/1 * * * * /full/path/to/cron-gui-launcher "/full/path/to/the-targer-application"

Вот как это работает на Ubuntu 17.10 на Wayland:

на основе на этот ответ

2
ответ дан 22 May 2018 в 16:04
  • 1
    Хотя это может технически "работать" и "решить" главное, о чем просили, было бы лучше всего посоветовать, что вы не должны делать такие вещи из cron, и если это то, что пользователю нужно видеть для уведомления, должно быть что-то работает под сессией пользователя только при входе в систему , поскольку запуск этого через cron был бы расточительным при выходе из машины. – dobey 20 November 2017 в 17:19
  • 2
    @dobey, приведенный выше сценарий будет работать только при входе пользователя в систему. Но какова фактическая проблема при запуске приложений GUI из Cron? – pa4080 20 November 2017 в 17:34
  • 3
    будь то оптимальное решение или нет, он работает! – membersound 20 November 2017 в 17:38
  • 4
    @ pa4080 Ну, " уведомлять-отправлять " не является графическим приложением, для одного, поэтому я не уверен, что имеет отношение к этому. Однако случайный запуск приложений с графическим интерфейсом из-за плохого дизайна. Я не знаю, какова конкретная цель в конкретном случае этого вопроса, но есть почти наверняка лучший и эффективный способ ее достижения, чем с помощью заданий cron. – dobey 20 November 2017 в 18:09

Чтобы выполнить любое приложение, связанное с графическим интерфейсом от Cron, вы должны экспортировать несколько переменных окружения рабочего стола. Ниже приведенное решение основано на этом ответе, где приведены более подробные сведения.

Как запустить какое-либо приложение, связанное с графическим интерфейсом, из crontab в Ubuntu 16.04, 17.10 и другие дистрибутивы Ubuntu с Gnome

Создайте сценарий запуска, который будет экспортировать переменные среды рабочего стола и запустит ваше приложение. Назовем это gui-launcher. Его содержание должно быть (referenc: [1], [2] и [3]):

#!/bin/bash -e # NAME: gui-launcher # Check whether the user is logged-in while [ -z "$(pgrep gnome-session -n -U $UID)" ]; do sleep 3; done # Export the current desktop session environment variables export $(xargs -0 -a "/proc/$(pgrep gnome-session -n -U $UID)/environ") # Execute the input command nohup "$@" >/dev/null 2>&1 & exit 0 Для других окружений рабочего стола измените gnome-session в этой части $(pgrep gnome-session -n -U $UID) с именем процесса используемого DE, например mate-session. Здесь представлен список самых Ubuntu DE. Реализация Lubuntu того же скрипта - здесь. Сценарий можно использовать для запуска приложения GUI из сеанса TTY или SSH в сеансе рабочего стола текущего пользователя. Сделайте исполняемый файл: chmod +x gui-launcher. Сценарий будет работать до тех пор, пока пользователь не войдет в систему, включая заблокированный экран. Пожалуйста, не изменяйте и не запускайте скрипт как root. Это может быть вредно для системы!

Затем используйте его внутри crontab следующим образом:

*/1 * * * * /full/path/to/gui-launcher "/full/path/to/the-targer-application"

Вот как это работает на Ubuntu 17.10 на Wayland:

на основе на этот ответ

2
ответ дан 18 July 2018 в 02:57

Чтобы выполнить любое приложение, связанное с графическим интерфейсом от Cron, вы должны экспортировать несколько переменных окружения рабочего стола. Ниже приведенное решение основано на этом ответе, где приведены более подробные сведения.

Как запустить какое-либо приложение, связанное с графическим интерфейсом, из crontab в Ubuntu 16.04, 17.10 и другие дистрибутивы Ubuntu с Gnome

Создайте сценарий запуска, который будет экспортировать переменные среды рабочего стола и запустит ваше приложение. Назовем это gui-launcher. Его содержание должно быть (referenc: [1], [2] и [3]):

#!/bin/bash -e # NAME: gui-launcher # Check whether the user is logged-in while [ -z "$(pgrep gnome-session -n -U $UID)" ]; do sleep 3; done # Export the current desktop session environment variables export $(xargs -0 -a "/proc/$(pgrep gnome-session -n -U $UID)/environ") # Execute the input command nohup "$@" >/dev/null 2>&1 & exit 0 Для других окружений рабочего стола измените gnome-session в этой части $(pgrep gnome-session -n -U $UID) с именем процесса используемого DE, например mate-session. Здесь представлен список самых Ubuntu DE. Реализация Lubuntu того же скрипта - здесь. Сценарий можно использовать для запуска приложения GUI из сеанса TTY или SSH в сеансе рабочего стола текущего пользователя. Сделайте исполняемый файл: chmod +x gui-launcher. Сценарий будет работать до тех пор, пока пользователь не войдет в систему, включая заблокированный экран. Пожалуйста, не изменяйте и не запускайте скрипт как root. Это может быть вредно для системы!

Затем используйте его внутри crontab следующим образом:

*/1 * * * * /full/path/to/gui-launcher "/full/path/to/the-targer-application"

Вот как это работает на Ubuntu 17.10 на Wayland:

на основе на этот ответ

2
ответ дан 24 July 2018 в 17:41

Окружающая среда для cron и вашего обычного пользователя может быть разной.

Когда вы используете какие-либо скрипты в cron, лучше поставить полный путь к ним.

1
ответ дан 22 May 2018 в 16:04
  • 1
    Использование абсолютного пути не отображает уведомление ни – membersound 20 November 2017 в 16:57
  • 2
    Первое предложение - это актуальная проблема. Второе предложение не является проблемой. DBUS_SESSION_BUS_ADDRESS не установлен в среде cron, и поэтому notify-send не может разговаривать с службой уведомлений, а dbus попытается запустить новую шину сеанса и выйти из строя. – dobey 20 November 2017 в 17:16

Окружающая среда для cron и вашего обычного пользователя может быть разной.

Когда вы используете какие-либо скрипты в cron, лучше поставить полный путь к ним.

1
ответ дан 18 July 2018 в 02:57

Окружающая среда для cron и вашего обычного пользователя может быть разной.

Когда вы используете какие-либо скрипты в cron, лучше поставить полный путь к ним.

1
ответ дан 24 July 2018 в 17:41
  • 1
    Использование абсолютного пути не отображает уведомление ни – membersound 20 November 2017 в 16:57
  • 2
    Первое предложение - это актуальная проблема. Второе предложение не является проблемой. DBUS_SESSION_BUS_ADDRESS не установлен в среде cron, и поэтому notify-send не может разговаривать с службой уведомлений, а dbus попытается запустить новую шину сеанса и выйти из строя. – dobey 20 November 2017 в 17:16

Другие вопросы по тегам:

Похожие вопросы: