at – 指定した時刻にコマンドを1回だけ実行するコマンド

時刻設定・同期

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 で利用ユーザーを制御できます。

参考

Bash玄

はじめまして!Bash玄です。

エンジニアとしてシステム運用に携わる中で、手作業の多さに限界を感じ、Bashスクリプトを活用して業務を効率化したのがきっかけで、この道に入りました。「手作業は負け」「スクリプトはシンプルに」をモットーに、誰でも実践できるBashスクリプトの書き方を発信しています。

このサイトでは、Bashの基礎から実践的なスクリプト作成まで、初心者でもわかりやすく解説しています。少しでも「Bashって便利だな」と思ってもらえたら嬉しいです!

# 好きなこと
- シンプルなコードを書くこと
- コマンドラインを快適にカスタマイズすること
- 自動化で時間を生み出すこと

# このサイトを読んでほしい人
- Bashに興味があるけど、何から始めればいいかわからない人
- 定型業務を自動化したい人
- 効率よくターミナルを使いこなしたい人

Bashの世界に一歩踏み出して、一緒に「Bash道」を極めていきましょう!

Bash玄をフォローする

コメント