Как посмотреть, работает ли определенный процесс в оболочке в течение 1 часа

Моё имя процесса - test. Если я использую

ps -ef | grep test

, я вижу, что процесс запущен. Теперь я хочу проверять это каждые 10 минут в течение одного часа и печатать, если он успешно работает в течение одного часа. Каков наилучший способ сделать это?

2
задан 21 April 2016 в 23:52

2 ответа

Можно использовать 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> с подлинным именем процесса Вы хотите отследить.

2
ответ дан 22 April 2016 в 09:52
  • 1
    @dessert я попытался просмотреть все параметры конфигурации для monit с sudo systemctl show monit и узнал это RemainAfterExit=yes. После того, как я изменил его на no, systemd начал перезапускать мой процесс monit правильно после того, как это было уничтожено – Hirurg103 7 September 2017 в 08:29

Простой цикл в сценарии:

#! /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.

0
ответ дан 22 April 2016 в 09:52
  • 1
    Хорошо, поэтому после использования ' route' я нашел, что правильный шлюз 192.168.0.1, однако я все еще не могу проверить с помощью ping-запросов его, когда я перезапускаю свою сеть – Jordan Pagni 7 September 2017 в 10:00

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

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