当我的 EC2 实例开始安装包、拉取代码然后启动一个长时间运行的任务时,我会使用我的 cloud-init 启动脚本,该任务可能会运行数天:
su - username -c 'python /path/script.py'
如果脚本在此行停留数天,这是否是 cloud-init 的问题?如果是这样,在允许 cloud-init 脚本结束的同时让脚本运行的最佳方法是什么?
当我的 EC2 实例开始安装包、拉取代码然后启动一个长时间运行的任务时,我会使用我的 cloud-init 启动脚本,该任务可能会运行数天:
su - username -c 'python /path/script.py'
如果脚本在此行停留数天,这是否是 cloud-init 的问题?如果是这样,在允许 cloud-init 脚本结束的同时让脚本运行的最佳方法是什么?
在允许 cloud-init 脚本结束的同时让脚本运行的最佳方法是什么?
我会使用'at'命令,例如
echo "python /path/script.py"|at now +3 minutes
该脚本将在该命令后 3 分钟内运行,并且 cloud-init 脚本将继续运行,无需等待 script.py。
可能有问题su
,所以从根目录运行脚本会更简单,当然如果可以接受的话。
事实证明,让 cloud-init 脚本运行数小时不是问题。AWS 似乎没有适当的机制来杀死几个小时后没有终止的 cloud-init 脚本。