2011-08-27 147 views
2

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

我已经在/etc/rc.local中添加了“mono /home/ec2-user/program/program.exe”,但它什么也没做。 我需要做什么?

回答

2

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

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

+0

我读过的内容是云初始化和用户数据启动脚本是用于ec2-run-instance ... 我现在使用的是ec2-start-instance ......是否有可能为开始实例? – bill

+2

一般不会。 'ec2-run-instance'启动一个新的实例。 'ec2-start-instance' **在实例停止时的任意点恢复一个现有的(但是停止的)实例。尽管有很多方法可以让实例在第一次启动时执行某些操作,但在启动时没有太多办法让实例执行操作。考虑将代码编写为一个始终运行的守护进程,然后它将停止并按照您的预期从该实例开始。 – vsekhar

+0

+1好的建议。 – Iterator

0

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

但是,由于RAM中的所有信息都已丢失,因此重新启动通常是可以的。您可以启动该实例并重新启动,从而允许正常处理启动脚本。重新启动时,您可以使用ec2-reboot-instances