打开EC2实例时将启动的bash脚本

时间:2016-12-02 10:57:51

标签: javascript node.js bash amazon-ec2

我有一个EC2实例,我想编写一个脚本(以前从未完成过),这样每次我在AWS控制台中启动我的E2实例时,都会自动运行以下文件。

假设我有一个名为example.js的文件,其中包含以下内容:

var test(){
console.log('hello world');
}
test()

然后我有一个名为example2.js

的类似文件

每次运行我的EC2实例时,我都需要ssh进入它并执行node example.jsnode example2.js以运行这些功能。

但是,我想编写一个启动脚本,以便在EC2实例状态转为运行(即在线)时,我希望自己执行命令node example.jsnode example2.js

这可能吗?如果是,我在哪里放这个脚本?

我在我的EC2实例上运行了Centos图像,并且EC2实例在晚上关闭,并在早上重新开启 - 因此脚本将简化操作!

我读了这个链接,但在我的案例中无法弄清楚:http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/user-data.html

任何帮助将不胜感激。谢谢

2 个答案:

答案 0 :(得分:1)

使用pm2。它是管理节点流程的绝佳解决方案。也可以在启动机器时启动进程。

参考:http://pm2.keymetrics.io/docs/usage/startup/

这是另一个很好的教程:https://futurestud.io/tutorials/pm2-restart-processes-after-system-reboot

答案 1 :(得分:0)

特定于EC2,您可以使用'用户数据'选项,在您创建实例时可用。它需要一个脚本作为输入,将在启动时执行。

以下是它的样子:

enter image description here

要将用户数据添加到您的实例,请等到深夜,这样您就不会破坏您的应用,然后右键单击它并执行“#34;创建图像"”。

创建图像后,您可以使用它来生成一个" new"实例,使用用户数据,删除旧数据而不丢失任何内容。不要忘记重新分配旧实例的弹性IP:)

More information/documentation on aws.amazon.com