домовой
необходимо определить что скрипт завис и убить. без участия человека.
допущения:
1. если скрипт не пишет лог файл значит он повис.
2. pid процесса известен и записан в pid файле
3. известно имя лог файла
не придумал ничего лучше чем
1. получаем текущий unix timestamp (date +%s)
2. получаем unix timestamp времени последней модификации файла stat -c %Z sсript.log
3. вычитаем из первого второе. если число больше чем n секунд то убиваем скрипт
на практике получается что-то типа
#!/bin/bash
check_spam_bot()
(
read pid <sсriрt.pid
file_date=`stat -c %Z sсript.log`
tmp_date=`date +%s`
[ $((tmp_date-file_date)) -gt 300 ] && echo тут мы убиваем кошку $pid
)
[ -e sсript.pid ] && check_spam_bot
допущения:
1. если скрипт не пишет лог файл значит он повис.
2. pid процесса известен и записан в pid файле
3. известно имя лог файла
не придумал ничего лучше чем
1. получаем текущий unix timestamp (date +%s)
2. получаем unix timestamp времени последней модификации файла stat -c %Z sсript.log
3. вычитаем из первого второе. если число больше чем n секунд то убиваем скрипт
на практике получается что-то типа
#!/bin/bash
check_spam_bot()
(
read pid <sсriрt.pid
file_date=`stat -c %Z sсript.log`
tmp_date=`date +%s`
[ $((tmp_date-file_date)) -gt 300 ] && echo тут мы убиваем кошку $pid
)
[ -e sсript.pid ] && check_spam_bot