Автоматическая “реанимация” процессов 1С (ragent)

Столкнулись с непонятной проблемой - тихим умиранием процесса ragent на сервере 1С 8.1.13.37 под linux. При этом логи (которые смог найти) чистые. Получали вот такую картину

[root@nine rc.d]# /etc/init.d/srv1cv81 status
1C:Enterprise 8.1 server status:
Init script: STARTED.
Ragent:NOT  RUNNING

т.к. причина неизвестна, пришлось лечить следствие :).  По порядку:

1. Модернизируем функцию status в /etc/init.d/srv1cv81 (предварительно естественно сохраните себе резерную копию). просто добавить красные строчки.


#------------------------------------------------------------
# displays ragent status
#------------------------------------------------------------
function status() {
echo "$G_TITLE status:"
echo -n "Init script: "
if [ -f "$SRV1CV8_PIDFILE" ]; then
	echo STARTED.

	local cmd2run=`buildCommandLine`
	echo -n "     Ragent: "
	if  ! isRagentRunning "$SRV1CV8_USER" "$cmd2run" ; then
		echo -n "NOT RUNNING."
		echo
		echo RESTARTING!!!!
		echo
		restart
	else
		echo "RUNNING."
	fi
else
	echo NOT STARTED.
fi
return 0
}

в результате, при проверки состояния сервера,  если “Ragent:NOT  RUNNING”, то он сам перезапуститься.

2.  создадим файлик /etc/init.d/srv1cv81test следующего содержания:

#!/bin/bash
(while sleep 30; do
/etc/init.d/srv1cv81 status
done)&

Кому непонятно - каждые 30 секунд будет проверяться состояние сервера.

3. Ну дальше на свой вкус: либо запускайте srv1cv81test ручками, либо пропишите его запуск в /etc/rc.d/rc.local как это сделал я :). Прописывать, естественно, надо полный путь /etc/init.d/srv1cv81test.

Собственно все.  Получили неубиваемый сервер 1С, который при этом можно еще и остановить.