概述
batch 屬於 at 命令系列,是一個監控系統負載並在負載較低時執行任務的排程器。主要用於在系統使用率較低的時間自動處理資源密集型任務。batch 在內部使用 at 命令的 'b'佇列,該佇列的任務僅在系統平均負載低於 0.8 時執行。
主要特點
- 基於系統負載執行:平均負載低於 0.8 時開始任務
- 使用類似於 at 命令的語法排程任務
- 適合在背景處理資源密集型任務
- 任務完成時可透過電子郵件通知使用者(利用 at 選項)
主要選項
batch 命令本身沒有太多直接的命令列選項,主要從標準輸入或檔案接收要執行的命令。以下是將命令傳遞給 batch 的主要方法。
命令輸入方式
生成的命令:
請試著組合命令。
這個 Django 應用程序是一個技術指南文檔,旨在為用戶輕鬆解釋 Linux 的各種命令。
`batch` 執行命令。
請將上述選項組合在一起,與 AI 一同虛擬執行命令。
使用範例
使用 batch 命令在系統負載較低時執行特定任務的方法。
透過標準輸入排程簡單命令
batch
ls -l > /tmp/batch_output.txt
<EOT>
當系統負載降低時,將目前目錄的檔案列表儲存到 /tmp/batch_output.txt。
透過管道排程多個命令
echo -e "echo 'Batch job started at $(date)'\nls -a\necho 'Batch job finished'" | batch
使用 echo 命令將多行命令透過管道傳遞給 batch 排程。
排程執行腳本檔案
echo '#!/bin/bash\necho "Hello from batch!" > /tmp/batch_hello.txt\ndate >> /tmp/batch_hello.txt' > my_script.sh
chmod +x my_script.sh
batch -f my_script.sh
建立 my_script.sh 檔案後,使用 batch 排程該腳本。(my_script.sh 檔案必須具有執行權限。)
安裝
batch 命令是 `at` 套件的一部分。大多數 Linux 發行版可能預設不包含此命令,如果需要,可以使用以下命令進行安裝。
Debian/Ubuntu 系統
sudo apt update && sudo apt install at
CentOS/RHEL/Fedora 系統
sudo yum install at
提示與注意事項
使用 batch 命令時的實用提示和注意事項。
主要考量
- 負載標準:batch 在系統平均負載低於 0.8 時開始任務。此值可能因系統設定(如
/etc/at.deny或/etc/at.allow檔案)而異,並受atd守護進程的設定影響。 - 環境變數:透過 batch 執行的任務可能不會繼承目前 shell 的環境變數。因此,建議在腳本中明確設定所需的 PATH 或其他環境變數。
- 檢查日誌:如果任務未按預期執行或發生錯誤,可以檢查系統日誌(例如
/var/log/syslog、/var/log/messages或journalctl -u atd)以找出問題原因。 - 任務管理:可以使用
atq命令查看已排程的 batch 任務,並使用atrm命令取消任務。