atコマンド(アットコマンド)とは | 意味や読み方など丁寧でわかりやすい用語解説
atコマンド(アットコマンド)の意味や読み方など、初心者にもわかりやすいように丁寧に解説しています。
読み方
日本語表記
アットコマンド (アットコマンド)
英語表記
at command (アットコマンド)
用語解説
atコマンドは、指定した未来の時刻に一度だけコマンドやスクリプトを実行するためのスケジューリングツールである。Unix系OSに標準で備わっており、システム運用やバッチ処理の自動化において基本的ながら重要な役割を担う。主に、リソースを大量に消費する処理をシステムの負荷が低い時間帯に実行したい場合や、一時的なメンテナンス作業を特定の時刻に実行したい場合などに利用される。定期的に繰り返し実行する処理にはcronコマンドが用いられるが、atコマンドは「一度きりの実行」に特化している点が大きな違いである。システムエンジニアを目指す上で、効率的なシステム運用や自動化の基礎を理解するために、atコマンドの知識は不可欠である。
atコマンドの基本的な使い方はシンプルである。まず at コマンドを実行し、その後にコマンドを実行したい時刻を指定する。すると、標準入力から実行したいコマンド列を受け付ける状態になる。例えば、深夜3時に特定のシェルスクリプト backup.sh を実行したい場合、「at 03:00」と入力した後に「/usr/local/bin/backup.sh」と入力し、最後に Ctrl+D(EOF: End Of File)を押して入力を終了する。これにより、システムは指定された時刻にそのコマンドを実行するようにジョブとして登録する。
時刻の指定方法は非常に柔軟である。例えば、具体的な時刻を HH:MM 形式で指定できる(例: 10:30)。また、日付も組み合わせて HH:MM YYYY-MM-DD 形式で指定することも可能である(例: 10:30 2024-12-25)。相対的な時刻指定も可能で、「now + 10 minutes」(今から10分後)、「now + 1 hour」(今から1時間後)、「tomorrow」(明日のこの時間)、「next week」(来週のこの時間)といった表現が利用できる。「noon」(正午)、「midnight」(真夜中)、「teatime」(午後4時)のような特定のキーワードも使用可能である。例えば、今から2時間後にログファイルを圧縮するコマンドを実行したい場合は、「at now + 2 hours」と入力し、その後に gzip /var/log/syslog と入力して Ctrl+D で終了する。複数のコマンドを実行したい場合は、それぞれのコマンドを改行して入力すればよい。
実行するコマンドが既にファイルに記述されている場合は、-f オプションを使用してファイルからコマンドを読み込ませることができる。例えば、at -f myscript.sh 18:00 と実行すれば、myscript.sh の内容が18時に実行されるジョブとして登録される。
登録したジョブは、atq コマンド(または at -l)で一覧表示できる。これにより、登録されているジョブの番号、実行時刻、登録ユーザーなどの情報が確認できる。例えば atq を実行すると、「12 2024-01-01 03:00 a root」のような表示が得られる。この「12」がジョブ番号である。不要になったジョブや間違って登録してしまったジョブは、atrm コマンドにジョブ番号を付与して削除できる。上記の例であれば、「atrm 12」と実行することでジョブが削除される。
atコマンドで実行されるジョブの環境は、atコマンドを実行した時点でのユーザーの環境変数(特にPATH)に依存しない場合がある。ジョブの実行時には、通常、限られた環境変数しか設定されていないため、コマンドのフルパスを指定するか、スクリプト内で必要な環境変数を明示的に設定することが推奨される。また、実行されたコマンドの標準出力と標準エラー出力は、通常、ジョブを登録したユーザーのメールボックスに送信される。これにより、コマンドが成功したか失敗したか、どのようなメッセージが出力されたかを確認できる。
セキュリティ面では、どのユーザーがatコマンドを使用できるかを制御するための仕組みが存在する。/etc/at.allow ファイルが存在する場合、このファイルに記述されているユーザーのみがatコマンドを使用できる。/etc/at.deny ファイルが存在し、/etc/at.allow が存在しない場合、/etc/at.deny に記述されていないすべてのユーザーがatコマンドを使用できる。もし両方のファイルが存在しない場合、通常はシステム管理者(root)のみが使用を許可されるか、すべてのユーザーが使用を許可されるかはOSのバージョンや設定によって異なる。これらのファイルを通じて、不適切なコマンドの実行を防ぎ、システムセキュリティを維持することが可能である。rootユーザーは通常、これらの制限を受けずにatコマンドを実行できる。
atコマンドは、単発のタスクスケジューリングにおいて非常に強力なツールであり、システム運用における柔軟性を高める。例えば、特定のソフトウェアのパッチ適用を深夜に一度だけ行う、データベースのインデックス再構築をシステム利用が少ない時間帯に実行する、といった具体的なシナリオで活用される。cronと合わせて理解することで、Linux/Unixシステムのスケジュール管理をより適切に行うことが可能となる。