Я добавил сценарий для автозапуска (использующий приложения По умолчанию для LXSession). Позже, я переместил папку, содержащую сценарий.
Как результат, тихо перестала работать команда автоматического запуска.
Как я могу включить предупреждающие сообщения о неудавшихся командах автоматического запуска?
Решение ниже не специально для Lubuntu, только путь к установил , приложение для автозапуска от GUI несколько отличается, с тех пор Lubuntu
не имеет Приложения Запуска приложение, как Ubuntu.
Со сценарием ниже, можно проверить если сценарий, запущенный успешно в определенном ограничении по времени от входа в систему. Если запуск (запуски) был неудачен , сообщение появится, упоминая, какой из сценариев не запускался успешно. Можно использовать его для проверения нескольких сценариев или процессов за один шаг.
После того, как ограничение по времени передало и отправило свое сообщение, сценарий завершается
proc_check.py
в постоянный :) местоположение. Удостоверяются, что процессы (для проверки) не работают, и тестовый прогон сценарий с командой:
python3 /path/to/proc_check.py
Это должно отправить предупреждение после того, как ограничение по времени передало.
, Если все хорошо работает, добавьте команду ниже к Вашим Приложениям Запуска:
python3 /path/to/proc_check.py
Примечание:
, Если Вы имеете notify-send
доступный (sudo apt-get install libnotify-bin
), можно также не прокомментировать перед в последний раз строкой, для получения подтверждения, если все подходили:
преимущество этого состоит в том, что Вы будете или , получают уведомление, что все подходили, или предупреждение, упоминая, какой из процессов не запустил успешно.
Вы заметите тогда, переместились ли Вы случайно этот сценарий.:)
#!/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
Предполагается, что Ваши программы запуска находятся в /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