2015-03-19 6 views
0

Я использую Eventmachine для запуска системной команды linux/ubuntu для запуска скрипта. Иногда скрипт зависает/зависает. Мой вопрос: как я могу в цикле событий убить скрипт pid.Eventmachine linux system process kill

Я попытался следующий

EM.system(cmd) do |output,status| 
    EM.add_timer(5) do 
    Process.kill("Term",status.pid) 
    end 
end 

идентификатора процесса, я получаю от status.pid не идентификатор процесса сценария. Я не уверен, какой идентификатор процесса EM.system возвращается.

ответ

0

Системный метод Eventmachine # принимает обратный вызов proc.

def terminate_after_timeout 
    proc do |process| 
    EM.add_timer(60) do 
     Process.kill('TERM', process.get_pid) 
    end 
    end 
end 

EM.run { 
    EM.system(cmd,terminate_after_timeout) do |out,status| 
    puts out 
    end 
end 

Это одна из немногих стратегий, которые я нашел, работает достаточно хорошо. Процесс cmd системы будет убит по истечении заданного времени, в этом случае 60 секунд