我正在使用Linux。我希望每次启动计算机时都运行一个进程(一个 irc 机器人)。但是我遇到了一个问题:网络不好,经常断开连接,所以我需要每天手动重启几次机器人。我该如何自动化呢?
附加信息: bot 创建一个名为 bot.pid 的 pid 文件 bot 重新连接自身,但只有几次。网络太糟糕了,所以机器人有时会因为没有响应而自杀。
我目前所做的(也就是我的方法;))我startbot.rb
每 5 分钟执行一次 cron 作业。(脚本本身与机器人位于同一目录中)
剧本:
#!/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
(如果机器人正在运行)并在两个检查之一失败/不正确时启动机器人。
我的方法似乎很脏,所以我该如何做得更好?