blog

テクノロジー|Linuxのatコマンドでタスクをスケジュールする

atコマンドは、特定の日時に単発のタスクをスケジューリングするLinuxターミナルの方法です。...

Oct 30, 2025 · 5 min. read
シェア

atコマンドは、特定の日時に1回限りのタスクをスケジュールするLinux端末の方法です。

コンピュータは いますが、誰もが自動化の方法を知っているわけではありません。しかし、特定の時間にコンピュータのタスクをスケジュールし、それを忘れることができるのは本当に素晴らしいことです。特定の時間にアップロードまたはダウンロードするファイルがある場合、まだ存在しないが特定の時間に存在することが保証されているファイルのバッチを処理する必要がある場合、設定を監視する必要がある場合、または仕事からの帰り道にパンとバターを拾うためのフレンドリーなリマインダーが必要な場合などです。

atコマンドの出番です。

Linuxのatコマンドとは何ですか?

atコマンドは、Linuxターミナルで、特定の日時に単発のジョブをスケジューリングする方法です。ターミナル上で簡単に実装できる自発的な自動化です。

atをインストール

Linuxでは、atコマンドがすでにインストールされている場合があります。インストールされているかどうかは、at -Vコマンドで確認できます。バージョン番号が返されれば、atがインストールされています。

  1. $ at -V
  2. at version x.y.z

atを使おうとしてコマンドが見つからない場合、最近のLinuxディストリビューションのほとんどは、足りないatパッケージを提供してくれます。

ほとんどのLinuxシステムでは、systemctlコマンドを使ってこのサービスを有効にし、今後自動的に起動するように設定することができます:

  1. $ sudo systemctl enable --now atd

でインタラクティブにジョブをスケジューリングします。

atコマンドにタスクを実行させたい時刻を指定すると、対話型のatプロンプトが開きます。指定された時間に実行したいコマンドを入力することができます。

例えるなら、携帯電話のカレンダーアプリのようなものです。まず、ある日のある時刻にイベントを作成し、何が起こるかを指定します。

例えば、これから数分間、自分へのメモを計画するタスクを作成してみてください。ここで簡単なタスクを実行すると、失敗する可能性が低くなります。アットプロンプトを終了するには、キーボードの Ctrl+D を押します。

  1. $ at 11:20 AM
  2. warning: commands will be executed using /bin/sh
  3. at> echo "hello world" > ~/at-test.txt
  4. at> <EOT>
  5. job 3 at Mon Jul :

ご覧の通り、atは直感的で自然な時間の定義を使っています。24時間時計を使ったり、時間をUTCや特定のISOフォーマットに変換したりする必要はありません。一般的には、正午、午後1時30分、午後13時37分など、自然に思いつく記号を使って、タスクを発生させたい時刻を表すことができます。

数分待ってから、作成したファイルに対してcatコマンドまたはtacコマンドを実行し、タスクが実行されたことを確認します:

  1. $ cat ~/at-test.txt
  2. hello world

でタスクをスケジュールします。

タスクのスケジューリングにat対話型プロンプトを使う必要はありません。echoやprintfを使ってコマンドを送ることができます。この例では、now記号を使って、タスクを今から何分遅らせるかを指定しています:

  1. $ echo "echo 'hello again' >> ~/at-test.txt" | at now +1 minute

1分後、新しいコマンドが実行されたことを確認します:

  1. $ cat ~/at-test.txt
  2. hello world
  3. hello again

時間表現

atコマンドは時間の解釈に関して非常に寛容です。どれが一番便利かによって、多くの形式から選ぶことができます:

  • YYMMDDhhmm[.ss]
  • CCYYMMDDhhmm[.ss]
  • now
  • midnight
  • noon
  • teatime
  • AM
  • PM

日時は絶対時間でも、プラス記号を付けて相対時間にすることもできます。相対的な時間を指定する場合は、以前に使ったことのある単語を使うことができます:

  • minutes
  • hours
  • days
  • weeks
  • months
  • years

時刻と日付の構文

atコマンドは日付よりも時間の入力に寛容ではありません。しかし、日付のデフォルトは現在の日付であり、タスクを将来の日付にスケジューリングする場合にのみ必要です。

これらは有効な表現の例です:

  1. $ echo "rsync -av /home/tux me@myserver:/home/tux/" | at 3:30 AM tomorrow
  2. $ echo "/opt/batch.sh ~/Pictures" | at 3:30 AM 22
  3. $ echo "echo hello" | at now + 3 days

atキューの表示

atに夢中になり、机の上の紙切れに落書きする代わりにタスクをスケジューリングするようになったら、まだキューにタスクが残っていないかチェックしたくなるかもしれません。

at キューを表示するには、atq コマンドを使用します:

  1. 10 Thu Jul : a tux
  2. 9 Tue Jul : a tux
  3. 7 Tue Jul : a tux

キューからタスクを削除するには、atrm コマンドとタスク番号を使用します。例えば、タスク 7 を削除するには

  1. $ atrm 7
  2. 10 Thu Jul : a tux
  3. 9 Tue Jul : a tux

スケジュールされたタスクの実際の内容を見るには、/var/spool/atの下を見る必要があります。このディレクトリの内容を見ることができるのはrootユーザーだけなので、タスクの内容を見たりcatしたりするにはsudoを使う必要があります。

Linuxでのタスクのスケジューリング

atシステムは、その日のうちにジョブを実行するのを忘れたり、留守中にコンピューターにジョブを実行させたりするのを避ける良い方法です。cronと違って、atはジョブを今からずっと実行し続けることを要求しないので、その構文はcronよりずっとシンプルです。

次にコンピューターに記憶させ、管理させたい小さなタスクがあるときは、atコマンドを試してみてください。

Read next

ハードコアウォッチ|#News Beat # PHP 8、初のアルファ版をリリース

- APUのエネルギー効率は6年間で31.7倍に改善 - ゴールドマン・サックスは新しいフリーフォントセットをリリースしましたが、これでゴールドマン・サックスを批判することはできません!

Oct 30, 2025 · 2 min read