2015-07-16 4 views
2

Мой код работает, но есть ли лучшее решение?Лучший способ запуска и остановки процесса на данном порту

У меня есть действие для перезапуска внешнего инструмента. Иногда он либо перезапускается, либо запускается. Я установил порт на 12928. Мой checkobject имеет способ получить PID из системы.

def pids 
    %x{netstat -tanp | grep 12928} 
end 

С помощью метода pid (ниже) я получаю pid.

def pid 
    /(?<pid>\d+)\//.match(pits.to_s)[:pid].to_i 
end 

Чтобы остановить эту службу, я использую:

Process.kill("SIGTERM",pid) 
Process.detach(pid) 

ответ

0

Я нашел драгоценный камень под названием eye (https://github.com/kostya/eye), которая вдохновлена ​​от BluePill и Бога.

Это выглядит неплохо, и я попробую.

Если кто-то интерес к ней, вот пример из репозитория:

process :sample1 do 
    pid_file '1.pid' 
    start_command 'ruby ./sample.rb' 
    daemonize true 
    stdall 'sample1.log' 
end 

Для начала работы вы делаете:

eye start sample1 

Для остановки этой работы вы набираете:

eye stop sample1