我有一個啟動節點伺服器的“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
錯誤。