2009-02-13 122 views
6

我创建了一个自定义Amazon AMI(Fedora),它运行几个脚本,然后关闭。EC2上的启动脚本

AMI的问题在于,如果我的代码发生更改,AMI实例在执行之前必须获取最新的脚本。

我写了一个shell脚本&把它放在/etc/init.d/nt_startup

为了保持代码的更新,我在代码库执行git pull shell脚本,然后执行该脚本。

问题是,git pull在实例启动时似乎不运行,但python脚本运行得很好。我失踪不知道......这里的启动脚本:

#!/bin/bash 
# 
# ec2 Startup script for EC2 machines 
# 
# chkconfig: 345 99 02 
# description: Script used to issue startup and shutdown commands. 
# 

if [ "$1" = "start" ]; then 
/usr/scripts/code/git_latest 
python /usr/scripts/code/process.py 
exit 
fi 

if [ "$1" = "stop" ]; then 
#nothing 
exit 
fi 

/usr/scripts/code/git_latest shell脚本是这样的:

#pulls in the latest code from the repository 
cd /usr/scripts/code 
sudo git pull 

应该拉下最新process.py脚本。

奇怪的是,如果我ssh进入我的实例并手动执行启动脚本(/etc/init.d/nt_startup "start"),git脚本工作得很好。

我错过了什么吗?

回答

3

好的,我终于明白了。淘EC2输出后,我发现这条线:

“启动ntstartup:须藤:对不起,你必须有一个tty运行sudo的”

显然的Fedora锁住了五种:sudo的命令。

快速搜索导致的解决方案:

  1. 以root身份运行 “visudo命令。”
  2. 查找与“默认requiretty”的行并注释掉(#默认requiretty)

希望这是别人谁运行到这个问题有帮助。

0

你必须在/etc/rc?.d中加入启动链接。您可以使用chkconfig(8)或ntsysv(8)来帮助您管理这些目录。

+0

process.py脚本正在启动时执行......所以我不认为这是问题所在。这只是“git pull”没有被执行。 – Mark 2009-02-13 18:50:44

+0

顺便说一句,我做了上述建议(#chkconfig:345 99 02),仍然没有运气...我会认为是git调用失败,因为网络尚未初始化或什么? – Mark 2009-02-14 03:08:29