全部產品
Search
文件中心

Elastic Compute Service:建立/執行命令

更新時間:Sep 13, 2025

當需要對執行個體執行重複性營運任務時,例如安裝軟體、更新配置、採集日誌等,手動登入每台執行個體操作效率低下、容易出錯。雲助手支援通過指令碼(如 Shell、PowerShell)在多台目標執行個體上安全、可靠地執行任務。

操作步驟

控制台

  1. 訪問ECS控制台-雲助手

  2. 在頁面左側頂部,選擇目標資源所在的資源群組和地區。地區

  3. ECS 雲助手頁面右上方,單擊建立/執行命令

  4. 命令資訊地區,完成以下配置:

    • 命令內容:可開啟使用參數

      命令內容在Base64編碼後,選擇執行並儲存命令時不能超過18 KB,選擇執行時不能超過24 KB。
      • 自訂參數:使用{{parameter}}格式定義參數,手動賦值,能滿足動態取值以及一值多用的情境。

      • 內建參數:雲助手提供了一些內建參數,無需手動賦值,可在執行時自動替換,例如 {{ACS::RegionId}}(地區 ID)、{{ACS::InstanceId}}(執行個體 ID)等。

      #!/bin/bash
      # 樣本
      # {{name}}是自訂參數,需要在命令內容編寫完成後進行手動賦值
      echo {{name}}
      
      # {{ACS::RegionId}}是內建參數,無需手動賦值
      echo {{ACS::RegionId}}
    • 執行計畫

      • 僅預檢:只預檢此次請求,命令內容不會實際生效,檢查項包括請求參數、執行個體執行環境、雲助手Agent運行狀態等。

      • 定時執行

        • 固定時間間隔執行:基於Rate運算式,僅適用於固定的時間間隔。

          設定的時間間隔不大於7天、不小於60秒,且需大於定時任務的逾時時間。
        • 基於時鐘定時執行:基於Cron運算式,配置靈活,適用於較複雜的定時任務執行情境。

    • 執行使用者:預設為root (Linux) 或System (Windows)。建議遵循最小許可權原則,使用普通使用者執行。

    • 執行路徑:指令碼在執行個體內的執行目錄。Linux 預設在 /root 目錄下,Windows 預設在 C:\Windows\system32 目錄下。為確保指令碼在預期路徑下執行,建議在指令碼開頭使用cd命令切換目錄。

    • 逾時時間:預設為 60 秒。可設定逾時範圍為10~86400秒(24小時)。

    • 任務終止模式

      • 指令碼進程:停止任務時會終止指令碼進程。

      • 進程樹:停止任務時會終止進程樹(指令碼進程以及它建立的所有子進程的集合)。

  5. 選擇執行個體或者選擇受管理的執行個體地區,選中需要執行命令的目標執行個體。

    可選擇多台執行個體,最多支援100台。
  6. 單擊執行並儲存執行,開始執行任務。

CLI

  1. 準備命令內容

    RunCommand 介面支援將 CommandContent 參數值設定為明文內容或 Base 64 編碼後的內容。Base 64 編碼後的內容,則必須設定ContentEncoding參數為Base64。使用以下命令對指令碼內容進行Base64編碼:

    Linux / macOS

    # 編碼字串 "hello world"
    # 使用 -n 來避免末尾的分行符號被編碼
    echo -n "hello world" | base64
    # 輸出: aGVsbG8gd29ybGQ=

    Windows (PowerShell)

    # 編碼字串 "hello world"
    [Convert]::ToBase64String([System.Text.Encoding]::UTF8.GetBytes("hello world"))
    # 輸出: aGVsbG8gd29ybGQ=
  2. 執行命令

    使用aliyun ecs RunCommand命令執行。參數說明,請參見RunCommand

    • 樣本 1:在單台執行個體上立即執行命令

      # 將 "yum -y update" Base64編碼後為 "eXVtIC15IHVwZGF0ZQ=="
      aliyun ecs RunCommand --RegionId 'cn-hangzhou' \
        --Type 'RunShellScript' \
        --ContentEncoding 'Base64' \
        --CommandContent 'eXVtIC15IHVwZGF0ZQ==' \
        --InstanceId.1 'i-bp1************de01' \
    • 樣本 2:在多台執行個體上批量執行命令

      # 重複使用 --InstanceId.N 參數指定多個執行個體
      aliyun ecs RunCommand --RegionId 'cn-hangzhou' \
        --Type 'RunShellScript' \
        --ContentEncoding 'Base64' \
        --CommandContent 'eXVtIC15IHVwZGF0ZQ==' \
        --InstanceId.1 'i-bp1************de01' \
        --InstanceId.2 'i-bp1************de02' \
        --InstanceId.3 'i-bp1************de03'
    • 樣本 3:建立 Cron 定時任務

      # Frequency 參數使用 Cron 運算式和時區
      # 樣本:在上海時區,2024 年每天中午 12:00 執行
      aliyun ecs RunCommand --RegionId 'cn-hangzhou' \
        --Type 'RunShellScript' \
        --ContentEncoding 'Base64' \
        --CommandContent 'eXVtIC15IHVwZGF0ZQ==' \
        --RepeatMode 'Period' \
        --Frequency '0 0 12 * * ? 2024 Asia/Shanghai' \
        --InstanceId.1 'i-bp1************de01'
  3. 查詢執行結果

    RunCommand會返回InvokeId,使用aliyun ecs DescribeInvocationResults命令和InvokeId查詢詳細結果。參數說明,請參見DescribeInvocationResults

    # 將 t-hz018qlm86d**** 替換為您的 InvokeId
    aliyun ecs DescribeInvocationResults --RegionId 'cn-hangzhou' --InvokeId '<invoke_id>'

    返回結果中的 Output 欄位即為指令碼的標準輸出(STDOUT),ErrorInfoErrorMsg 欄位則包含錯誤資訊。

配額與限制

  • 執行個體數量:調用API執行命令時最多可以選擇100台執行個體,可申請提升配額

  • 命令儲存數量:在單個阿里雲地區下,預設可以儲存500條雲助手命令,配額隨雲端服務器使用方式可能會增加。可申請提升配額

    在立即執行命令時,如果只執行但不儲存命令,則不佔用雲助手命令配額。
  • 功能與用戶端版本依賴:部分進階功能依賴於特定版本的雲助手 Agent。更多資訊,請參見支援功能及版本

生產應用建議

  • 等冪性保障

    在通過 API 或 CLI 調用RunCommand介面時,為避免網路重試等問題導致命令重複執行,建議設定 ClientToken參數來保證等冪性

  • 監控與警示

    監控雲助手執行狀態,特別是 Failed 狀態的執行任務。通過事件匯流排(EventBridge)或CloudMonitor(CloudMonitor)訂閱雲助手事件對命令失敗事件設定警示,以便及時發現和處理問題。

常見問題

Q:如何檢查 ECS 執行個體上的雲助手 Agent 版本?

A:支援通過控制台或者登入執行個體內部查看雲助手版本。具體步驟,請參見安裝雲助手Agent

Q:建立了一個固定時間間隔執行的定時任務,它是會立即執行一次,還是會等待10分鐘後才首次執行?

A:任務不會在建立後立即執行,將在設定的時間間隔過後首次執行,並且執行間隔只基於固定頻率,與任務實際執行需要的時間無關。如果您在上午10:00建立了一個每10分鐘執行一次的任務,那麼它的首次執行時間將會是上午10:10,第二次執行時間是10:20,以此類推。

Q:命令執行失敗,如何排查?

A:1. 在控制台的執行結果頁面查看詳細的Output日誌,分析指令碼的報錯資訊。

2. 檢查命令執行使用者是否對相關檔案或目錄有讀寫執行許可權。

3. 確認指令碼文法是否正確,是否能在執行個體上本地手動執行成功。

4. 檢查執行個體狀態是否為運行中,網路是否正常。

5. 如果返回ClientNeedUpgrade錯誤,請先檢查並升級雲助手Agent

更多資訊,請參見查看執行結果及修複常見問題