查看执行结果及修复常见问题

在ECS管理控制台执行云助手命令与您登录实例后运行命令一样,只有满足所需条件后,命令才会运行成功。建议您在执行命令后查看命令执行结果与状态,确保目标操作已完成。如果执行失败,可以根据常见错误信息定位并修复问题。

背景信息

当出现ECS实例缺乏相关依赖、网络异常、命令语义错误、脚本调试失败或者实例状态异常等情况时,命令会呈现不同的执行状态与执行结果。您可以通过控制台或API查看执行结果中的错误信息、诊断并修复问题。

查看执行结果

通过控制台查看执行结果

  1. 登录ECS管理控制台

  2. 在左侧导航栏,选择运维与监控 > 云助手

  3. 在页面左侧顶部,选择目标资源所在的资源组和地域。地域

  4. 单击命令执行结果页签,查看命令执行结果。

    • 如果命令执行成功,在执行结果中查看输出信息。

      1. 找到执行状态执行成功的命令执行结果。

      2. 操作栏中,单击查看

      3. 实例列表页面的执行完成页签,查看命令执行结果。查看执行结果

    • 如果命令执行失败,在执行结果中查看错误信息,并根据错误信息诊断和修复问题。

      1. 找到执行状态执行失败的命令执行结果。

      2. 操作栏中,单击查看

      3. 实例列表页面的执行失败页签,查看执行失败的错误信息。

        常见错误信息及修复建议,请参见执行失败常见错误及修复建议

        执行失败错误信息

    • 查看定时执行任务的输出信息。

      1. 找到执行状态等待执行的命令执行结果。

      2. 操作栏中,单击查看

      3. 实例列表页面,查看命令执行结果。

        以下示例为每隔15分钟执行一次的命令执行结果。

        定时任务执行结果

通过CLI查看执行结果

如果您通过CLI或OpenAPI使用云助手,可以调用DescribeInvocationsDescribeInvocationResults查询云助手命令执行结果。如果执行失败,您可以根据返回值中的ErrorCodeErrorInfo字段了解错误信息。

以下示例介绍如何在CLI中调用DescribeInvocationsDescribeInvocationResults接口。

  • 调用DescribeInvocations接口查看命令执行状态。

    aliyun ecs DescribeInvocations --RegionId TheRegionId --InvokeId your-invoke-id
  • 调用DescribeInvocationResults查看指定实例的命令的实际执行结果。

    aliyun ecs DescribeInvocationResults --RegionId TheRegionId --InstanceId i-bp1g6zv0ce8og******p --InvokeId your-invoke-id

执行失败错误及修复建议

常见错误

错误码

错误信息

修复建议

InstanceNotRunning

创建任务时,该实例不在运行中。

请确认实例是否正常运行。

InstanceRestarted

实例在任务执行期间被重启。

请不要在执行任务时重启实例。

ClientNotRunning

云助手Agent未运行。

因为云助手Agent已停止或未安装,请按照以下步骤启动或安装云助手Agent

  1. 检查云助手Agent对应进程是否正常运行。

    • Linux:执行以下命令。

      ps -ef |grep aliyun-service
    • Windows:在任务管理器中查看是否存在aliyun_assist_service进程。

  2. 如果进程不存在,则启动云助手Agent

    • Linux:执行以下命令。

      #Linux系统支持systemctl
      systemctl start aliyun.service
      
      #Linux系统不支持systemctl
      /etc/init.d/aliyun-service start
    • Windows:通过服务管理器启动Aliyun Assist Service服务。

说明

如果以上操作还未能启动云助手Agent,请重新安装云助手。具体操作,请参见安装云助手Agent

ClientNetworkBlocked

实例网络环境异常。

  1. 执行以下命令检查网络连通性,如果返回当前实例的ID,则表示网络正常。

    curl https://{region-id}.axt.aliyun.com/luban/api/instance/instance-id
  2. 如果没有返回当前实例的ID,请从安全组、防火墙、DNS设置和路由表等方面排查网络问题。您需要在内网出方向放行TCP 443、TCP 80、UDP 53端口,确保云助手能够内网访问以下地址:

    • https://{region-id}.axt.aliyun.com:443/

    • http://100.100.100.200:80/

    • http://aliyun-client-assist-{region-id}.oss-{region-id}-internal.aliyuncs.com

      因为云助手Agent安装包所在的OSS存储空间为私有访问权限,只有对应的安装包文件为公共读权限,所以在您验证该域名的连通性时,返回“AccessDenied”信息即表示该域名可以正常连通。

说明
  • {region-id}表示实例所在的地域,例如杭州为cn-hangzhou

  • 各地域云助手服务器的域名与IP地址,请参见精细配置

SecurityGroupRuleDenied

安全组规则拒绝访问云助手服务。

  • 请查看ErrorInfo字段中拒绝访问云助手服务的安全组ID与云助手服务IP,修改安全组规则为允许访问云助手服务。

  • 具体配置请参考配置云助手Agent网络权限

ClientNotResponse

云助手Agent未响应。

请结合云助手Agent的日志进行排查。

  1. 打开云助手Agent的日志文件,日志文件默认路径如下所示。

    • Linux:/usr/local/share/aliyun-assist/<云助手版本号>/log/aliyun_assist_main.log

    • Windows:C:\ProgramData\aliyun\assist\<云助手版本号>\log\aliyun_assist_main.log

  2. 查询日志中是否存在对应的命令执行ID。

    • 如果存在此ID,检查上下文中是否有异常信息,例如云助手命令是否执行完毕及是否上报成功。

    • 如果不存在此ID,则重新执行云助手命令。如果重新执行还是失败,则建议重启云助手Agent

      • Linux系统:执行以下命令。

        #Linux系统支持systemctl
        systemctl restart aliyun.service
        
        #Linux系统不支持systemctl
        /etc/init.d/aliyun-service restart
      • Windows:通过服务管理器启动Aliyun Assist Service服务。

ClientNeedUpgrade

云助手Agent需要升级以支持指定特性。

  • 请查看ErrorInfo字段中特性及最低支持版本号,至少升级云助手Agent到特定版本。

ClientNotOnline

云助手Agent未连接到服务器。

请重新启动云助手Agent,具体操作,请参见启动、停止或者卸载云助手Agent。如果重新启动后云助手Agent仍然无法连接到服务器,请提交工单排查。

DeliveryTimeout

云助手服务端向云助手Agent下发任务失败。

云助手命令尚未下发到实例中,建议重新执行,如果执行多次还是失败,请提交工单排查。

ExecutionTimeout

命令执行超时。

请根据需要延长命令执行超时时间。

  • 如果在控制台创建并执行命令,超时时间默认为60秒,请设置为适当的值。

  • 如果调用RunCommand执行命令,Timeout默认取值60秒,请设置为适当的值。

  • 如果调用CreateCommand创建命令并调用InvokeCommand执行命令,在创建命令时Timeout默认取值60秒,请在创建命令时设置为适当的值,或者在创建命令后调用ModifyCommand修改为适当的值。

ExecutionException

命令执行发生异常。

请查看ErrorInfo字段提示的详细错误信息。如果无法通过错误信息定位问题,请提交工单排查。

ExitCodeNonzero

命令执行结束,但命令进程的退出码非0。

请检查命令脚本内容以及命令的输出信息。

ClientRestarted

云助手Agent重启导致任务中断。

请在重启完成后重新执行。您可以在云助手控制台或调用DescribeCloudAssistantStatus查看云助手Agent运行状态。

InstanceReleased

执行命令期间,实例被释放。

执行命令期间实例被释放,无法执行。

DirectoryNotExists

实例内不存在指定的运行目录。

请在实例中创建指定的运行目录,再执行命令。

执行命令

错误码

错误信息

修复建议

ClientIsUpgrading

云助手Agent正在升级中。

请在升级完成后重新执行。您可以在云助手控制台或调用DescribeCloudAssistantStatus查看云助手Agent运行状态。

InstanceDeregistered

托管实例已经注销。

执行命令时托管实例已经注销,无法执行。

InvalidSystemBuiltInParameter

内置环境参数不合法。

不支持您指定的内置环境参数,内置环境参数说明,请参见RunCommandCommandContent参数说明。

DefaultWorkingDirectoryNotAvailable

实例中默认的运行目录不可用。

请检查实例中默认的运行目录:

  • Linux系统实例默认在管理员(root用户)的home目录下,即/root

  • Windows系统实例默认在云助手Agent进程所在目录,例如C:\Windows\System32

您也可以在执行命令时指定运行目录,可通过云助手控制台或RunCommandWorkingDir指定。

CommandNotApplicable

命令类型不适用于指定的实例。

各命令类型支持的实例操作系统如下:

  • RunBatScript:适用于Windows实例的Bat命令。

  • RunPowerShellScript:适用于Windows实例的PowerShell命令。

  • RunShellScript:适用于Linux实例的Shell命令。

InvalidCommandText

命令内容不合法。

请检查命令内容,命令内容可以是明文内容或Base64编码后的内容。

CommandContentDecodeError

命令内容解码失败。

若命令内容指定了Base64编码,请检查Base64编码是否正确。

AccountNotExists

实例内不存在指定的用户。

请在实例中创建指定的用户后再执行命令。

  • Linux系统的ECS实例,默认以root用户执行命令。

  • Windows系统的ECS实例,默认以System用户执行命令。

您也可以在执行命令时指定已存在的其他用户执行命令,可通过云助手控制台或RunCommandUsername指定。

定时执行命令

错误码

错误信息

修复建议

BadCronExpression

指定的Cron表达式不合法。

请修改Cron表达式,更多信息,请参见基于时钟定时执行

CronExpressionExpired

Cron表达式过期,对应的定时任务不会执行。

执行命令时请不要指定已过期的Cron表达式。

InvalidGMTOffsetForTimezone

Cron表达式中指定的GMT偏移时区格式不合法。

请检查GMT偏移时区格式。

支持的GMT范围:GMT-12:59至GMT+14:59,分钟位允许0~59任意值,小时位不支持添加前导零。

InvalidGMTOffsetHourForTimezone

Cron表达式中指定的GMT偏移小时值不合法。

请检查GMT偏移时区的小时值。

支持的GMT范围:GMT-12:59至GMT+14:59,小时位不支持添加前导零。

InvalidGMTOffsetMinuteForTimezone

Cron表达式中指定的GMT偏移分钟值不合法。

请检查GMT偏移时区的分钟值。

分钟位允许0~59任意值。

TimezoneInformationCorrupt

由于时区文件损坏等原因,导致云助手Agent无法解析时区信息。

  • Linux实例:请检查/usr/share/zoneinfo目录下是否有对应的时区文件,例如/usr/share/zoneinfo/Asia/Shanghai是中国/上海时区的文件。

  • Windows实例:请检查注册表中是否有对应的时区文件,如HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Time Zones

说明

若不存在对应的时区文件,请创建正确的时区文件后再执行命令。

InvalidRateExpression

Rate表达式不合法。

请修改Rate表达式,更多信息,请参见固定时间间隔执行

RateFrequencyTooLarge

Rate表达式中指定的定时执行频率过大

定时执行频率不能大于7天。

InvalidAtExpression

时间戳(At表达式)不合法

请修改时间戳,更多信息,请参见仅在指定时间执行一次

AtExpressionExpired

时间戳(At表达式)过期,对应的定时任务不会执行。

执行命令时请不要指定已过期的时间戳。

在容器内执行命令

错误码

错误信息

修复建议

InvalidContainerName

容器名称不合法。

容器名称必须以数字、字母开头,只能包含数字、大小写字母、特殊字符中的半角句号(.)、下划线(_)、短划线(-),不能超过255个字符。

UnsupportedContainerRuntime

不支持容器ID中包含的容器运行时

仅支持由Kubernetes通过CRI规范管理的且在dockercontainerdcri-o容器运行时上运行的容器。

InvalidContainerId

容器ID不合法。

仅支持64位16进制字符串,允许存在docker://containerd://或者cri-o://前缀来明确指定的容器运行时。

ContainerConnectFailed

无法连接到容器。

请查看容器是否在运行中,可以使用kubectl或云助手Agent查看容器状态,StateRunning表示容器在运行中。更多信息,请参见使用云助手在容器内执行命令

  • 若容器在运行中,请检查容器运行时。仅支持由Kubernetes通过CRI规范管理的且在docker、containerd、cri-o容器运行时上运行的容器。

  • 若容器运行时符合云助手限制,请检查通过容器执行的命令是否符合要求。更多信息,请参见使用限制

ContainerStateAbnormal

容器状态异常。

请检查容器状态,只有运行中的容器才能通过云助手执行命令,可以使用kubectl或云助手Agent查看容器状态,StateRunning表示容器在运行中。更多信息,请参见使用云助手在容器内执行命令

ContainerNotFound

容器不存在

请检查对应名称或ID的容器是否存在。

方法一:使用kubectl查看

kubectl --namespace <指定namespace> describe pod <指定pod>

方法二:使用云助手Agent查看

aliyun-service list-containers --source cri --all

更多信息,请参见使用云助手在容器内执行命令

ContainerNameDuplicated

节点存在同名容器,无法识别出待执行命令的容器。

  • 当指定容器名称执行命令时,节点中不允许存在同名容器。

  • 您也可以指定容器ID执行命令,使用kubectl或云助手Agent查看容器ID。更多信息,请参见使用云助手在容器内执行命令

ContainerNameAndIdNotMatch

容器ID与容器名称不匹配。

您指定的容器ID与容器名称不对应同一个容器,请检查容器ID与容器名称是否正确。

非默认用户(System)在Windows实例中执行命令

当以非默认用户(System)在Windows实例中执行命令时可能出现以下问题。

错误码

错误信息

修复建议

UserOrPasswordInvalid

用户名或密码不正确。

用户名称或对应用户的密码不正确。关于用户名称及密码说明,请参见加密参数设置普通用户执行云助手命令

QueryParameterStoreFailed

从Parameter Store拉取参数失败。

请检查系统运维管理的参数仓库中是否有对应的密码信息,更多信息,请参见加密参数

InstanceRoleInvalid

Instance Role没有被授予给实例。

请调用DescribeInstanceRamRole查看实例中是否有对应的RAM角色。

停止命令

错误码

错误信息

修复建议

TerminationException

任务停止失败。

请查看ErrorInfo字段提示的详细错误信息,或重试停止任务。

发送文件

错误码

错误信息

修复建议

FileAlreadyExists

相同路径下存在同名文件。

您可以通过以下方案解决:

  • 删除路径下的同名文件。

  • 允许覆盖同路径下的同名文件。

    • 云助手控制台:上传文件时开启是否覆盖

    • OpenAPI:调用SendFile时,Overwrite参数设置为true。

3、修改文件下发目标ECS实例中的路径或名称。

FileNameInvalid

文件名不合法。

请调整文件名称以符合Windows或Linux操作系统的文件命名规范。

  • 云助手控制台:上传文件时,文件名称符合规范要求

  • OpenAPI:调用SendFile时,Name参数符合规范要求

FilePathInvalid

文件路径不合法。

请调整文件路径,以符合Windows或Linux操作系统的文件路径规范。

  • 云助手控制台:上传文件时,目标路径符合文件路径规范。

  • OpenAPI:调用SendFile时,TargetDir参数符合文件路径规范。

FileAuthorityInvalid

文件权限不合法。

请调整文件权限,只对Linux实例生效,设置方式与chmod命令相同。

UserGroupNotExists

实例内不存在指定的用户组。

用户组默认为root。请在Linux实例中创建对应的用户组。

参考命令:groupadd <groupname><groupname>为待创建的用户组名称。