全部產品
Search
文件中心

Elastic Compute Service:建立並執行命令

更新時間:Jun 19, 2024

雲助手命令可以在ECS執行個體中快速完成運行自動化營運指令碼、輪詢進程、重設使用者密碼、安裝或者卸載軟體、更新應用以及安裝補丁等一些日常任務。本文介紹如何建立並執行雲助手命令。

前提條件

  • 執行個體的狀態必須為運行中(Running)。

  • 已安裝雲助手Agent。具體操作,請參見安裝雲助手Agent

    使用定時任務的新特性(固定時間間隔執行、僅在指定時間執行一次、基於Cron運算式定時執行時指定年份或時區)時,需確保雲助手Agent不低於以下版本:

    • Linux:2.2.3.282

    • Windows:2.1.3.282

    如果執行定時任務結果返回ClientNeedUpgrade錯誤碼,請將用戶端更新至最新版本。具體操作,請參見升級或禁止升級雲助手Agent

使用限制

建立並執行雲助手命令時,您需要注意以下事項:

  • 建立的指令碼在Base64編碼後大小說明如下:

    • 執行並儲存命令:不能超過18 KB。

    • 執行但不儲存命令:不能超過24 KB。

  • 調用API執行命令時最多可以選擇100台執行個體。您也可以申請提升配額(配額名稱為命令執行支援執行個體上限數),關於如何查詢及提升配額,請參見查看和提升資源配額

  • 在一個阿里雲地區下,您可以儲存500~50,000條雲助手命令,配額隨您的雲端服務器使用方式可能會增加。您也可以申請提升配額,關於如何查詢及提升配額,請參見ECS配額管理在立即執行命令時,如果您只執行但不儲存命令,則不佔用雲助手命令配額。

    說明

    填寫詳細的配額提升申請理由可提高審批通過率。

操作步驟

通過控制台立即執行命令

  1. 登入ECS管理主控台

  2. 在左側導覽列,選擇營運與監控 > 雲助手

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

  4. 在頁面右上方,單擊建立/執行命令

  5. 命令資訊地區,設定參數。

    名稱

    描述

    命令來源

    選擇命令來源。

    • 輸入命令內容:建立一個新命令。

    • 選擇已儲存的命令:選擇已建立的命令。

    命令類型

    選擇命令類型。

    • Linux:選擇ShellPython或者Perl

    • Windows:選擇Bat或者PowerShell

    命令內容

    編輯或者粘貼您的命令。

    有關Shell命令的樣本,請參見查看執行個體系統配置

    建立命令時,您需要自行測試命令的文法、邏輯或演算法是否正確。

    例如,假設您已在執行個體中建立了一個/backup目錄(mkdir /backup),以下Shell命令將在該目錄中歸檔一個檔案。

    #!/bin/bash 
    OF=/backup/my-backup-$(date +%Y%m%d).tgz
    tar -cf $OF {{file}}
    說明

    以上樣本命令中,{{file}}是一個自訂參數,您可以在執行命令時設定為需要歸檔的目標檔案,例如/app/usrcredential。自訂參數能滿足動態取值以及一值多用的情境。對於具有安全敏感性的資料以及隨環境變化的資料,建議您設定自訂參數,例如AccessKey、執行個體ID、授權碼、時間參數、關鍵系統檔案等。

    使用參數

    選擇是否啟用參數。

    如果您開啟了使用參數功能,在命令內容中以{{key}}格式設定自訂參數。

    說明

    一份雲助手命令中的自訂參數不能超過20個。

    您可以指定內建環境參數作為自訂參數,執行命令時無需手動對參數賦值,雲助手將為您自動替換為環境中對應的值。支援指定以下內建環境參數:

    • {{ACS::RegionId}}:地區ID。

    • {{ACS::AccountId}}:阿里雲主帳號UID。

    • {{ACS::InstanceId}}:執行個體ID。

      說明

      命令下發到多個執行個體時,如需指定{{ACS::InstanceId}}作為內建環境參數,需確保安裝雲助手Agent不低於以下版本:

      • Linux:2.2.3.309

      • Windows:2.1.3.309

    • {{ACS::InstanceName}}:執行個體名稱。

      說明

      命令下發到多個執行個體時,如需指定{{ACS::InstanceName}}作為內建環境參數,需確保安裝雲助手Agent不低於以下版本:

      • Linux:2.2.3.344

      • Windows:2.1.3.344

    • {{ACS::InvokeId}}:命令執行ID。

      說明

      如需指定{{ACS::InvokeId}}作為內建環境參數,需確保安裝雲助手Agent不低於以下版本:

      • Linux:2.2.3.309

      • Windows:2.1.3.309

    • {{ACS::CommandId}} :命令ID。

      說明

      通過調用RunCommand介面執行命令時,如需指定 {{ACS::CommandId}}作為內建環境參數,需確保安裝雲助手Agent不低於以下版本:

      • Linux:2.2.3.309

      • Windows:2.1.3.309

    執行計畫

    選擇命令執行計畫。

    • 立即執行:單擊執行執行並儲存後,系統立即執行命令。

    • 系統下一次啟動後:單擊執行執行並儲存後,執行個體下次啟動時執行命令。

    • 系統每次啟動後:單擊執行執行並儲存後,執行個體每次啟動時執行命令。

    • 定時執行:單擊執行執行並儲存後,系統在設定的時間間隔或者時間點執行命令。定時執行包括以下幾種方式:

      • 固定時間間隔執行:基於Rate運算式,按照設定的時間間隔執行命令。時間間隔支援按秒、分鐘、小時和天來選擇,適用於在固定時間間隔執行任務的情境。

        說明

        固定時間間隔執行有以下限制條件:

        • 設定的時間間隔不大於7天、不小於60秒,且需大於定時任務的逾時時間。

        • 執行間隔只基於固定頻率,與任務實際執行需要的時間無關。例如設定每5分鐘執行一次命令,任務需要2分鐘執行完成,則在任務完成3分鐘後繼續執行下一輪。

        • 建立任務時不會立即執行。例如設定每5分鐘執行一次命令,建立任務時不會立即執行一次命令,而是在任務建立完成後的5分鐘後開始執行。

      • 僅在指定時間執行一次:按照設定的時區和執行時間點執行一次命令。

        例如設定執行時間2022-05-17 17:30:50時區(GMT+8:00) Asia/Shanghai,即表示系統會在中國/上海時間,2022年05月17日17點30分50秒執行一次命令。

      • 基於時鐘定時執行:基於Cron運算式,按照設定的定時任務執行命令。重複頻率可精確到秒、分鐘、小時、日期、月份、星期、年份,在指定的時區下,根據Cron運算式推算定時任務執行時間並執行。配置靈活,適用於較複雜的定時任務執行情境。關於Cron運算式的更多資訊,請參見Cron運算式

        說明

        設定的最小時間間隔需大於或等於定時任務的逾時時間,且不小於10 秒。

        例如設定重複頻率0 0 12 ? * WED 2022時區(GMT+8:00) Asia/Shanghai,即表示系統會在中國/上海時間,2022年每個星期三中午12:00執行命令。

    命令名稱

    設定命令名稱。

    命令描述

    設定命令的描述資訊。建議設定命令用途等資訊,方便後續管理維護。

    執行使用者

    在ECS執行個體中執行命令的使用者名稱稱。

    使用最小許可權執行命令是許可權管理的最佳實務,建議您以普通使用者身份執行雲助手命令。更多資訊,請參見設定普通使用者執行雲助手命令

    預設情況下,在Linux執行個體中以root使用者執行命令,在Windows執行個體中以System使用者執行命令。

    執行路徑

    自訂命令的執行路徑。預設路徑如下:

    • Linux:預設在root使用者的/home目錄。

    • Windows:預設在C:\Windows\system32目錄。

    逾時時間

    設定命令在執行個體中的逾時時間,當執行命令的任務逾時後,雲助手將強制終止任務進程。

    單位為秒,預設為60秒,最小為10秒。如果您設定的逾時時間小於10秒,為確保命令執行成功,會被系統設定為10秒。

    標籤

    設定命令的標籤鍵標籤值,方便後續分類管理維護。

    說明
    • 當您在選擇執行個體後,單擊執行並儲存時,系統會同時為命令和命令執行設定標籤資訊。

    • 當您在選擇執行個體後,單擊執行時,系統只會為命令設定標籤資訊。

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

    說明

    受管理的執行個體是雲助手託管的非阿里雲伺服器,更多資訊,請參見阿里雲受管理的執行個體

  7. 單擊執行並儲存執行,立即開始執行任務。

通過CLI立即執行命令

單次執行命令樣本

  • 請求樣本:

    調用RunCommand介面建立一個名為update的雲助手命令,為執行個體進行系統更新。

    aliyun ecs RunCommand --RegionId 'cn-hangzhou' \
    --Name 'update' --Username 'ecs-user' --Type 'RunShellScript' \
    --CommandContent 'eXVtIC15IHVwZGF0ZQ==' \
    --Timeout '60' --RepeatMode 'Once' --ContentEncoding 'Base64' \
    --InstanceId.1 'i-bp12e0ib2ztibede****'
    說明

    半形單引號('')內為參數的樣本取值,您需要根據實際情況修改。

    主要參數說明如下,更多參數說明,請參見RunCommand

    名稱

    樣本

    描述

    RegionId

    cn-hangzhou

    地區ID。

    Name

    update

    命令名稱。

    Username

    ecs-user

    在ECS執行個體中執行命令的使用者名稱稱。

    Type

    RunShellScript

    命令類型。

    • Linux:RunShellScript

    • Windows:RunBatScript或者RunPowerShellScript

    CommandContent

    eXVtIHVwZGF0ZSAteQ==

    通過Base64編碼後的命令內容。

    Timeout

    60

    逾時時間。

    RepeatMode

    Once

    執行計畫。

    ContentEncoding

    Base64

    編碼方式。

    InstanceId.1

    i-bp12e0ib2ztibede****

    需要執行命令的執行個體ID。

  • 返回樣本:

    {
            "CommandId": "c-hz018qlm868****",
            "InvokeId": "t-hz018qlm86d****",
            "RequestId": "1D24FA80-64DB-4842-AB20-25207994418F"
    }

定時執行命令樣本

  • 請求樣本:

    調用RunCommand介面建立一個名為update的雲助手命令,在中國/上海時間2022年每天中午12:00定時為執行個體進行系統更新。

    aliyun ecs RunCommand --RegionId 'cn-hangzhou' \
    --Name 'update' --Description 'update' --Username 'ecs-user' --Type 'RunShellScript' \
    --CommandContent 'eXVtIC15IHVwZGF0ZQ==' \
    --Timeout '60' --RepeatMode 'Period' --ContentEncoding 'Base64' \
    --Frequency '0 0 12 * * ? 2022 Asia/Shanghai' \
    --InstanceId.1 'i-bp12e0ib2ztibede****'
    說明

    半形單引號('')內為參數的樣本取值,您需要根據實際情況修改。

    主要參數說明如下,更多參數說明,請參見RunCommand

    名稱

    樣本

    描述

    RegionId

    cn-hangzhou

    地區ID。

    Name

    update

    命令名稱。

    Description

    update

    命令描述。

    Username

    ecs-user

    在ECS執行個體中執行命令的使用者名稱稱。

    Type

    RunShellScript

    命令類型。

    • Linux:RunShellScript

    • Windows:RunBatScript或者RunPowerShellScript

    CommandContent

    eXVtIC15IHVwZGF0ZQ==

    通過Base64編碼後的命令內容。

    Timeout

    60

    逾時時間。

    RepeatMode

    Period

    執行計畫。

    ContentEncoding

    Base64

    編碼方式。

    Frequency

    0 0 12 * * ? 2022 Asia/Shanghai'

    定時執行命令的執行循環。

    InstanceId.1

    i-bp12e0ib2ztibede****

    需要執行命令的執行個體ID。

  • 返回樣本:

    {
            "CommandId": "c-hz018qlm868****",
            "InvokeId": "t-hz018qlm86d****",
            "RequestId": "1D24FA80-64DB-4842-AB20-25207994418F"
    }