batchは、コマンドをバッチキューで実行されるようスケジュールする
実態としては、以下のatコマンドに等しい。
at -q b -m now
atコマンドはジョブを積むキューに名前をつけられるのだが、bという名前の特別に予約されたキューに積む。そして実行が終了したらユーザーにメール通知する。直ちに実行する。
bという名前のキューはシステムのロードアベレージが低いときのみ実行される仕組みであったようだ。
実は当初のPOSIX規格では、batchはatとは独立したコマンドだったようだ。どうやら規格化をする際に賢いことをしようと考えた連中がいるらしく、batchキューを制御するqから始まるコマンド群が定義されたのだが、そんなことをしても歴史的経緯がある既存の実装が規格に合わせて変更されるはずもなく、結局実態に合わせてatに紐づく仕様に差し戻されたのだそうだ。
そして今ではatコマンドもろとも同梱されなくなってしまった。
https://pubs.opengroup.org/onlinepubs/9699919799/utilities/batch.html