Как показать уведомление, если приложению запуска (или процесс) не удалось запуститься автоматически

Я добавил сценарий для автозапуска (использующий приложения По умолчанию для LXSession). Позже, я переместил папку, содержащую сценарий.

Как результат, тихо перестала работать команда автоматического запуска.

Как я могу включить предупреждающие сообщения о неудавшихся командах автоматического запуска?

4
задан 11 September 2017 в 01:00

2 ответа

Решение ниже не специально для Lubuntu, только путь к установил , приложение для автозапуска от GUI несколько отличается, с тех пор Lubuntu не имеет Приложения Запуска приложение, как Ubuntu.

Проверка, если сценарий начал в определенном ограничении по времени с входа в систему

Со сценарием ниже, можно проверить если сценарий, запущенный успешно в определенном ограничении по времени от входа в систему. Если запуск (запуски) был неудачен , сообщение появится, упоминая, какой из сценариев не запускался успешно. Можно использовать его для проверения нескольких сценариев или процессов за один шаг.

enter image description here

После того, как ограничение по времени передало и отправило свое сообщение, сценарий завершается

, Как использовать

  1. Копия сценарий ниже в пустой файл, сохранить его как proc_check.py в постоянный :) местоположение.
  2. В заголовке сценария, набор список процессов (названия сценария), чтобы следить, и установить ограничение по времени.
  3. Удостоверяются, что процессы (для проверки) не работают, и тестовый прогон сценарий с командой:

    python3 /path/to/proc_check.py
    

    Это должно отправить предупреждение после того, как ограничение по времени передало.

  4. , Если все хорошо работает, добавьте команду ниже к Вашим Приложениям Запуска:

    python3 /path/to/proc_check.py
    

Примечание:

, Если Вы имеете notify-send доступный (sudo apt-get install libnotify-bin), можно также не прокомментировать перед в последний раз строкой, для получения подтверждения, если все подходили:

enter image description here

преимущество этого состоит в том, что Вы будете или , получают уведомление, что все подходили, или предупреждение, упоминая, какой из процессов не запустил успешно.
Вы заметите тогда, переместились ли Вы случайно этот сценарий.:)

сценарий

#!/usr/bin/env python3
import subprocess
import getpass
import time

#--- set the processes (script names) to check below
procs = ["pscript_2.py", "monkey.py"]
#--- set the time limit below (seconds)
wait = 30
#---

# define the user to fetch the current user's process list
user = getpass.getuser()
# create an (empty) list of succesful process startups
succeeded = []

def get():
    return subprocess.check_output(["ps", "-u", user, "ww"]).decode("utf-8")

t = 1
while t < wait:
    # add succesful processes to the "succeeded" list
    for p in [proc for proc in procs if proc in get()]:
        succeeded.append(p)
    time.sleep(1)
    t = t+1

# list the failures
fails = [p for p in procs if not succeeded.count(p) > 2]
# if there are any, send a message
if len(fails) > 0:
    subprocess.Popen(["zenity", "--info", "--text", "failed to run: "+(", ").join(fails)])
# if all was successfull, send a message; n.b. comment out the line if notify-send is not available
else:
    # subprocess.Popen(["notify-send", "All processes started succesfully"])
    pass
7
ответ дан 23 November 2019 в 11:42

Предполагается, что Ваши программы запуска находятся в /home/<your_username>/.config/autostart/.

И, чем что-то вроде этого в Вашем crontab:

awk -F'[= ]' '/^Exec/{print $2}' /home/<your_username>/.config/autostart/*.desktop | while IFS= read -r target; do [ ! -x "${target/\~/$HOME}" ] &&  ! type "${target/\~/$HOME}" &> /dev/null  && echo "Not executable: $target" | mail -s "Missing commands" <your_username>; done

Открывают Ваш crontab с:

crontab -e

и добавляют эту строку:

* */2 * * *       awk -F'[= ]' '/^Exec/{print $2}' /home/<your_username>/.config/autostart/*.desktop | while IFS= read -r target; do [ ! -x "$target" ] &&  ! type "$target" &> /dev/null  && echo "Not executable: $target" | mail -s "Missing commands" <your_username>; done

Это проверит Ваши файлы в .config/autostart/ каждые два часа и отправит почту, если будет проблема.

Спасибо @terdon

4
ответ дан 23 November 2019 в 11:42

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

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