【问题标题】:start a program when EC2 linux instance bootEC2 linux实例启动时启动程序
【发布时间】:2011-09-06 00:43:11
【问题描述】:

我有一个用 c# 编写的程序,并希望它在我的实例启动时启动。

我已经将“mono /home/ec2-user/program/program.exe”添加到 /etc/rc.local,但它什么也没做。 我该怎么办?

【问题讨论】:

    标签: linux amazon-ec2 startup boot


    【解决方案1】:

    考虑使用cloud-init(如果您使用的是 Ubuntu)或user-data start script。这些将允许您启动一个实例,以您喜欢的方式配置它(使用必要的包,如 mono),下载您自己的代码,并在实例启动后立即运行。

    这是重用实例或重新打包实例的首选方式,因为将“库存”图像转换为您自己的自定义图像所需的所有步骤都是自动化的。

    【讨论】:

    • 我读过...是 cloud-init 和 user-data 启动脚本适用于 ec2-run-instance...我现在正在使用 ec2-start-instance... . 是否可以启动实例?
    • 一般不会。 ec2-run-instance 启动一个新实例。 ec2-start-instance 恢复现有(但已停止)的实例,无论该实例在何时停止。虽然有很多方法可以让实例在第一次启动时执行操作,但没有太多方法可以让实例在启动时执行操作。考虑将您的代码编写为始终运行的守护程序,然后它将按照您的预期停止并使用实例启动。
    【解决方案2】:

    @vsekhar 是正确的,据我所知,关于实例重新启动时会发生什么。在这种情况下,守护进程是可以做到的最好的。

    但是,由于 RAM 中的所有信息都丢失了,通常只需重新启动即可。您可以启动实例并重新启动,以便正常处理启动脚本。重启可以使用ec2-reboot-instances

    【讨论】: