Linuxを使用しています。コンピューターを起動するたびにプロセス(ircボット)を実行したい。しかし、問題があります。ネットワークが悪く、頻繁に切断されるため、ボットを1日に数回手動で再起動する必要があります。どうすれば自動化できますか?
追加情報:ボットはbot.pidというpidファイルを作成します。ボットは数回しか再接続しません。ネットワークが非常に悪いので、ボットは応答がないために時々自分自身を殺します。
私が現在していること(別名私のアプローチ;))cronジョブをstartbot.rb
5分ごとに実行しています。(スクリプト自体はボットと同じディレクトリにあります)
スクリプト:
#!/usr/bin/ruby
require 'fileutils'
if File.exists?(File.expand_path('tmp/bot.pid'))
@pid = File.read(File.expand_path('tmp/bot.pid')).chomp!.to_i
begin
raise "ouch" if Process.kill(0, @pid) != 1
rescue
puts "Removing abandoned pid file"
FileUtils.rm(File.expand_path('tmp/bot.pid'))
puts "Starting the bot!"
Kernel.exec(File.expand_path('./bot.rb'))
else
puts "Bot up and running!"
end
else
puts "Starting the bot!"
Kernel.exec(File.expand_path('./bot.rb'))
end
これが行うこと:pidファイルが存在するかどうかを確認し、それが真である場合kill -s 0 BOT_PID == 1
(ボットが実行されている場合)、2つのチェックのいずれかが失敗/真でない場合にボットを開始します。
私のアプローチはかなり汚いようですが、どうすればもっと良くできますか?