云助手命令可以在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" }