如何使用带有‘屏幕’的 Rails shellscript?

如何使用带有‘屏幕’的 Rails shellscript?

我最近开始进行 Ruby on Rails 开发,并且使用 Vagrant 作为虚拟机来包含我的 Rails 项目,因为 Windows 似乎随机缺乏对各种 RubyGems 的支持,因此对于任何类型的 Ruby 开发来说,Windows 都是一个糟糕的操作系统。

我的问题是:我想使用 shellscript 在单独的 DETACHED 屏幕会话中启动三个不同的命令,并分别使用各自的名称:

"rails" ==>  'rails s'
"mail"  ==>  'mailcatcher --http-ip 0.0.0.0'
"guard" ==>  'bundle exec guard --force-polling'

我尝试使用以下命令,但似乎不起作用(startup.sh)

screen -S rails -d -m rails s
screen -S mail -d -m mailcatcher --http-ip 0.0.0.0
screen -S guard -d -m bundle exec guard --force-polling

毫无效果,它似乎没有按照我的要求运行,我不知道我是不是做错了什么,还是错误地调用了屏幕。有人能解释一下这种情况吗?至于操作系统,它是 Ubuntu 12.04 LTS (Precise) x86,作为虚拟机(虽然我猜 VM 部分应该不重要。)

提前感谢大家的建议。我只是想找到一种方法来使用 shellscript 一次性启动我的 rails 项目(和相关服务),而不是每次打开 vagrant box 时都要手动启动 screen 会话。

我的另一个想法是也许弄清楚如何设置这些命令在系统启动时运行,使用cron或其他什么?

答案1

您可能希望尝试使用 screen 命令

 screen -d -m -S screen_name command 

-S选项只是指定在哪个屏幕窗口内执行以下命令。 按照-d -m说明man page

 -d -m   Start screen in "detached" mode. This creates a new session but
       doesn't  attach  to  it.  This  is  useful  for  system startup
       scripts. 

相关内容