文档

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

更新时间:

在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:通过服务管理器启动AliyunService服务。

说明

如果以上操作还未能启动云助手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地址,请参见精细配置

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:通过服务管理器启动AliyunService服务。

ClientNeedUpgrade

云助手Agent需要升级。

请启用云助手Agent的自动升级功能,或者手动升级云助手Agent。具体操作,请参见升级或禁止升级云助手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角色。

发送文件

错误码

错误信息

修复建议

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>为待创建的用户组名称。

  • 本页导读 (1)
文档反馈