我最近开始进行 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.