雲助手命令可以在ECS執行個體中快速完成運行自動化營運指令碼、輪詢進程、重設使用者密碼、安裝或者卸載軟體、更新應用以及安裝補丁等一些日常任務。本文介紹如何建立並執行雲助手命令。
前提條件
執行個體的狀態必須為運行中(Running)。
已安裝雲助手Agent。具體操作,請參見安裝雲助手Agent。
使用定時任務的新特性(固定時間間隔執行、僅在指定時間執行一次、基於Cron運算式定時執行時指定年份或時區)時,需確保雲助手Agent不低於以下版本:
Linux:2.2.3.282
Windows:2.1.3.282
如果執行定時任務結果返回
ClientNeedUpgrade
錯誤碼,請將用戶端更新至最新版本。具體操作,請參見升級或禁止升級雲助手Agent。
使用限制
建立並執行雲助手命令時,您需要注意以下事項:
操作步驟
通過控制台立即執行命令
登入ECS管理主控台。
在左側導覽列,選擇 。
在頁面左側頂部,選擇目標資源所在的資源群組和地區。
在頁面右上方,單擊建立/執行命令。
在命令資訊地區,設定參數。
名稱
描述
命令來源
選擇命令來源。
輸入命令內容:建立一個新命令。
選擇已儲存的命令:選擇已建立的命令。
命令類型
選擇命令類型。
Linux:選擇Shell、Python或者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秒。
標籤
設定命令的標籤鍵和標籤值,方便後續分類管理維護。
說明當您在選擇執行個體後,單擊執行並儲存時,系統會同時為命令和命令執行設定標籤資訊。
當您在選擇執行個體後,單擊執行時,系統只會為命令設定標籤資訊。
在選擇執行個體和選擇受管理的執行個體地區,選中需要執行命令的目標執行個體。
說明受管理的執行個體是雲助手託管的非阿里雲伺服器,更多資訊,請參見阿里雲受管理的執行個體。
單擊執行並儲存或執行,立即開始執行任務。
通過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" }