Моё имя процесса - test
. Если я использую
ps -ef | grep test
, я вижу, что процесс запущен. Теперь я хочу проверять это каждые 10 минут в течение одного часа и печатать, если он успешно работает в течение одного часа. Каков наилучший способ сделать это?
Можно использовать while
цикл; здесь я использую pgrep
, чтобы проверить, работает ли процесс:
#!/bin/bash
counter=0
while :; do
[ "$counter" -eq 6 ] && break
if pgrep <process_name> &>/dev/null; then
echo "Success !!"
(( counter += 1 ))
sleep 10m
else
echo "Process not running..exiting !!"
break
fi
done
Замена <process_name>
с подлинным именем процесса Вы хотите отследить.
Простой цикл в сценарии:
#! /bin/bash
start=$SECONDS
while (( SECONDS - start < 3600 ))
do
sleep 10m
pgrep -f test &>- || exit
done
echo success
SECONDS
специальная переменная в ударе, который содержит число секунд, так как сценарий запустился. pgrep test
проверки на процесс, названный test
. Если это не находит один, мы выходим из сценария. В противном случае мы sleep
в течение 10 минут.
, Если мы не выходили, затем pgrep
, было успешно. Так, echo success
.
sudo systemctl show monit
и узнал этоRemainAfterExit=yes
. После того, как я изменил его наno
, systemd начал перезапускать мой процесс monit правильно после того, как это было уничтожено – Hirurg103 7 September 2017 в 08:29