6

我创建了一个自定义 Amazon AMI (Fedora) 运行一些脚本然后关闭。

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_latestshell 脚本如下所示:

#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 脚本就可以正常工作。

我错过了什么吗?

4

2 回答 2

4

好的,我终于想通了。在搜索 EC2 输出后,我发现了这一行:

“正在启动 ntstartup: sudo: 抱歉,你必须有一个 tty 才能运行 sudo”

显然 Fedora 锁定了非 tty sudo 命令。

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

  1. 以 root 身份运行“visudo”。
  2. 找到带有“Default requiretty”的行并将其注释掉(#Default requiretty)

希望这对遇到此问题的其他人有所帮助。

于 2009-02-14T07:52:03.913 回答
0

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

于 2009-02-13T18:42:33.983 回答