2011-06-01 168 views
1

您好,我在设置rake任务时遇到了一些麻烦,这些任务在启动/重启Amazon EC2上的ubuntu实例时运行。在ubuntu启动时运行rake任务

我需要让我的实例在启动新实例时启动简单的延迟作业“rake jobs:work”命令,而无需使用ssh登录并手动运行该命令。问题是 - 我无法执行命令。它可以从终端正常工作,但不会在启动时自行启动。我试图按照this link中的说明操作,但似乎没有任何效果。

我在一个Natty 11.04实例中,我通过rvm安装了ruby和gems。

回答

3

你需要调用一些在bash脚本,看起来像这样:

su - deploy -c "cd $RAILS_ROOT && rake RAILS_ENV=development jobs:work" >> $RAILS_ROOT/log/myjob.log 2>&1 

然后从你的/etc/init.d/mystartup_filename调用它。该文件可能看起来像这样︰

#! /bin/sh 
RAILS_ROOT="/home/deploy/rails_root" 
ENV="development" 

case "$1" in 
    start) 
    echo -n "Starting my job: " 
    su - deploy -c "cd $RAILS_ROOT && rake RAILS_ENV=$ENV jobs:work" >> $RAILS_ROOT/log/myjob.log 2>&1 
    echo "done." 
    ;; 
    stop) 
    echo -n "Stopping my job: " 
    su - deploy -c "cd $RAILS_ROOT && rake RAILS_ENV=$ENV jobs:stopwork" >> $RAILS_ROOT/log/myjob.log 2>&1 
    echo "done." 
    ;; 
    *) 
    echo "Usage: $N {start|stop}" >&2 
    exit 1 
    ;; 
esac 

exit 0 
+0

好的很好的答案 - 但我不太好在这个Ubuntu的东西 - 文件应该有一个特定类型的结局.something?我要运行任何特定的代码来使文件运行 - 或者仅仅是在目录init.d中创建一个文件就足够了? – 2011-06-01 21:45:44

+1

好吧,我明白了!使用这个http://tips4linux.com/create-a-startup-script-for-debian-and-ubuntu-systems/,并与你的文章一起!感谢您的快速回答! – 2011-06-01 22:24:25

+0

顺便说一句我已经注意到,当我运行“ps -ef”时,我看到3个进程在应用脚本之后运行: ubuntu 843 842 0 23:46? 00:00:00 su - ubuntu -c cd/home/ubuntu/webprojects/autouncle && rake RAILS_ENV = production jo ubuntu 856 843 0 23:46? 00:00:00 -su -c cd/home/ubuntu/webprojects/autouncle && rake RAILS_ENV =生产作业:工作 ubuntu 953 856 10 23:46? 00:00:18 /home/ubuntu/.rvm/rubies/ruby-1.9.2-p180/bin/ruby/home/ubuntu/.rvm/gems/ruby-1.9。 这是否有任何意义? – 2011-06-01 23:50:52