概述
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` 命令取消任務。