我正在使用Web控制台启动Amazon Linux实例(ami-fb8e9292),将数据粘贴到用户数据框中以在启动时运行脚本。如果我使用亚马逊提供的示例来启动Web服务器,它会起作用。但是当我运行自己的脚本(也是一个#!/bin/bash
脚本)时,它没有被执行。
如果我查看var/log/cloud-init.log
,它对这个问题没有任何有用的信息:
May 22 21:06:12 cloud-init[1286]: util.py[DEBUG]: Running command ['/var/lib/cloud/instance/scripts/part-001'] with allowed return codes [0] (shell=True, capture=False)
May 22 21:06:16 cloud-init[1286]: util.py[WARNING]: Failed running /var/lib/cloud/instance/scripts/part-001 [2]
May 22 21:06:16 cloud-init[1286]: util.py[DEBUG]: Failed running /var/lib/cloud/instance/scripts/part-001 [2]
Traceback (most recent call last):
File "/usr/lib/python2.6/site-packages/cloudinit/util.py", line 637, in runparts
subp([exe_path], capture=False, shell=True)
File "/usr/lib/python2.6/site-packages/cloudinit/util.py", line 1528, in subp
cmd=args)
ProcessExecutionError: Unexpected error while running command.
Command: ['/var/lib/cloud/instance/scripts/part-001']
Exit code: 2
Reason: -
Stdout: ''
Stderr: ''
如果我通过SSH登录到实例并使用sudo su
,然后直接执行shell脚本:
/var/lib/cloud/instance/scripts/part-001
然后它就可以正常运行了。如果我模拟 cloud-init 的运行方式,它也能正常工作:
then it runs fine. Also, it works if I emulate the way cloud-init runs it:
->然后它就可以正常运行了。如果我模拟 cloud-init 的运行方式,它也能正常工作:
python
>>> import cloudinit.util
>>> cloudinit.util.runparts("/var/lib/cloud/instance/scripts/")
如果我故意在脚本中引入错误,使用这两种方法之一,则会产生错误消息。那么我该如何调试有用的调试输出有选择性地缺失呢?