atd デーモン
atd デーモンを使用すると、「午前 2 時」など、後で実行するジョブを送信できます。 atd デーモンを使用するには、実行中である必要があります。ユーザーは、実行中のプロセスのリストを調べるだけで、atd が実行されていることを確認できます。
$ ps aux | grep atd daemon 4730 0.0 0.2 1420 532 ? S 15:42 0:00 /usr/sbin/atd madonna 5570 0.0 0.2 3572 640 pts/2 S 16:43 0:00 grep atd
7 番目の列は、プロセスが関連付けられている端末を示していることに注意してください。 blondie の grep コマンドの場合、ターミナルは pts/2 であり、これはおそらくネットワーク シェルまたは X セッション内のグラフィカル ターミナルを指します。 atd デーモンには関連付けられた端末がないことに注意してください。デーモンの決定的な特徴の 1 つは、それを開始した端末との関連付けを削除することです。
at を使用したジョブの送信
at コマンドは、atd にジョブを送信するために使用されます 特定の時間に実行されるデーモン。実行するコマンドは、スクリプトとして (-f コマンド ライン スイッチを使用して) 送信するか、stdin から直接入力します。コマンドからの標準出力は、ユーザーにメールで送信されます。
at [-f filename | -m] TIME
スイッチ | 効果 |
---|---|
-f ファイル名 | ファイル名で指定されたスクリプトを実行します |
-m | 出力がない場合でも、完了したらメールでユーザーに通知します。 |
時刻は、HH:MM を使用して指定でき、末尾に「am」または「pm」が付きます。 「真夜中」、「正午」、「ティータイム」という用語も使用できます。 (正しくは「ティータイム」と読みます。) 日付は、MM/DD/YY など、いくつかの形式を使用して指定することもできます。 at(1) の man ページには、さらに多くの詳細が記載されています。
レスラーのホーガンは、受信したすべてのファン メール (fanmail.txt) を含むファイルを印刷したいと考えています。しかし、彼はプリンターをベンチュラと共有しているため、少し心配しています。彼もプリンターをよく使用します。喧嘩を避けたいホーガンは、印刷を午前 2 時まで遅らせることにしました。
$ at 2:00 am warning: commands will be executed using (in order) a) $SHELL b) login shell c) /bin/sh at> lpr fanmail.txt at> CTRL-D job 7 at 2020-06-17 02:00
ホーガンは -f を使用しなかったため コマンド ライン スイッチである at コマンドは、ホーガンに stdin (キーボード) を使用してコマンドを入力するように促しました。幸運なことに、ホーガンは、端末から直接入力された CTRL-D が「ファイルの終わり」を示すことを知っています。または、コマンドを stdin に直接パイプすることもできます:
$ echo "lpr fanmail" | at 2:00 am warning: commands will be executed using (in order) a) $SHELL b) login shell c) /bin/sh job 7 at 2003-06-17 02:00
次に、ホーガンは自分の仕事が atq を使用して登録されていることを確認します。
$ atq 7 2003-06-17 02:00 a hogan
最後に、ホーガンはベンチュラが休暇中であることを覚えているので、ファン メールを問題なく印刷できます。彼は自分の at ジョブをキャンセルして、ファイルを直接印刷することにしました。
$ atrm 7 $ atq $ lpr fanmail.txt
バッチでタスクを遅らせる
バッチ コマンドは、at コマンドと同様に、タスクを後で延期するために使用されます。 at コマンドとは異なり、バッチは特定の時間にコマンドを実行するのではなく、システムが他のタスクでビジー状態になるまで待機します。ジョブがサブミットされたときにマシンがビジーでない場合、ジョブはすぐに実行される可能性があります。 atd デーモンは、システムの loadavg を監視し、それが 0.8 を下回るまで待ってからジョブを実行します。
バッチ コマンドの構文は at コマンドと同じで、stdin を使用してジョブを指定するか、-f を使用してバッチ ファイルとして送信できます。 コマンドライン スイッチ。時間が指定されている場合、バッチは指定された時間までマシンの監視を遅らせます。その時点で、バッチはシステムの loadavg の監視を開始し、システムがビジーでないときにジョブを実行します。