Ситуация:
Есть веб-сервер, процесс которого может самопроизвольно завершиться (ошибка, OutOfMemory, что угодно).
Для того, чтобы сервер поднимался автоматически после падения, написал специальный скрипт:
run-loop.sh
while :
do
echo "inifinite loop iteration..."
./start-server.sh
echo "inifinite loop iteration ended, sleeping for some time"
sleep 60
done
Запускаю все дело так из сессии ssh специального пользователя (не root):
nohup ./run-loop.sh > logs/server-out.log &
Скрипт-враппер работает нормально в тестах, проверял: если убить процесс сервера через kill -9, он поднимается через минуту.
Тем не менее, периодически (время плавает, 1-7 суток нормальной работы обычно) обнаруживаю, что нет ни одного из процессов пользователя: ни процесса враппера с циклом, ни процесса сервера.
В логах сервера ничего нет полезного, как будто его штатно выключили, в server-out.log тоже ничего.
Как понять, кто убил процессы пользователя? Может ли сервер завершаться с каким-то особым кодом ошибки, вырубающим все скрипты по цепочке? Где искать логи и концы?
Uptime говорит, что железный сервер не перезагружали.
Операционная система: FreeBSD 9.x.
UPDATE:
Убрал враппер, реализовал проверку сервиса через cron, работает.