atコマンドについて詳しくまとめました 【Linuxコマンド集】

  • このエントリーをはてなブックマークに追加
  • Pocket

atは時間を指定しコマンドやプログラムを実行するコマンドだ。

同じ時間指定しプログラムを実行するコマンドはcronコマンドがある。cronコマンドは繰り返し実行予約ができるが、atコマンドは一度きりの実行という違いがある。

atコマンドの基本

コマンドの基本動作

使い方は、次のとおりだ。

$ at 日時

2020年5月4日15:45に指定したプログラムを実行する場合は、次のコマンドだ。

$ at 15:45 05042020

atコマンド

すると、何を実行するか問い合わせがある。

ここで実行するコマンドやプログラムを登録する。今回はx1.txtというファイルをtouchコマンドで作成するコマンドを登録してみる。

> touch x1.txt

atコマンド

登録が終了したら、Ctrl+Dのショートカットキーを押し、設定を完了する。

atコマンド

2020年5月4日15:45にx1.txtというファイルをtouchコマンドで作成する動作をジョブ番号70番として登録した。

日付の形式は、2桁の分、半角コロン、2桁の時、半角空白、4桁の西暦、2桁の月、2桁の日のデータで登録するほか、「15:45 05042020」のように年月日を半角ピリオドで区切る書式でも可能なほか、次のような書式も可能だ。

  • 「23:55」:次に来る23:55
  • 「05042020」:2020年5月4日の設定を確定した時刻
  • 「now + 1 min」:現在から1分後
  • 「now +1 hour」:現在から1時間後
  • 「tomorrow」:翌日の設定を確定した時刻
  • 「today + 3 day」:3日後の設定を確定した時刻
  • 「00:00 today + 2 day」:2日後の午前0時
  • 「23:55 05042020 +2 day」:2020年4月7日の23:55

atコマンドのオプションたち

オプションの一覧

後から詳細をご紹介するが、まずは一覧で見てみよう。

オプション -f

予約するジョブのファイルを指定する

オプション -q

小文字アルファベット1文字のキュー番号を割り振りする

オプション -t

日付の形式を別の書式で入力する

オプション -m

出力がない場合でもメールする

オプション -l

予約しているジョブをリストする

オプション -d

予約しているジョブを削除する

オプション -b

システムに負荷をかけないようにジョブを実行する

オプション -v

ジョブの実行時間も詳細に表示する

オプション -c

予約したジョブの詳細を表示する

-fオプション:予約するジョブのファイルを指定する

予約するジョブのファイルを指定する書式は次のとおりだ。

$ at 日時 -f ファイル名

2020年5月4日15:45にシェルプログラムc1.shを実行する場合は、次のコマンドだ。

$ at 15:45 05042020 -f c1.sh

atコマンド

2020年5月4日15:45に指定したプログラムを実行する設定をジョブ番号71番として登録した。

実際には単純に1コマンドごと登録する使い方よりも、ある程度のコマンドをシェルプログラム化し-fオプションを使って登録することのほうが多いだろう。

-qオプション:小文字アルファベット1文字のキュー番号を割り振りする

小文字アルファベット1文字のキュー番号を割り振りする書式は次のとおりだ。

$ at -q キュー番号 日時

小文字アルファベット「c」のキュー番号を割り振りし2020年5月4日15:45に指定したコマンドを実行する場合は、次のコマンドだ。

$ at -q c 15:45 05042020

atコマンド

小文字アルファベット「c」のキュー番号を割り振りし2020年5月4日15:45に指定したコマンドを実行する設定をジョブ番号72番として登録した。

キュー番号はa~zまでの1文字を割り振ることができ、重複も可能だ。

キュー番号で予約した動作をグループで管理することができる。

-qオプションがない場合は、キュー番号は「a」となる。

-tオプション:日付の形式を別の書式で入力する

オプションなしでの日付の形式は、日、月、年という順番で入力するので認識しにくい。そこで、西暦4桁、月2桁、日2桁、時2桁、分2桁、(間に空白はいらない)という書式で入力する書式は次のとおりだ。

$ at -t 日時形式

西暦4桁、月2桁、日2桁、時2桁、分2桁の書式で入力し2020年5月1日15:45に指定したコマンドを実行する場合は、次のコマンドだ。

$ at -t 202005011545

atコマンド

西暦4桁、月2桁、日2桁、時2桁、分2桁の書式で入力し2020年5月1日15:45に指定したコマンドを実行する設定をジョブ番号73番として登録した。

-mオプション:出力がない場合でもメールする

atコマンドは設定したユーザー宛に結果をメールする。オプションなしでは出力がない場合、メールはしない。-mオプションを設定すれば結果の出力がない場合でもメールする。

書式は次のとおりだ。

$ at -m 日時

2020年5月4日15:45に指定したコマンドを実行し、出力がない場合でもメールする場合は、次のコマンドだ。

$ at -m 15:45 05042020

atコマンド

2020年5月4日15:45に指定したコマンドを実行し、出力がない場合でもメールする設定をジョブ番号74番として登録した。

 -lオプション:予約しているジョブをリストする

予約しているジョブをリストする書式は次のとおりだ。

$ at -l

atコマンド

ジョブ番号、実行日時、キュー番号、設定したユーザーの順で一覧を表示した。

-qオプションを使えば、キュー番号で絞り込んで表示することができる。

$ at -l -q キュー番号

キュー番号cのみ絞り込んで表示するには次のコマンドだ。

$ at -l -q c

atコマンド

キュー番号cのみの一覧を表示した。

実行が終了した過去のコマンドはリストから自動で削除される。

atコマンドの-lオプションはatqコマンドと同じ動作をする。

-dオプション:予約しているジョブを削除する

予約しているジョブを削除する書式は次のとおりだ。

$ at -d ジョブ番号

ジョブ番号73の予約を削除する場合は、次のコマンドだ。

$ at -d 73

atコマンド

ジョブ番号34の予約を削除した。

atコマンドの-dオプションはatrmコマンドと同じ動作をする。

-bオプション:システムに負荷をかけないようにジョブを実行する

時間を指定する自動実行プログラムは時にシステムに負荷をかけるときがある。システムに負荷をかけないようにジョブを実行する書式は次のとおりだ。

$ at -b 日時

2020年5月4日15:45にシステムに負荷をかけないように指定したコマンドを実行する場合は、次のコマンドだ。

$ at -b 15:45 05042020

atコマンドの-bオプションはbatchコマンドと同じ動作をする。

-vオプション:ジョブの実行時間も詳細に表示する

ジョブの実行時間も詳細に表示する書式は次のとおりだ。

$ at -v 日時

2020年5月4日15:45に指定したコマンドを実行するようにジョブの実行時間も詳細に表示し設定する場合は、次のコマンドだ。

$ at -v 15:45 05042020

atコマンド

2020年5月4日15:45に指定したコマンドを実行するようにジョブ番号75番として登録した。atコマンド入力直後の行にジョブの実行時間も詳細に表示している。

-cオプション:予約したジョブの詳細を表示する

予約したジョブの詳細を表示する書式は次のとおりだ。

$ at -c ジョブ番号

ジョブ番号74の詳細を表示するには、次のコマンドだ。

$ at -c 74

atコマンド

ジョブ番号74の詳細を表示した。

at関連コマンド

最後にatコマンドに関連して、基本的な時間指定しコマンドを実行するコマンドも紹介しておく

atqコマンド

予約しているジョブをリストする。

atrmコマンド

予約しているジョブを削除する。

batchコマンド

システムに負荷をかけないようにジョブを実行する。

cronコマンド

定期的にジョブを実行する。

まとめ

atコマンドで別のコマンドを実行予約する場合は、ファイルを指定しないで設定すればとても簡単に設定できるが、コマンド名まですべて入力して1行で設定することもできる。

実行するのがシェルプログラムの場合は、簡易的な設定はできないので、-fオプションを使って指定しよう。

日付の入力間違いには最新の注意をしたい。登録後は-lオプション、またはatqコマンドできちんと登録されたか確認しよう。

また、atコマンドは、atq、atrmコマンドと同時に使うことになる。セットで覚えるようにしよう。

  • このエントリーをはてなブックマークに追加
  • Pocket

このページの続きや関連ページは下記から一覧で確認できます。

IT講師に興味はありませんか?

・「今までIT講師をやってきたが、更に多くの講義を行いたい」

・「エンジニアとしてやってきたが講師業に魅力を感じている」

・「講師として活躍するためにベースとなる知識を知りたい」

・「様々な分野や言語の講師にチャレンジしてみたい」


という方はぜひIT講師募集のページをご覧ください。


リスキルテクノロジーでは「受講している方々にITを好きになってもらう」ことを目標に、同じ目標に向かって歩んで行ける講師の方を常に探しています。


システム開発やインフラ構築などのエンジニアリング経験を活かし、新入社員などの未経験者や経験の浅い初学者の方々に対してITトレーニングを行っていただくことになります。


テキストやカリキュラムは事前に用意されており、それらを元に講義を進めていくため、IT講師をはじめて実施する方でも安心してトレーニングを実施できます。


IT講師募集のページを見る

SNSでもご購読できます。

コメント

  1. 通りすがり より:

    > 小文字アルファベット「c」のキュー番号を割り振りし2020年4月5日15:45に指
    > 定したコマンドを実行する場合は、次のコマンドだ。
    >
    > $ at -q c 15:45 05042020

    ↑間違えてますよ。信用性に関わるので修正した方が宜しいかと。

    1. リカレントテクノロジー より:

      ご愛読いただきありがとうございます。
      また、ご指摘いただきありがとうございます。
      コマンドの内容に対して本文中の日付表記が誤っておりました。

      引き続き、ご愛読のほど、よろしくお願いいたします。

  2. mapi より:

    2019-09-13
    MacOS で at コマンドを有効化して使ってみる

    上記にはコメントできないのでこちらで
    catalina での有効化をご存じでした教えてください。

    1. リカレントテクノロジー より:

      いつもご愛読いただきありがとうございます。

      未検証ではありますが、catalinaで動作しなくなったコマンド類はその実行ファイルにフルディスクアクセス権限を付けることで対応する可能性があるようです。

      macOS 10.15 catalina で crontab を使用する | 林檎コンピュータ
      https://mac-ra.com/catalina-crontab/

      上記記事ではcrontab(/usr/sbin/cron)の例となっていますが、atコマンドの場合は /usr/libexec/atrun となるようですのでお試しください。

コメントを残す

*

未経験からの育成制度も充実
IT講師に興味はありませんか?

リスキルテクノロジーでIT講師の積極募集を開始! 経験・未経験問わずご応募可能。育成制度で講師スキル向上も目指せます

IT講師に応募する