Мне нужно проверять всякий раз, когда процесс запущен, и оповещать, если процесс умирает, останавливается или закрывается.
Я использовал pgrep и processName, а затем предупреждаю, как это:
pgrep processName && notifiy-send
Но это только дает мне pid процесса, есть ли другой способ?
Используя pgrep
дает наименьшее количество информации. Используя ps -aux | grep
может обеспечивать слишком много время от времени:
$ pgrep eyesome
1200
1217
1226
$ ps -aux | grep eyesome
root 1197 0.0 0.0 4504 696 ? Ss 07:36 0:00 /bin/sh -c /usr/local/bin/eyesome.sh
root 1200 0.0 0.0 13380 3912 ? S 07:36 0:01 /bin/bash /usr/local/bin/eyesome.sh
root 1217 0.0 0.0 12768 3308 ? S 07:36 0:00 /bin/bash /usr/local/bin/eyesome-dbus.sh
root 1226 0.0 0.0 12768 2368 ? S 07:36 0:00 /bin/bash /usr/local/bin/eyesome-dbus.sh
root 10567 0.0 0.0 54792 3964 pts/18 S 10:27 0:00 sudo eyesome/movie.sh asdf
root 10568 0.0 0.0 12896 3380 pts/18 S 10:27 0:08 /bin/bash eyesome/movie.sh asdf
rick 26612 0.0 0.0 14224 1020 pts/19 S+ 16:52 0:00 grep --color=auto eyesome
Поэтому давайте сузим его при создании его удобным для пользователя:
$ ps -aux | grep "sudo eyesome/movie" | grep -v grep
root 10567 0.0 0.0 54792 3964 pts/18 S 10:27 0:00 sudo eyesome/movie.sh asdf
Теперь поместите его в сценарий, который Вы загрузили в Приложениях Запуска:
#!/bin/bash
# Name: checkrunning.sh
# For: https://askubuntu.com/questions/1160844/check-for-running-proccess-constantly
while true; do
Running=$(ps -aux | grep "sudo eyesome/movie" | grep -v grep)
if [[ "$Running" == "" ]]
then
echo "NOT Running"
else
echo "Running: $Running"
fi
sleep 10
done
Mark файл как исполняемое использование:
chmod /path/to/checkrunning.sh
Замените echo
команды с notify-send
.