Как проверить работающий процесс с Ruby? - PullRequest
13 голосов
/ 04 января 2011

Я использую планировщик (Rufus scheduler), чтобы запускать процесс под названием "ar_sendmail" (из ARmailer) каждую минуту.

Процесс НЕ должен запускаться, если такой процесс уже запущен, чтобы неиспользовать память.

Как проверить, запущен ли уже этот процесс?Что идет после unless ниже?

scheduler = Rufus::Scheduler.start_new

  scheduler.every '1m' do

    unless #[what goes here?]
      fork { exec "ar_sendmail -o" }
      Process.wait
    end

  end

end

Ответы [ 2 ]

23 голосов
/ 04 января 2011
unless `ps aux | grep ar_sendmai[l]` != ""
8 голосов
/ 08 апреля 2015
unless `pgrep -f ar_sendmail`.split("\n") != [Process.pid.to_s]
...