GNU/Linux >> Linux の 問題 >  >> Linux

Linuxatコマンドでタスクをスケジュールする

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

それがat コマンドはです。

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

at コマンドは、特定の日時に1回限りのジョブをスケジュールできるようにするLinux端末の方法です。ターミナルから簡単に自動化できます。

インストール

Linuxでは、at コマンドはおそらくすでにインストールされています。 at -Vを使用してインストールされていることを確認できます 指図。バージョンが返される限り、atがあります インストール済み:

$ at -V
at version x.y.z

atを使用しようとする必要があります コマンドが見つからない場合、最新のLinuxディストリビューションのほとんどは、不足しているatをインストールすることを提案しています。 あなたのためのパッケージ。

atdと呼ばれるatデーモンを起動する必要がある場合もあります。 。ほとんどのLinuxシステムでは、systemctlコマンドを使用してサービスを有効にし、今後自動的に開始するように設定します。

$ sudo systemctl enable --now atd

atとインタラクティブにジョブをスケジュールする

atを使用する場合 コマンドを実行する時間とともに、インタラクティブなatを開きます。 促す。指定した時間に実行したいコマンドを入力できます。

それが役立つ場合は、このプロセスを、おそらく携帯電話で使用するような予定表アプリと考えることができます。最初に、ある日のイベントを作成してから、何をしたいかを指定します。

たとえば、将来数分間タスクを作成して、自分自身にメモをスケジュールしてみてください。失敗の可能性を減らすために、タスクを単純にします。 atを終了するには プロンプトが表示されたら、 Ctrl + Dを押します キーボードで。

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

ご覧のとおり、at 直感的で自然な時間定義を使用します。 24時間制を知っている必要はなく、時刻をUTCまたは特定のISO形式に変換する必要もありません。通常、正午など、自然に思い浮かぶ表記を使用できます。 、午後1時30分 13:37 、など、タスクをいつ実行するかを説明します。

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

$ cat ~/at-test.txt
hello world

atでのジョブのスケジュール

atでジョブをスケジュールするためにインタラクティブプロンプトを使用する必要はありません 。代わりに、echoを使用してコマンドをパイプすることができます またはprintf 。この例では、 nowという表記を使用します。 そして今から何分後にタスクを遅らせたいですか:

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

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

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

その他のLinuxリソース

  • Linuxコマンドのチートシート
  • 高度なLinuxコマンドのチートシート
  • 無料のオンラインコース:RHELの技術概要
  • Linuxネットワーキングのチートシート
  • SELinuxチートシート
  • Linuxの一般的なコマンドのチートシート
  • Linuxコンテナとは何ですか?
  • 最新のLinux記事

時間表現

at 時間を解釈するとき、コマンドはかなり寛容です。自分にとって最も便利な形式に応じて、多くの形式から選択できます。

  • YYMMDDhhmm [.ss]

    (年、月、日、時、分、およびオプションで秒の省略形)
  • CCYYMMDDhhmm [.ss]

    (通年、月、日、時、分、およびオプションで秒)
  • now
  • midnight
  • noon
  • teatime (午後4時)
  • AM
  • PM

時間と日付は絶対値にすることも、プラス記号を追加することもできます( + 現在を基準にしてそれらを作成する 。相対時間を指定するときは、おそらくすでに使用している単語を使用できます:

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

時刻と日付の構文

at コマンドは、日付から時刻を伝える際に寛容ではありません。時刻が最初に来て、次に日が来る必要がありますが、その日はデフォルトで現在の日になり、将来のある日のタスクをスケジュールするときにのみ必要になります。

これらは、いくつかの有効な式の例です:

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

キューでの表示

atを採用したら 机の周りにある紙切れにメモを書き留める代わりにタスクをスケジュールしている場合は、まだキューに仕事があるかどうかを確認することをお勧めします。

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

$ atq
10 Thu Jul 29 12:19:00 2021 a tux
9  Tue Jul 27 03:30:00 2021 a tux
7  Tue Jul 27 00:00:00 2021 a tux

キューからタスクを削除するには、atrmを使用します コマンドとジョブ番号。たとえば、ジョブ7を削除するには、次のようにします。

$ atrm 7
$ atq
10 Thu Jul 29 12:19:00 2021 a tux
9  Tue Jul 27 03:30:00 2021 a tux

スケジュールされたジョブに実際に何が含まれているかを確認するには、atを確認する必要があります スプール。 rootユーザーのみがatを表示できます スプールなので、sudoを使用する必要があります スプールを表示するか、cat あらゆる仕事の内容。

Linuxでのスケジュール

at システムは、1日の後半にジョブを実行することを忘れたり、不在時にコンピューターにジョブを実行させたりすることを回避するための優れた方法です。 cronとは異なり 、ジョブが今から永久に定期的に実行される必要があるという期待から解放され、その結果、その構文はcronよりもはるかに単純になります。 構文。

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


Linux
  1. Linuxcronコマンドを使用したタスクのスケジューリング

  2. Linuxのpingコマンドで接続の問題を診断する

  3. Linuxのwatchコマンドでコマンドとタスクを監視する

  1. Linuxlsコマンドをマスターする

  2. Linuxでのコマンドまたはプロセスの実行時間を検索する

  3. Linux での locate コマンド

  1. Linuxで「at」コマンドを使用して特定の時間以降にタスクをスケジュールする方法

  2. LinuxでのJQコマンドと例

  3. Linux で at を使用してタスクをスケジュールする方法