Shoeisha Technology Media

CodeZine(コードジン)

記事種別から探す

batch

システム負荷を見ながらジョブを自動実行する
2015/05/20 08:00

対応OS: linux , freebsd, solaris
batch [-f file] [-m] [-v] [TIME]

 batchコマンドは、標準入力もしくは、オプション「-f」で指定したファイルからコマンドを読み込み、指定した時刻に自動実行します。機能としては、atコマンドとほぼ同じですが、指定時刻になった時に無条件にジョブが実行されるのではなく、システムの負荷が特定の値以下になるまで待機してからジョブを実行します。

 この時、実行のきっかけとなるシステムの負荷のデフォルト値は、システムによって異なります。

オプション
① -f file
標準入力のかわりに、「file」で指定したファイルからコマンドを読み込みます。
② -m
ジョブの終了通知を自分自身にメールで送信するように設定します。
③ -v
ジョブが実行される時間を表示します。
HINT!

 ジョブの実行結果が標準出力に出されない場合には、ジョブが終了したことを知ることができません。このような場合に、オプション「-m」を指定すると有効です

引数
① TIME
ジョブを実行する時間を「hhmm」もしくは「hh:mm」の形式で指定します。省略した場合には、即時実行されます。
システムに負荷をかけずに、ホームディレクトリの内容をバックアップする
$ batch 
warning: commands will be executed using (in order)
a) $SHELL b) login shell c) /bin/sh
at> tar cvf /tmp/backup/home.tar *
at>
[Ctrl]+[D]キーを押すと、ジョブが決定して、「at>」を抜ける
job 10 at 2003-02-24 02:22
HINT!

 atコマンド・tarコマンド

バッチで実行

 UNIXシステムは、WEBシステムに代表されるようにサーバ用途として使用される場合が多いシステムといえます。これは、24時間電源切断することなく運用されるということを意味します。ですから、システムエラーなどの不慮の事故により、万が一システム停止することがあれば、すぐに元の状態に戻さなければなりません。そのためにも、バックアップという作業が非常に重要になります。筆者が管理しているUNIXマシンは、毎日データのバックアップを行っています。しかし、一般ユーザが使用している時間にバックアップしたのでは、バックアップによるシステム負荷の増大があり賢明ではありません。そこで、一般ユーザの比較的使用しない時間に、この処理をまとめて行うようにしています。これには、crontabやatコマンドを用い、指定時間に実行するように設定しています。この時間に予想よりも多くのユーザが使用している場合にも問題ないように、batchコマンドを使用して、システムの負荷を考慮に入れたバックアップスケジュールにすると万全でしょう。

UNIXコマンド辞典トップページに戻る

All contents copyright © 2005-2017 Shoeisha Co., Ltd. All rights reserved. ver.1.5