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

Linuxのコマンドで

at は、特定の時間に実行されるコマンドをスケジュールできるコマンドラインユーティリティです。 atで作成されたジョブ 一度だけ実行されます。

この記事では、 atの使用方法について説明します。 およびそのコンパニオンユーティリティbatch atq atrm 後で実行するジョブを表示、削除、および作成します。

atをインストールしています #

ディストリビューションに応じて、 at Linuxシステムに存在する場合と存在しない場合があります。

atの場合 がインストールされていない場合は、ディストリビューションのパッケージマネージャーを使用して簡単にインストールできます。

  • atをインストールします UbuntuとDebianで

    sudo apt update sudo apt install at
  • atをインストールします CentOSとFedoraで

    sudo yum install at

プログラムをインストールしたら、 atdを確認してください。 、スケジューリングデーモンが実行されており、起動時に開始するように設定されています:

sudo systemctl enable --now atd

atの使用方法 コマンド#

atの簡略化された構文 コマンドは次のとおりです:

at [OPTION...] runtime

at コマンドは日付と時刻を取ります( runtime )コマンドラインパラメータとしてジョブを実行する場合、および標準入力から実行するコマンド。

午前9時に実行されるジョブを作成しましょう:

at 09:00

Enterを押したら 、 atが表示されます ほとんどの場合、 at>で始まるコマンドプロンプト 。コマンドが実行されるシェルを通知する警告も表示されます:

warning: commands will be executed using /bin/sh
at>

実行するコマンドを1つ以上入力します:

tar -xf /home/linuxize/file.tar.gz

コマンドの入力が完了したら、 Ctrl-Dを押します。 プロンプトを終了してジョブを保存するには:

at> <EOT>
job 4 at Tue May  5 09:00:00 2020

このコマンドは、ジョブ番号と実行日時を表示します。

at にコマンドを入力する以外に、実行するコマンドを渡す方法は他にもあります。 促す。 1つの方法は、 echoを使用することです コマンドをatにパイプします :

echo "command_to_be_run" | at 09:00

別のオプションは、ヒアドキュメントを使用することです:

at 09:00 <<ENDcommand_to_be_runEND

標準入力の代わりにファイルからコマンドを読み取るには、 -fを指定してコマンドを呼び出します。 ファイルへのパスが続くオプション。たとえば、スクリプト /home/linuxize/script.shを実行するジョブを作成するには :

at 09:00 -f /home/linuxize/script.sh

デフォルトでは、コマンドが出力を生成する場合、 at ジョブが完了すると、出力を含む電子メールがユーザーに送信されます。 atを呼び出す -Mを使用 電子メール通知を抑制するオプション:

at 09:00 -M

-mを使用します 出力がない場合でもメールを送信するには:

at 09:00 -m

バッチ コマンド#

バッチ またはそのエイリアスat-b システムの負荷レベルが許す限り、ジョブをスケジュールし、バッチキューで実行します。デフォルトでは、システム負荷平均が1.5未満のときにジョブが実行されます。 atd を呼び出すときに、負荷の値を指定できます。 デーモン。システム負荷の平均が指定されたものよりも高い場合、ジョブはキューで待機します。

batchを使用してジョブを作成するには 、実行するコマンドを渡します:

echo "command_to_be_run" | batch

実行時間の指定#

at ユーティリティは、幅広い時間仕様を受け入れます。時刻、日付、および現在の時刻からの増分を指定できます:

  • 時間 -時刻を指定するには、 HH:MMを使用します またはHHMM 形。 12時間の時間形式を示すには、 amを使用します またはpm 時間の後。 nowのような文字列を使用することもできます 、真夜中正午 、または teatime (16:00)。指定された時間が経過すると、ジョブは翌日に実行されます。

  • 日付 -このコマンドを使用すると、特定の日付にジョブの実行をスケジュールできます。日付は、月の名前の後に日とオプションの年を続けて指定できます。 todayなどの文字列を使用できます 、明日 、または平日。日付は、 MMDD [CC] YYを使用して指定することもできます 、 MM / DD / [CC] YY DD.MM。[CC]YY または[CC]YY-MM-DD フォーマット。

  • インクリメント - at now + count time-unitの増分も受け入れます format、ここで count は数値であり、 time-unit 次の文字列のいずれかになります: minutes 時間 、または

時間、日付、増分を組み合わせることができます。いくつかの例を次に示します。

  • 現在の時刻より10分遅い時刻に次の日曜日の仕事をスケジュールします:

    at sunday +10 minutes
  • 今から2日後の午後1時に実行するジョブをスケジュールします。

    at 1pm + 2 days
  • 2020年10月21日12:30に実行するジョブをスケジュールします:

    at 12:30 102120
  • 今から1時間後に実行するジョブをスケジュールします:

    at now +1 hours

[[CC] YY] MMDDhhmm [.ss]で日時を指定することもできます -tを使用する オプション。次に例を示します:

at -t 202005111321.32
キュー番号の指定

デフォルトでは、 atで作成されたジョブ aという名前のキューでスケジュールされます およびbatchで作成されたジョブ bでスケジュールされます キュー。

クエリにはaの名前を付けることができます zへ およびA Zへ 。低い文字のキューは低い快適さで実行されます。つまり、高い文字のキューよりも優先されます。

-qでキューを指定できます オプション。たとえば、 Lでジョブを設定するには キュー、実行します:

at monday +2 hours -q L

保留中のジョブの一覧表示#

ユーザーの保留中のジョブを一覧表示するには、 atqを実行します またはat-l コマンド:

atq

出力には、すべてのジョブが1行に1つずつ一覧表示されます。各行には、ジョブ番号、日付、時刻、キューレター、およびユーザー名が含まれています。

9	  Tue May  5 12:22:00 2020 a linuxize
12	Wed Oct 21 12:30:00 2020 a linuxize
15	Tue May  5 09:00:00 2020 a linuxize
6	  Tue May  5 09:00:00 2020 a linuxize
13	Mon May  4 23:08:00 2020 a linuxize
11	Wed Jul  1 10:00:00 2020 a linuxize
4	  Tue May  5 09:00:00 2020 a linuxize

atqの場合 管理ユーザーとして呼び出されると、すべてのユーザーの保留中のジョブが一覧表示されます。

保留中のジョブの削除#

保留中のジョブを削除するには、 atrmを呼び出します またはat-r コマンドの後にジョブ番号が続きます。たとえば、番号9のジョブを削除するには、次のコマンドを実行します。

atrm 9

ユーザーの制限#

/etc/at.deny および/etc/at.allow ファイルを使用すると、 atでジョブを作成できるユーザーを制御できます。 またはbatch 指図。ファイルは、ユーザー名のリストで構成され、1行に1つのユーザー名が含まれます。

デフォルトでは、 /etc/at.denyのみ ファイルが存在し、空です。つまり、すべてのユーザーが atを使用できます。 指図。特定のユーザーへのアクセス許可を拒否する場合は、このファイルにユーザー名を追加します。

/etc/at.allowの場合 ファイルが存在するのは、このファイルにリストされているユーザーのみが atを使用できることです。 コマンド。

どちらのファイルも存在しない場合は、管理者権限を持つユーザーのみが atを使用できます。 コマンド。

結論#

at ユーティリティは、標準入力からコマンドを読み取り、後で実行します。 crontabとは異なり、 atで作成されたジョブ 一度だけ実行されます。

atで利用可能なすべてのオプションの詳細については コマンドタイプmanat ターミナルで。

ご不明な点がございましたら、お気軽にコメントをお寄せください。


Linux
  1. Linuxmvコマンド

  2. Linuxduコマンド

  3. Linuxipコマンド

  1. Linuxifconfigコマンド

  2. Linuxタイムコマンド

  3. Linuxcdコマンド

  1. LinuxでのPingコマンド

  2. Linuxウォッチコマンド

  3. LinuxのXargsコマンド