我想在我的实例 (Amazon Linux AMI) 启动时运行一个 Python 程序(内部有一个无限的 while 循环作为侦听器)。我创建了一个简单的 shell 脚本,如下所示:
#!/bin/sh
python bootstrap.py > bootstrap.log
然后我将此脚本的名称添加到每次实例启动时运行的run_service.sh
文件中/etc/rc.local
。但这种简单的方法似乎不起作用,什么也没发生。我的 shell 脚本和 python 文件都在/home/ec2-user
文件夹中。我需要在 shell 脚本和 python 文件都指定完整路径rc.local
才能执行吗?
我发现 Amazon Linux AMI 是基于 CentOS/Fedora 的,而不是 Ubuntu。cloud-init 选项似乎不太清楚,因为我需要将此实例捆绑到自定义 AMI 中。
那么,我该如何以一种非常简单的方式避免使用 puppet/chef 等复杂设置呢?例如,将我的 python 文件和脚本放在哪里run_service.sh
?请给我一个简单的例子。
答案1
您可能需要提供脚本及其使用的文件的完整路径
#!/bin/sh
python /home/ec2-user/bootstrap.py &>/home/ec2-user/bootstrap.log
(你可能需要 /usr/bin/python)
在 rc.local 中
/home/ec2-user/run_service.sh 2>/tmp/myservicestart.log
还要确保 run_service.sh 是可执行的。