at コマンドは、指定した 日時に一度だけコマンドやスクリプトを実行 するためのジョブスケジューラです。
定期的な実行には cron を使いますが、単発の実行予約には at が便利です。
構文(Syntax)
at [オプション] 時刻
主なオプション一覧
| オプション | 説明 | 使用例 |
|---|---|---|
| (なし) | 標準入力からコマンドを読み取り、指定時刻に実行 | at 22:00 |
-f FILE | 指定したファイルからコマンドを読み込み | at -f job.sh 23:30 |
-l または atq | 登録済みジョブを一覧表示 | atq |
-r JOBID または atrm JOBID | 指定したジョブを削除 | atrm 3 |
-m | ジョブ完了時にメールを送信(通常は出力がある場合のみ送信) | at -m now + 1 hour |
時刻指定の形式
HH:MM(今日のその時刻)midnight(深夜0時)、noon(正午)、teatime(16:00)now + N minutes/hours/days/weeks(現在から相対指定)MMDDhhmm[[CC]YY](絶対日時、例:082123302025= 2025年8月21日23:30)
実行例
22:00 にコマンドを実行
at 22:00
入力例:
echo "Backup started" >> /tmp/job.log
<Ctrl+D>
1時間後にスクリプトを実行
at now + 1 hour -f backup.sh
明日の午前9時にジョブを予約
echo "/home/alice/report.sh" | at 9am tomorrow
登録済みジョブを一覧表示
atq
出力例:
3 Thu Aug 22 09:00:00 2025 a alice
ジョブを削除
atrm 3
完了通知メールを必ず送信
at -m now + 30 minutes -f job.sh
エラー例(atd デーモンが起動していない)
at 10:00
出力例:
Cannot open /var/run/atd.pid
at: cannot open lockfile /var/spool/atjobs/.SEQ: No such file or directory
関連コマンド
crontab: 定期的にジョブを実行batch: システム負荷が低いときにジョブを実行(atの一種)systemctl status atd:atデーモンの状態確認
備考
atコマンドのジョブ管理には atd デーモン が必要です。サービスが起動していないと予約できません。- 実行環境の PATH が対話シェルと異なる場合があるため、スクリプトやコマンドはフルパスで指定することを推奨します。
- ジョブはユーザー単位で管理され、root は全ユーザーのジョブを確認・削除できます。
- 一部の環境では
/etc/at.allowと/etc/at.denyで利用ユーザーを制御できます。
参考
- manページ: man7.org at(1)
- ArchWiki: https://wiki.archlinux.org/title/At

コメント