Как сделать сторожевой таймер сценария оболочки для проверки работоспособности другой программы или оборудования?

Мне нужен простой скрипт для сброса периферийного MCU. Моя потребность - это петля, которая должна быть проверена последней. В случае отсутствия пинга в течение 2 минут запускается скрипт reset-mcu.

Я нашел небольшой пример, чтобы начать здесь: Как мне написать сторожевой демон в Bash? и мой код, кажется, работает. Периферийное устройство может запустить команду оболочки.

#!/bin/sh
PIDFILE=~/.wd.pid
if [ x"$1" = x-daemon ]; then
#  logger "command daemon"
  sleep 1
  if test -f "$PIDFILE"; then 
   logger "${$} do ping n exit $PIDFILE"
   kill -s SIGUSR1 `cat "$PIDFILE"`
   exit
  fi
  echo $$ > "$PIDFILE"
  trap "rm '$PIDFILE'; logger '"${$}" see you 1'; exit" SIGTERM SIGINT
#  trap "logger '${$} start n stop $PIDFILE'; '$0' ; kill `cat "$PIDFILE"`; exit" SIGUSR1 SIGINT
  trap "logger '${$} start n stop $PIDFILE'; '$0' ; rm '$PIDFILE'; logger '"${$}" see you 2'; exit" SIGUSR1 SIGINT
#  trap "logger 'see you'; exit" EXIT
  while true; do
    #launch your app here
    logger "hello ${$}"
    sleep 120 &
    wait # needed for trap to work
    logger "DO NOT DISPLAY THAT" #timeout wd : this command will be replaced by reset-mcu
  done
elif [ x"$1" = x-stop ]; then
  logger "${$} command stop $PIDFILE"
  kill `cat "$PIDFILE"`
elif [ x"$1" = x-ping ]; then
  logger "${$} command ping $PIDFILE"
  kill -s SIGUSR1 `cat "$PIDFILE"`
else
#  logger "command other"
  "$0" -daemon &
fi

Мой вопрос: что вы думаете об этом стиле кодирования? Интересно, смогу ли я использовать меньше процесса?

0 ответов

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