2011-06-01 166 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