at:一度だけ実行

atコマンド

Linuxで一度だけ実行する自動処理:atコマンドの概要と基本操作

Linux環境では cron や systemd timer などの「定期実行」の仕組みが広く利用されていますが、 一度だけ、指定した日時に実行したい というケースも多く存在します。

そのような場面で活躍するのが at コマンド です。

at は、指定した日時にコマンドやスクリプトを一度だけ実行するための仕組みであり、 バッチ処理、メンテナンス作業、臨時タスクなどに適しています。 本記事では、at コマンドの基本概要から実際の使い方、運用上の注意点までを整理します。

atコマンドとは何か

at は、指定した時刻にコマンドを一度だけ実行するためのスケジューリングツールです。 cron のような繰り返し実行ではなく、 単発実行(ワンショット実行) が特徴です。

内部的には atd というデーモン(常駐プロセス)が動作しており、 登録されたジョブを管理・実行します。

そのため、at を使用するには atd が起動している必要があります。

atコマンドが適している場面

  • 数時間後にサーバーを自動停止したい
  • 深夜に一度だけバックアップを実行したい
  • メンテナンス終了後に再起動を予約したい
  • 一時的なバッチ処理を実行したい

定期実行が不要で「今回だけ実行したい」という場面では、 cron よりも at の方がシンプルで適しています。

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

1. 基本構文

at 実行時刻

このコマンドを実行すると、対話モードに入り、 実行したいコマンドを入力します。

入力が終わったら Ctrl + D を押して確定します。

2. 具体例

1時間後にサーバーをシャットダウンする場合:

at now + 1 hour
shutdown -h now
Ctrl + D

今日の23時にバックアップを実行する場合:

at 23:00
/usr/local/bin/backup.sh
Ctrl + D

特定の日付を指定することも可能です。

at 2026-03-01 02:00

時刻指定の書き方

at では柔軟な時間指定が可能です。

  • now + 5 minutes
  • now + 2 hours
  • now + 3 days
  • midnight
  • noon
  • tomorrow

英語ベースの自然な表現で指定できる点が、 cron と大きく異なる特徴です。

ジョブの確認・削除

登録済みジョブの確認

$ atq

登録されているジョブ一覧が表示されます。

ジョブの削除

$ atrm ジョブ番号

atq で表示されたジョブ番号を指定して削除できます。

標準入力から登録する方法

パイプを使って直接コマンドを渡すことも可能です。

$ echo "reboot" | at 02:00

スクリプトから自動登録する場合に便利です。

atのメリット

  • 一度だけ実行する用途に最適
  • 時間指定が柔軟で直感的
  • cron設定を汚さずに臨時実行可能
  • 操作がシンプル

atの注意点

  • atd が起動していないと動作しない
  • 実行環境(PATHなど)が限定される
  • サーバー停止中の時間は実行されない
  • 繰り返し実行には向かない

また、実行環境はログインシェルとは異なるため、 スクリプトでは必ず絶対パスを指定することが推奨されます。

cronとの違い

  • cron: 定期的に繰り返し実行
  • at: 一度だけ実行

定期処理は cron、 単発処理は at と使い分けると整理しやすくなります。

まとめ

at コマンドは、Linux環境における「単発スケジューリング」のためのシンプルで強力なツールです。

cron のような繰り返し実行ではなく、 「今回だけ」「この日時だけ」といった用途に最適です。

メンテナンス作業、臨時バッチ処理、サーバー停止予約など、 運用現場で意外と活躍する場面は多くあります。

自動実行の選択肢として、 cron・systemd timer・at を適切に使い分けることが、 安定したLinux運用の鍵となります。