Rubyで実行中のプロセスを確認する方法は?
-
15-10-2019 - |
質問
スケジューラ(Rufusスケジューラ)を使用して、「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
解決
unless `ps aux | grep ar_sendmai[l]` != ""
他のヒント
unless `pgrep -f ar_sendmail`.split("\n") != [Process.pid.to_s]
これは私が思うよりきちんとしたように見え、組み込みのRubyモジュールを使用しています。 0キル信号を送信します(つまり、殺しないでください):
# Check if a process is running
def running?(pid)
Process.kill(0, pid)
true
rescue Errno::ESRCH
false
rescue Errno::EPERM
true
end
からわずかに修正されています 簡単な開発のヒント Epermを救出したくないかもしれません。つまり、「走っていますが、殺すことは許可されていません」。
所属していません StackOverflow