У меня есть очень простой сценарий-оболочка для запуска программы Ruby, которая отслеживает сетевое соединение. Сценарий находится на маршрутизаторе - следовательно, мы используем ash, а не bash.
Поскольку мы используем monit для отслеживания статуса, мне нужен файл PID. Проблема в том, что идентификатор процесса, установленный оболочкой, на единицу меньше, чем у программы ruby.
Таким образом, Monit охватывает сотни процессов. Как я могу заставить оболочку запустить программу Ruby и создать правильный pid-файл?
Моя обертка выглядит так:
#!/bin/sh /etc/rc.common
start(){
echo $$ > /var/run/ping.pid
ruby /etc/scripts/ping.rb & > /dev/null 2>&1
}
stop(){
kill `cat /var/run/ping.pid`
}