atコマンドで指定時刻にジョブを実行する方法|atq・atrmや書式一覧もコマンド

宮崎智広 この記事の監修:宮崎智広(Linux実務・教育歴20年以上・受講者3,100名超)
HOMELinux技術 リナックスマスター.JP(Linuxマスター.JP)Linuxコマンド, LinuxコマンドA-E, プロセス管理コマンド > atコマンドで指定時刻にジョブを実行する方法|atq・atrmや書式一覧もコマンド
「深夜3時にサーバーを再起動したいけど、わざわざ起きてコマンドを打つのか?」
「一度だけ実行したい処理があるのに、cronに書くほどでもない」
Linuxでの運用中、指定した時刻に一回だけコマンドを実行したい場面は意外と多いものです。こうした場面で活躍するのが at コマンドです。

この記事では、at コマンドの実践的な使い方を解説します。
日時の指定書式から、ジョブの確認・削除(atq/atrm)、アクセス制御、トラブル対処まで網羅しました。
【この記事でわかること】 ・atコマンドとcronの違い(ワンショット vs 定期実行)
・「at 23:00」「at now + 3 hours」など日時指定の書式パターン
・atq でジョブ一覧、atrm でジョブ削除
・/etc/at.allow と /etc/at.deny によるアクセス制御
・atdサービスが動かない時の確認手順(systemctl status atd)

「このままじゃマズい」と感じていませんか?
参考書を開く気力もない、同年代に取り残される不安——
でも安心してください。プロのエンジニアはコマンドを暗記していません。
「現場で使える型」を効率よく使いこなしているだけです。
図解60P/登録10秒/解除も3秒 / 詳細はこちら

atコマンドとは(cronとの違い)

at コマンドは、指定した日時に一度だけコマンドを実行するためのツールです。

cronが「毎日」「毎週月曜」のように定期的な繰り返し実行を行うのに対し、atは「今日の23:00に1回だけ」「3時間後に1回だけ」といった一回限りのジョブ実行に使います。

at:指定日時に一度だけ実行する(ワンショット)
cron:スケジュールに従って繰り返し実行する(定期実行)

atコマンドは、内部で atd というデーモン(常駐プロセス)が動作しており、登録されたジョブを指定時刻になったら実行します。

atコマンドの基本的な使い方

1. 指定時刻にジョブを登録する

at コマンドの基本的な書式は以下の通りです。

# 書式 $ at 時刻指定 # 例:今日の23:00にジョブを登録する $ at 23:00 at> /usr/local/bin/backup.sh at> job 1 at Mon Mar 23 23:00:00 2026

at コマンドを実行すると対話モードに入ります。実行したいコマンドを入力し、Ctrl+D(EOT)で登録を確定します。複数行のコマンドを入力すれば、それらを順番に実行してくれます。

2. 日時の指定書式を覚える

at コマンドは非常に柔軟な日時指定が可能です。よく使う書式を一覧にまとめました。

書式 意味
HH:MM 時刻を指定(今日、過ぎていれば翌日) at 23:00
noon 正午(12:00) at noon
midnight 深夜0時(00:00) at midnight
teatime 16:00 at teatime
tomorrow 翌日の同時刻 at 09:00 tomorrow
now + N単位 現在時刻からの相対指定 at now + 30 minutes
MMDDYY 月日年で日付指定 at 23:00 032526
YYYY-MM-DD ISO形式で日付指定 at 23:00 2026-03-25
月名 日 英語月名で日付指定 at 23:00 Mar 25

相対指定で使える単位は minuteshoursdaysweeks の4種類です。

# 30分後に実行 $ at now + 30 minutes # 2時間後に実行 $ at now + 2 hours # 3日後の10:00に実行 $ at 10:00 + 3 days # 1週間後に実行 $ at now + 1 weeks

※ 指定した時刻が既に過ぎている場合、翌日の同時刻にスケジュールされます。

3. ファイルからジョブを読み込む(-f)

対話モードでコマンドを入力する代わりに、シェルスクリプトや実行したいコマンドを記述したファイルを -f オプションで指定できます。

# スクリプトファイルを指定して登録する $ at -f /usr/local/bin/backup.sh 23:00 # 明日の朝9時にスクリプトを実行する $ at -f /home/admin/maintenance.sh 09:00 tomorrow

本番環境では、対話モードよりも -f でスクリプトファイルを指定する方が確実です。タイプミスの心配がなく、実行内容の記録も残ります。

4. 登録済みジョブを確認する(atq / at -l)

登録済みのジョブ一覧は atq コマンド(または at -l)で確認できます。

$ atq 3 Mon Mar 23 23:00:00 2026 a admin 5 Tue Mar 24 09:00:00 2026 a admin # at -l でも同じ結果が得られる $ at -l

表示される各列の意味は以下の通りです。

先頭の数字:ジョブ番号(削除時に使用)
日時:実行予定日時
a:キュー名(atコマンドのデフォルトキュー。batchコマンドの場合は b)
末尾の名前:ジョブを登録したユーザー名

※ root以外のユーザーは、自分が登録したジョブしか表示されません。

5. ジョブを削除する(atrm / at -d)

登録済みのジョブを削除するには、atrm コマンド(または at -d)にジョブ番号を指定します。

# ジョブ番号3を削除する $ atrm 3 # at -d でも同じ $ at -d 3 # 削除後に確認する $ atq 5 Tue Mar 24 09:00:00 2026 a admin

ジョブ番号は atq で確認してから削除しましょう。間違ったジョブ番号を指定すると、別のジョブが消えてしまいます。

応用・実務Tips

ジョブ完了をメールで通知する(-m)

-m オプションを付けると、ジョブの実行が完了した時点でメールで通知されます。

# 完了時にメール通知を受け取る $ at -m 23:00 at> /usr/local/bin/backup.sh at>

メールはジョブを登録したユーザーのローカルメールボックスに届きます。/var/spool/mail/ユーザー名 を確認するか、mail コマンドで読めます。

なお、-m を付けなくても、ジョブが標準出力や標準エラー出力を生成した場合はメールが送信されます。出力を抑制したい場合は、リダイレクトで /dev/null に捨ててください。

# 出力を抑制してメールを送らせない例 $ at 23:00 at> /usr/local/bin/backup.sh > /dev/null 2>&1 at>

atのアクセス制御(at.allow / at.deny)

atコマンドの実行を許可するユーザーは、/etc/at.allow/etc/at.deny の2つのファイルで制御されます。

評価順序は以下の通りです。

at.allowが存在する場合:このファイルに記載されたユーザーだけがatを使える(at.denyは無視される)
at.allowが存在せず、at.denyが存在する場合:at.denyに記載されたユーザー以外がatを使える
どちらも存在しない場合:rootのみがatを使える(ディストリビューションにより異なる場合あり)

ファイルの書式は1行に1ユーザー名です。

# /etc/at.allow の例(このユーザーだけがatを使える) admin operator # /etc/at.deny の例(このユーザーはatを使えない) guest testuser

多くのディストリビューションでは、デフォルトで /etc/at.deny が空の状態で存在しています。これは「全ユーザーにatの利用を許可する」という意味になります。

atとcronの使い分け

atとcronは両方ともジョブのスケジュール実行ツールですが、用途が異なります。

項目 at cron
実行回数 一度だけ 繰り返し
設定方法 コマンドで都度登録 crontabファイルに記述
用途 臨時のメンテナンス、一時的な処理 定時バックアップ、ログローテーション
実行後 ジョブは自動で消える 設定が残り続ける

使い分けの目安はシンプルです。「今回だけ」ならat、「定期的に繰り返す」ならcronです。

また、batch コマンドという関連コマンドもあります。batchはatと同様に一度だけ実行しますが、実行タイミングはシステムの負荷(ロードアベレージ)が一定以下になった時です。重い処理をサーバーの空いている時に流したい場合に使えます。

# 負荷が下がったタイミングで自動実行される $ batch at> /usr/local/bin/heavy-report.sh at>

トラブルシュート・エラー対処

「at: command not found」が出た時の対処法

at コマンドが使えない場合、atパッケージがインストールされていない可能性があります。

# RHEL / CentOS / AlmaLinux / Rocky Linux の場合 $ sudo dnf install at # Ubuntu / Debian の場合 $ sudo apt install at

インストール後は、atdサービスを起動して自動起動も有効にしておきましょう。

# atdサービスを起動する $ sudo systemctl start atd # 自動起動を有効にする $ sudo systemctl enable atd # 動作状態を確認する $ systemctl status atd

ジョブが実行されない場合の確認手順

ジョブを登録したのに指定時刻になっても実行されない場合は、以下の順番で確認してください。

1. atdサービスが起動しているか確認する

$ systemctl status atd # 「active (running)」と表示されていればOK # 「inactive」の場合は sudo systemctl start atd で起動する

2. ジョブが登録されているか確認する

$ atq # ジョブが表示されない場合は、登録時にエラーがあった可能性がある

3. at.allow / at.deny で制限されていないか確認する
自分のユーザー名が /etc/at.deny に含まれていないか、/etc/at.allow が存在する場合は自分が記載されているかを確認します。

4. ジョブ内のコマンドパスを確認する
atで実行されるジョブは、登録時の環境変数を引き継ぎますが、PATHが異なる場合があります。コマンドはフルパスで記述するのが確実です。

# NG:PATHが通っていないと実行できない at> backup.sh # OK:フルパスで指定する at> /usr/local/bin/backup.sh

5. ログを確認する
atジョブの実行ログは、システムのログに記録されます。

# journalctlでatdのログを確認する $ journalctl -u atd # または /var/log/cron を確認する(RHEL系) $ sudo cat /var/log/cron | grep atd

本記事のまとめ

at コマンドの使い方を一覧表にまとめました。

やりたいこと コマンド
指定時刻にジョブを登録する at 23:00
ファイルからジョブを登録する at -f スクリプト.sh 23:00
30分後に実行する at now + 30 minutes
明日の9時に実行する at 09:00 tomorrow
登録済みジョブを確認する atq
ジョブを削除する atrm ジョブ番号
完了時にメール通知する at -m 23:00
負荷が下がった時に実行する batch
atdサービスを起動する sudo systemctl start atd

指定した時刻にジョブを確実に実行できていますか?

コマンドの使い方を一つひとつ覚えていくのは時間がかかります。
ネットの切れ端の情報をコピペするだけでなく、現場で通用する安全なLinuxサーバー構築の「型」を体系的に身につけたい方へ、『Linuxサーバー構築入門マニュアル(図解60P)』を完全無料でプレゼントしています。

「独学の時間がもったいない」「プロから直接、現場の技術を最短で学びたい」という本気の方には、2日で実務レベルのスキルが身につく【初心者向けハンズオンセミナー】も開催しています。

無料メルマガで学習を続ける

Linuxの実践スキルをメールで毎週お届け。
登録は1分、解除もいつでも可。

登録無料・いつでも解除できます

暗記不要・1時間後にはサーバーが動く

3,100名以上が実践した「型」を無料で公開中

プロのエンジニアはコマンドを暗記していません。
「現場で使える型」を効率よく使いこなしているだけです。
その「型」を図解60Pにまとめた入門マニュアルを、完全無料でプレゼントしています。

登録10秒/合わなければ解除3秒 / 詳細はこちら

Linux無料マニュアル(図解60P) 名前とメールで30秒登録
宮崎 智広

この記事を書いた人

宮崎 智広(みやざき ともひろ)

株式会社イーネットマーキュリー代表。現役のLinuxサーバー管理者として15年以上の実務経験を持ち、これまでに累計3,100名以上のエンジニアを指導してきたLinux教育のプロフェッショナル。「現場で本当に使える技術」を体系的に伝えることをモットーに、実践型のLinuxセミナーの開催や無料マニュアルの配布を通じてLinux人材の育成に取り組んでいる。

趣味は、キャンプにカメラ、トラウト釣り。好きな食べ物は、ラーメンにお酒。休肝日が作れない、酒量を減らせないのが悩み。最近、ドラマ「フライトエンジェル」を観て涙腺が崩壊しました。