ec2每次启动都会运行脚本

时间:2017-03-27 20:35:56

标签: python linux amazon-web-services amazon-ec2

我已经关注了几个帖子,试图在每次启动后在我的ec2实例上运行python或shell脚本,而不仅仅是第一次启动。

我试过了:

[scripts-user,always]到/etc/cloud/cloud.cfg文件

  • 将脚本添加到./scripts/per-boot文件夹

将脚本添加到/etc/rc.local

  • 是/etc/rc.local
  • 的权限已更改为755

我正在尝试将文件的输出传递到位于/ home / ubuntu /目录中的文件中,并且文件在引导后不包含任何内容。

如果我手动运行脚本(.sh或.py),它们就可以工作。

有任何建议或要求提供其他信息以提供帮助吗?

3 个答案:

答案 0 :(得分:0)

这是否符合您的要求?

它将脚本复制到实例,连接到实例,并立即运行脚本。

ec2 scp ~/path_to_script.py : instance_name -y && ec2 ssh instance_name -yc "python script_name.py" 1>/dev/null

答案 1 :(得分:0)

我读到rc.local的使用已被弃用。要尝试的一件事是/ etc / crontab中的一行,如下所示:

@reboot full-path-of-script

如果您希望将脚本作为特定用户运行,则可以在@reboot之后列出。

答案 2 :(得分:0)

所以当前的解决方案似乎是我在我的初始问题帖子中写下的一种方法,因为我可能没有完全按照以下链接中的大纲进行设置...

此链接 - > How do I make cloud-init startup scripts run every time my EC2 instance boots?

该链接显示了如何修改 /etc/cloud/cloud.cfg 文件以将 scripts-user 更新为 [scripts-user,always] < /强>

此链接也表示要将* .sh文件添加到 / var / lib / cloud / scripts / per-boot 目录。

重新启动系统后,您的脚本应该已执行,您可以在以下位置验证: sudo cat /var/log/cloud-init.log

如果您的脚本仍然无法执行,请尝试使用以下命令擦除服务器的实例状态: sudo rm -rf / var / lib / cloud / instance / *

- 注: - 看来python脚本中的打印命令不按预期管道(&gt;&gt;)但是echo命令很容易管道

无法管道 sudo python test.py >> log.txt

管道成功 echo "HI" >> log.txt