在ubuntu启动时运行rake任务
问题描述:
您好,我在设置rake任务时遇到了一些麻烦,这些任务在启动/重启Amazon EC2上的ubuntu实例时运行。在ubuntu启动时运行rake任务
我需要让我的实例在启动新实例时启动简单的延迟作业“rake jobs:work”命令,而无需使用ssh登录并手动运行该命令。问题是 - 我无法执行命令。它可以从终端正常工作,但不会在启动时自行启动。我试图按照this link中的说明操作,但似乎没有任何效果。
我在一个Natty 11.04实例中,我通过rvm安装了ruby和gems。
答
你需要调用一些在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
好的很好的答案 - 但我不太好在这个Ubuntu的东西 - 文件应该有一个特定类型的结局.something?我要运行任何特定的代码来使文件运行 - 或者仅仅是在目录init.d中创建一个文件就足够了? – 2011-06-01 21:45:44
好吧,我明白了!使用这个http://tips4linux.com/create-a-startup-script-for-debian-and-ubuntu-systems/,并与你的文章一起!感谢您的快速回答! – 2011-06-01 22:24:25
顺便说一句我已经注意到,当我运行“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