atコマンド:指定時刻に一度だけコマンドを実行
`at`コマンドは、
Unix系オペレーティングシステムにおいて、ユーザーが指定した日時や時刻に、一度だけコマンドを実行するために使用されるユーティリティです。このコマンドは、特定のタスクを将来の特定の時間に実行する必要がある場合に非常に便利です。
atコマンドの仕組み
`at`コマンドは、実行したいコマンドを標準入力から受け取り、それらを「atジョブ」としてまとめます。atジョブは、コマンドがスケジュールされた時の環境(ワーキングディレクトリや
環境変数など)を保持した状態で実行されます。
具体的には、`at`コマンドは、コマンドと実行日時を受け取ると、その情報をジョブキューに登録します。そして、`atd`というデーモンが定期的にジョブキューを監視し、実行時刻が来たジョブを起動します。
atコマンドの使用例
例えば、
C言語のプログラムをコンパイルして、その結果をメールで通知したい場合、以下のように`at`コマンドを使用できます。
bash
echo "cc -o foo foo.c" | at 11:45
この例では、`foo.c`という
C言語のファイルをコンパイルし、実行可能ファイル`foo`を生成するコマンドを、午前11時45分に実行するようにスケジュールしています。コンパイル結果は、コマンドを実行したユーザー宛にメールで送信されます。
cronとの違い
`at`コマンドとよく比較されるものとして、`cron`コマンドがあります。`cron`も同様にコマンドの実行をスケジュールするツールですが、`at`コマンドが指定した時間に一度だけ実行するのに対し、`cron`は特定の時間間隔(毎時、毎日、毎週など)でコマンドを繰り返し実行するのに適しています。`at`コマンドは、1回限りのタスクを実行するのに適しており、`cron`は定期的なタスクの実行に適していると言えるでしょう。
batchコマンド
`at`コマンドの代わりに`batch`コマンドを使用することもできます。`batch`コマンドは、システム負荷が低い場合にのみジョブを実行するようにスケジュールします。これにより、システムが高負荷の時にジョブが実行されることを防ぎ、システムの安定性を保つことができます。
Windowsにおけるatコマンド
Windows NT/2000/XPにも`at`コマンドが存在しますが、機能は
Unix系OSのものとは多少異なります。Windowsでは、より多機能な
タスクスケジューラが一般的に使用されます。
atコマンドの応用
- - 大量のデータを処理するスクリプトを、システムの負荷が低い深夜に実行する。
- - 特定の時刻にバックアップジョブを実行する。
- - 定期的なメンテナンス作業をスケジュールする。
- - 長時間かかる処理を、ユーザーがログアウトしている間に実行する。
まとめ
`at`コマンドは、指定された時間に一度だけコマンドを実行するための強力なツールです。そのシンプルさと柔軟性から、様々な場面で活用されています。ただし、定期的なタスクには、`cron`コマンドを使用するのが一般的です。
関連項目
- - cron: コマンドを定期的に実行するUnixユーティリティ。
- - launchd: macOSにおけるタスクスケジューリングシステム。
外部リンク