POSIX1日1コマンド[part5]: at
詳細はこちらの記事へ。1日1POSIXコマンドを実行してみようというやつです。
at
とりあえず使ってみる
$ sudo yum install at $ sudo systemctl status atd ● atd.service - Job spooling tools Loaded: loaded (/usr/lib/systemd/system/atd.service; enabled; vendor preset: enabled) Active: active (running) since Sun 2018-02-25 23:50:07 UTC; 22s ago Main PID: 3314 (atd) CGroup: /system.slice/atd.service └─3314 /usr/sbin/atd -f Feb 25 23:50:07 localhost.localdomain systemd[1]: Started Job spooling tools. Feb 25 23:50:07 localhost.localdomain systemd[1]: Starting Job spooling tools...
起動していなければ、
$ sudo systemctl start atd
$ touch dummy-file1 dummy-file2 $ ls dummy-file1 dummy-file2 $ echo 'rm dummy-file2' > at_task $ date Sun Feb 25 23:56:50 UTC 2018 $ ls at_task dummy-file1 dummy-file2 $ at -f at_task 23:58 job 4 at Sun Feb 25 23:58:00 2018 $ date Sun Feb 25 23:57:21 UTC 2018 $ ls at_task dummy-file1 dummy-file2 $ date Sun Feb 25 23:58:03 UTC 2018 $ ls at_task dummy-file1 #dummy-file2が消えている
atで指定した時間にコマンドを実行した。
at を知る
ざっくりDESCRIPTION
後でコマンドを実行する。標準入力からコマンドを読み取り、後で実行されるat-jobとしてグループ化する。
at-jobは別でのシェルで実行され、制御して無いターミナルのプロセスグループとして分けられる。
環境変数、現在の作業ディレクトリ、ファイル作成マスク、およびatユーティリティが実行されたときに有効になる他のimplementation-definedの実行時間属性は、at-jobが実行されるときに、atユーティリテーは保持され使用されるものとし、実行される。
at-jobがsubmitされると、at_job_idとスケジュールされた時間は、標準エラー出力に書き込まれる。
at_job_idは英数字とピリオドからなる識別子です。
ジョブが特定のジョブを一意に識別するようにスケジュールされている場合、at_job_idはシステムによって割り当てられたものとする。
ざっくり使い方
at [-m] [-f file] [-q queuename] -t time_arg
at -r at_job_id...
ざっくりOPTION
-f file
- 標準入力の代わりに、at-jobのソースとして使用するファイルのパス名を指定する。
-l
- at_job_idが指定されていない場合は、起動するユーザーに対してスケジュールされたすべてのジョブを出力する。 at_job_idsが指定されている場合は、これらのジョブの情報のみを出力する。出力は標準出力に書き込まれます。
-m
- at-jobが実行された後、呼び出し元のユーザーに完了のメールを送信する。at-jobによって生成された標準出力と標準エラーは、他の場所にリダイレクトされ無い限り、同様にユーザーに送られる。
- -q
- -r
- -t
ざっくりOPERANDS
- at_job_id
- 前回atユーティティーでジョブをスケジュールしたときに出力された名前
- timespec
- 多かったので割愛しますが、実行する時間の設定方法が本家サイトには載っています。