ec2上的ubuntu上的rc.local无法正常工作

时间:2012-03-25 01:02:23

标签: ubuntu amazon-ec2 startup

以下是我的rc.local文件的内容。当我运行sudo /etc/rc.local时它工作正常。当我启动和实例。我希望monit可以安装,但事实并非如此。我完全失去了。我通常使用rc.local,但这是相当混乱的。

#!/bin/sh -e
#
# rc.local
#
# This script is executed at the end of each multiuser runlevel.
# Make sure that the script will "exit 0" on success or any other
# value on error.
#
# In order to enable or disable this script just change the execution
# bits.
#
# By default this script does nothing.

apt-get -y install monit
/etc/init.d/monit stop
cd /home/ubuntu/workspace/rtbopsConfig/
git fetch
git checkout origin/master rtb_ec2_boot/ec2_boot.py
git checkout origin/master config/
cp /home/ubuntu/workspace/rtbopsConfig/config/monit/redis/monitrc /etc/monit/
/usr/bin/python /home/ubuntu/workspace/rtbopsConfig/rtb_ec2_boot/ec2_boot.py >>  /home/ubuntu/workspace/ec2_boot.txt 2>&1

/etc/init.d/monit start
chkconfig monit on

exit 0

2 个答案:

答案 0 :(得分:4)

您可能希望使用以下命令启动脚本:

apt-get update

因为你的apt缓存可能已经过时了“apt-get install”。

您也可以通过以下两行开始调试脚本:

#!/bin/bash -ex
exec > >(tee /var/log/rc.local.log|logger -t rc.local -s 2>/dev/console) 2>&1

这会将每个命令及其输出回显到/var/log/rc.local.log,这样您就可以找出失败的错误和错误。

确保文件可执行:

sudo chmod 755 /etc/rc.local

请注意,rc.local在每次启动时运行,而不仅仅是第一次启动。系统启动一段时间后,确保再次运行它是正常的。

这是我写的一篇文章,其中详细介绍了上面的“exec”命令:http://alestic.com/2010/12/ec2-user-data-output

答案 1 :(得分:0)

在我的情况下,我意外地在rc.local中使用了CRLF line endings。将它们转换为LF结尾后,我的rc.local终于被执行了。

错误

#!/bin/sh\r\n
#\r\n
# This script will be executed *after* all the other init scripts.\r\n
# You can put your own initialization stuff in here if you don't
# want to do the full Sys V style init stuff.\r\n
\r\n
touch /var/lock/subsys/local\r\n

正确

#!/bin/sh\n
...