在 EC2 实例启动后运行 bash 脚本

SSH*_*his 25 linux bash boot amazon-ec2

我在 EC2 实例上有一个脚本可以远程启动另一个实例。

一旦此实例完全加载(完成启动),我希望它自动运行 bash 脚本,执行此操作的最佳方法是什么?

我需要一切都完全启动,基本上 bash 脚本运行图像转换脚本(使用 ImageMagick 并执行几次“wget”命令)

目前,该脚本位于此处:

/home/root/beginProcess.sh

我可以通过执行手动启动它

bash beginProcess.sh

RHEL-6.2-Starter-EBS-i386

还有一个 EBS 卷附加于此,如果有帮助,谢谢!

EEA*_*EAA 34

我建议只使用user-data选项来ec2-run-instances. 它允许您向 VM 提供某种脚本,该脚本将在首次启动时运行。如果您使用的是 ubuntu 或 debian,则可以使用cloud-init,它可以对流程进行一些很好的润色。如果使用 cloud-init,您可以使用[runcmd]配置文件的部分来指定启动后要运行的任意命令。

感谢 SF 用户Eric Hammond提供用户数据页面。查看他的网站- 它有大量关于 AWS 的信息。

编辑:重新阅读后,不清楚您是要在初始启动时还是在每次启动时运行命令。以上说明仅适用于初始启动。如果你想在每次启动时运行一个命令,你有几个选项——你可以通过@rebootcron 指令运行一个命令,或者你可以将脚本添加到/etc/rc.local,它会在每次系统启动时运行。

  • 非常感谢您的回复,为了澄清我希望它在每次系统启动时都运行,`/etc/rc.local` 运行良好,干杯 (2认同)

Eri*_*ond 9

如果您使用的是cloud-init安装了该软件包的 AMI (例如 Amazon Linux 或 Ubuntu),那么您可以简单地将 bash 脚本(以 #! 开头)作为用户数据文件传递,它会在结束时自动运行启动过程。

例如,它可以很简单:

ec2-run-instances                             \
  --user-data-file /home/root/beginProcess.sh \
  --key $USER                                 \
  ami-XXXXXXXX
Run Code Online (Sandbox Code Playgroud)

这是我介绍用户数据脚本概念的文章,现在在 Amazon Linux 和 Ubuntu 等主要 EC2 AMI 中可用:http : //alestic.com/2009/06/ec2-user-data-scripts

不幸的是,您似乎想要使用 RHEL AMI。我运行了一个副本,但在第一次启动时找不到任何对 cloud-init 或运行用户数据脚本的引用,也没有对相同的工作进行测试。

我并不是说您应该为此切换 Linux 发行版,但 Amazon Linux 基于 RHEL,因此这可能对您有用。

这是我写的一篇文章,如果它第一次不起作用,它可能会帮助您调试用户数据脚本:http : //alestic.com/2010/12/ec2-user-data-output