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 

工作正常

有任何想法吗?

我有一个类似的问题与亚马逊实例上的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中的错误。