Amazon EC2 執行個體啟動時執行 sh 檔案

Amazon EC2 執行個體啟動時執行 sh 檔案

我有一個啟動節點伺服器的“sh”檔案。

如果我跑步的話效果很好

sh /var/www/init_node.sh

我希望每次實例重新啟動時都運行該腳本(因此我有一個節點伺服器已啟動並正在運行)。

我將該腳本新增至我的 /etc/rc.local 檔案中,如下所示:

sh /var/www/init_node.sh 
exit 0

但是,當我重新啟動實例時,nodejs 伺服器未運行。這是一個 Ubuntu 64 實例。

我認為這並不重要,但這是我的 sh 文件的內容:

cd /var/www/myproject
eval `ssh-agent -s`
ssh-add -D
ssh-add ~/.ssh/id_rsa
git stash
git pull origin master --force
forever start express.js 

sh /etc/rc.local 

工作正常

有任何想法嗎?

答案1

我在亞馬遜實例上的 rc.local 檔案也遇到了類似的問題。結果對我來說,我在 rc.local 中的腳本有一個錯誤,除非我有 tty,否則不允許它執行。

那麼如何知道是否遇到類似的錯誤呢?使用 cloud-init 執行您的腳本。

對於我的亞馬遜 Linux 發行版,我首先編輯了/etc/init.d/cloud-init-user-scripts.

改變這一行 /usr/bin/cloud-init-run-module once-per-instance user-scripts execute run-parts ${SCRIPT_DIR} >/dev/null && success || failure

到“永遠”

/usr/bin/cloud-init-run-module always user-scripts execute run-parts ${SCRIPT_DIR} >/dev/null && success || failure

然後建立目錄mkdir /var/lib/cloud/data/scripts/var/lib/cloud/data/scripts確保您的腳本可執行位已設定。

現在您應該能夠執行sudo /etc/init.d/cloud-init-user-scripts start..然後您可以檢查/var/log/cloud-init.log錯誤。

相關內容