nohub 之类命令应该可以让它在 ssh 断开后继续,但我没用过。 手动执行的问题是,下次部署的时候会重开虚拟机,进程就终结了,还得上去执行一遍。临时用一下可以,长期用需要写到 systemd 之类的进程管理器里,让它开机启动,那么需要自己写 dockerfile。
谢谢回复 我的脚本内容是: 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)就可以了嘛?
刚用到nohup bundle exec ruby hello.rb &,正在观察,谢谢,如果不行我再按照你说的调整,非常感谢,目前正在调研这个部署,部署没问题了,就差这个脚本的问题😊
nohub 之类命令应该可以让它在 ssh 断开后继续,但我没用过。
手动执行的问题是,下次部署的时候会重开虚拟机,进程就终结了,还得上去执行一遍。临时用一下可以,长期用需要写到 systemd 之类的进程管理器里,让它开机启动,那么需要自己写 dockerfile。
谢谢回复
我的脚本内容是:
比如这种,如果在ssh console里面执行
ruby hello.rb
,每30秒去往Test增加数据,如果console超时了断开了,会中断吗?sidekiq-cron的话我之后改下,我把任务方法定义好,设置执行时间为30秒,然后直接用fly.io来部署(fly deploy --remote-only)就可以了嘛?
flyctl ssh console 就像 ssh 到虚拟机一样,适合执行一次性脚本。
如果需要定期执行脚本推荐在应用层实现,例如用 sidekiq-cron。
我进入flyctl ssh console里面是可以执行脚本吗,这样不知道可行不可行,我测试下
我想请教下,fly.io如何运行rails项目中的某一个.rb文件呢,如:ruby hello.rb(里面会每24小时循环更新数据)这种
补充一下,单个虚拟机跑多个进程的方法已经在文档里有 https://fly.io/docs/app-guides/multiple-processes/
合并目前有一个弊端是 dashboard 里的图表现在无法区分 web 和 woker 的情况。