我有一个启动节点服务器的“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
工作正常
有任何想法吗?
我有一个类似的问题与亚马逊实例上的rc.local文件。 事实certificate,我对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 once-per-instance user-scripts execute run-parts ${SCRIPT_DIR} >/dev/null && success || failure
TO“永远”
/usr/bin/cloud-init-run-module always user-scripts execute run-parts ${SCRIPT_DIR} >/dev/null && success || failure
然后创build一个目录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
中的错误。