谢谢回复
我的脚本内容是:
ENV['RAILS_ENV'] = ARGV.first || ENV['RAILS_ENV'] || 'production'
require File.expand_path(File.dirname(__FILE__) + "/../config/environment")
require 'rails'
require 'rubygems'
loop do
Rails.logger.info "== job job, sleep 30 seconds..."
puts 'hello', '~' * 50
Test.create(val: 'test')
sleep 30
end
比如这种,如果在ssh console里面执行ruby hello.rb
,每30秒去往Test增加数据,如果console超时了断开了,会中断吗?
sidekiq-cron的话我之后改下,我把任务方法定义好,设置执行时间为30秒,然后直接用fly.io来部署(fly deploy --remote-only)就可以了嘛?
nohub 之类命令应该可以让它在 ssh 断开后继续,但我没用过。
手动执行的问题是,下次部署的时候会重开虚拟机,进程就终结了,还得上去执行一遍。临时用一下可以,长期用需要写到 systemd 之类的进程管理器里,让它开机启动,那么需要自己写 dockerfile。