抗菌・抗ウイルス試験 のご案内...(2)試験の概略 抗菌試験 抗ウイルス試験 試験菌/ ファージ液 保湿ガラス 密着フィルム/ガラス 試験サンプル
Task Spooler を試した
-
Upload
y-uti -
Category
Technology
-
view
431 -
download
1
Transcript of Task Spooler を試した
Task Spoolerを試した内山 雄司 (@y__uti)
2016-09-13 社内勉強会
自己紹介内山雄司 (@y__uti)
◦ http://y-uti.hatenablog.jp/ (phpusers-ja)
仕事◦ 受託開発の会社 (株式会社ピコラボ) でプログラマをしています
興味◦ プログラミング言語処理系
◦ 機械学習
2016-09-13 社内勉強会 2
Task Spoolerhttp://vicerveza.homeunix.net/~viric/soft/ts/
2016-09-13 社内勉強会 3
Task Spooler とは?簡易ジョブ管理システム的なもの
Task Spooler ができること◦ 最大同時実行数を設定してプロセスを並列実行する
◦ プロセスの状態や実行結果を管理する
◦ プロセスの実行条件 (依存関係) を指定する
Task Spooler ではできないこと◦ 複雑なことは概ねできない
◦ ジョブの実行時刻を指定するとか (cronじゃないから)
◦ 異常終了したら通知するとか
◦ トリッキーなジョブを仕掛ければできるかもしれないが・・・
2016-09-13 社内勉強会 4
何をしてくれるのか最大同時実行数を設定してプロセスを並列実行する
2016-09-13 社内勉強会 5
実行待ち 実行中 実行済み
何をしてくれるのか最大同時実行数を設定してプロセスを並列実行する
2016-09-13 社内勉強会 6
実行待ち 実行中 実行済み
終わった!
何をしてくれるのか最大同時実行数を設定してプロセスを並列実行する
2016-09-13 社内勉強会 7
実行待ち 実行中 実行済み
次!
インストールソースコードを取得してビルドする
2016-09-13 社内勉強会 8
$ wget http://vicerveza.homeunix.net/~viric/soft/ts/ts-0.7.6.tar.gz$ tar xf ts-0.7.6.tar.gz$ cd ts-0.7.6$ make$ make PREFIX=.. install
◦ インストールされるのは以下の 2 ファイル
◦ $PREFIX/bin/ts
◦ $PREFIX/share/man/man1/ts.1
◦ ちなみに GPL version 2.0
基本的な使い方 [1/2]最大同時実行数を設定する
2016-09-13 社内勉強会 9
$ ts -S 4
◦ 4 プロセスまで同時実行
確認
$ ts
ID State Output E-Level Times(r/u/s) Command [run=0/4]
基本的な使い方 [2/2]ジョブをキューに登録する
2016-09-13 社内勉強会 10
$ for i in $(seq 1 10); do ts sleep $i; done0123456789
◦ i = 1 ~ 10 として「$i秒 sleep する」ジョブを登録した
実行の様子キューの状態を確認する
実行直後
2016-09-13 社内勉強会 11
$ ts
ID State Output E-Level Times(r/u/s) Command [run=4/4]0 running /tmp/ts-out.sWEDhd sleep 11 running /tmp/ts-out.2FZb9f sleep 22 running /tmp/ts-out.g4nEOg sleep 33 running /tmp/ts-out.E7hDyg sleep 44 queued (file) sleep 55 queued (file) sleep 66 queued (file) sleep 77 queued (file) sleep 88 queued (file) sleep 99 queued (file) sleep 10
実行の様子キューの状態を確認する
1秒後
2016-09-13 社内勉強会 12
$ ts
ID State Output E-Level Times(r/u/s) Command [run=4/4]1 running /tmp/ts-out.2FZb9f sleep 22 running /tmp/ts-out.g4nEOg sleep 33 running /tmp/ts-out.E7hDyg sleep 44 running /tmp/ts-out.iNqnyi sleep 55 queued (file) sleep 66 queued (file) sleep 77 queued (file) sleep 88 queued (file) sleep 99 queued (file) sleep 100 finished /tmp/ts-out.sWEDhd 0 1.01/0.00/0.00 sleep 1
◦ 一秒ごとに tsコマンドを実行しています
◦ 自動更新されるわけではない
実行の様子キューの状態を確認する
2秒後
2016-09-13 社内勉強会 13
$ ts
ID State Output E-Level Times(r/u/s) Command [run=4/4]2 running /tmp/ts-out.g4nEOg sleep 33 running /tmp/ts-out.E7hDyg sleep 44 running /tmp/ts-out.iNqnyi sleep 55 running /tmp/ts-out.zLJ4Ci sleep 66 queued (file) sleep 77 queued (file) sleep 88 queued (file) sleep 99 queued (file) sleep 100 finished /tmp/ts-out.sWEDhd 0 1.01/0.00/0.00 sleep 11 finished /tmp/ts-out.2FZb9f 0 2.02/0.00/0.00 sleep 2
◦ 一秒ごとに tsコマンドを実行しています
◦ 自動更新されるわけではない
実行の様子キューの状態を確認する
3秒後
2016-09-13 社内勉強会 14
$ ts
ID State Output E-Level Times(r/u/s) Command [run=4/4]3 running /tmp/ts-out.E7hDyg sleep 44 running /tmp/ts-out.iNqnyi sleep 55 running /tmp/ts-out.zLJ4Ci sleep 66 running /tmp/ts-out.kjWcqk sleep 77 queued (file) sleep 88 queued (file) sleep 99 queued (file) sleep 100 finished /tmp/ts-out.sWEDhd 0 1.01/0.00/0.00 sleep 11 finished /tmp/ts-out.2FZb9f 0 2.02/0.00/0.00 sleep 22 finished /tmp/ts-out.g4nEOg 0 3.01/0.00/0.00 sleep 3
◦ 一秒ごとに tsコマンドを実行しています
◦ 自動更新されるわけではない
実行の様子キューの状態を確認する
・・・
2016-09-13 社内勉強会 15
$ ts
ID State Output E-Level Times(r/u/s) Command [run=4/4]4 running /tmp/ts-out.iNqnyi sleep 55 running /tmp/ts-out.zLJ4Ci sleep 66 running /tmp/ts-out.kjWcqk sleep 77 running /tmp/ts-out.i9BXum sleep 88 queued (file) sleep 99 queued (file) sleep 100 finished /tmp/ts-out.sWEDhd 0 1.01/0.00/0.00 sleep 11 finished /tmp/ts-out.2FZb9f 0 2.02/0.00/0.00 sleep 22 finished /tmp/ts-out.g4nEOg 0 3.01/0.00/0.00 sleep 33 finished /tmp/ts-out.E7hDyg 0 4.00/0.00/0.00 sleep 4
◦ 一秒ごとに tsコマンドを実行しています
◦ 自動更新されるわけではない
実行の様子キューの状態を確認する
・・・
2016-09-13 社内勉強会 16
$ ts
ID State Output E-Level Times(r/u/s) Command [run=4/4]5 running /tmp/ts-out.zLJ4Ci sleep 66 running /tmp/ts-out.kjWcqk sleep 77 running /tmp/ts-out.i9BXum sleep 88 running /tmp/ts-out.AWi5Dq sleep 99 queued (file) sleep 100 finished /tmp/ts-out.sWEDhd 0 1.01/0.00/0.00 sleep 11 finished /tmp/ts-out.2FZb9f 0 2.02/0.00/0.00 sleep 22 finished /tmp/ts-out.g4nEOg 0 3.01/0.00/0.00 sleep 33 finished /tmp/ts-out.E7hDyg 0 4.00/0.00/0.00 sleep 44 finished /tmp/ts-out.iNqnyi 0 5.01/0.00/0.00 sleep 5
◦ 一秒ごとに tsコマンドを実行しています
◦ 自動更新されるわけではない
実行の様子キューの状態を確認する
・・・
2016-09-13 社内勉強会 17
$ ts
ID State Output E-Level Times(r/u/s) Command [run=4/4]6 running /tmp/ts-out.kjWcqk sleep 77 running /tmp/ts-out.i9BXum sleep 88 running /tmp/ts-out.AWi5Dq sleep 99 running /tmp/ts-out.kVAX0u sleep 100 finished /tmp/ts-out.sWEDhd 0 1.01/0.00/0.00 sleep 11 finished /tmp/ts-out.2FZb9f 0 2.02/0.00/0.00 sleep 22 finished /tmp/ts-out.g4nEOg 0 3.01/0.00/0.00 sleep 33 finished /tmp/ts-out.E7hDyg 0 4.00/0.00/0.00 sleep 44 finished /tmp/ts-out.iNqnyi 0 5.01/0.00/0.00 sleep 55 finished /tmp/ts-out.zLJ4Ci 0 6.01/0.00/0.00 sleep 6
◦ 一秒ごとに tsコマンドを実行しています
◦ 自動更新されるわけではない
実行の様子キューの状態を確認する
・・・
2016-09-13 社内勉強会 18
$ ts
ID State Output E-Level Times(r/u/s) Command [run=3/4]7 running /tmp/ts-out.i9BXum sleep 88 running /tmp/ts-out.AWi5Dq sleep 99 running /tmp/ts-out.kVAX0u sleep 100 finished /tmp/ts-out.sWEDhd 0 1.01/0.00/0.00 sleep 11 finished /tmp/ts-out.2FZb9f 0 2.02/0.00/0.00 sleep 22 finished /tmp/ts-out.g4nEOg 0 3.01/0.00/0.00 sleep 33 finished /tmp/ts-out.E7hDyg 0 4.00/0.00/0.00 sleep 44 finished /tmp/ts-out.iNqnyi 0 5.01/0.00/0.00 sleep 55 finished /tmp/ts-out.zLJ4Ci 0 6.01/0.00/0.00 sleep 66 finished /tmp/ts-out.kjWcqk 0 7.00/0.00/0.00 sleep 7
◦ 一秒ごとに tsコマンドを実行しています
◦ 自動更新されるわけではない
実行の様子キューの状態を確認する
・・・
2016-09-13 社内勉強会 19
$ ts
ID State Output E-Level Times(r/u/s) Command [run=2/4]8 running /tmp/ts-out.AWi5Dq sleep 99 running /tmp/ts-out.kVAX0u sleep 100 finished /tmp/ts-out.sWEDhd 0 1.01/0.00/0.00 sleep 11 finished /tmp/ts-out.2FZb9f 0 2.02/0.00/0.00 sleep 22 finished /tmp/ts-out.g4nEOg 0 3.01/0.00/0.00 sleep 33 finished /tmp/ts-out.E7hDyg 0 4.00/0.00/0.00 sleep 44 finished /tmp/ts-out.iNqnyi 0 5.01/0.00/0.00 sleep 55 finished /tmp/ts-out.zLJ4Ci 0 6.01/0.00/0.00 sleep 66 finished /tmp/ts-out.kjWcqk 0 7.00/0.00/0.00 sleep 77 finished /tmp/ts-out.i9BXum 0 8.01/0.00/0.00 sleep 8
◦ 一秒ごとに tsコマンドを実行しています
◦ 自動更新されるわけではない
実行の様子キューの状態を確認する
・・・
2016-09-13 社内勉強会 20
$ ts
ID State Output E-Level Times(r/u/s) Command [run=1/4]9 running /tmp/ts-out.kVAX0u sleep 100 finished /tmp/ts-out.sWEDhd 0 1.01/0.00/0.00 sleep 11 finished /tmp/ts-out.2FZb9f 0 2.02/0.00/0.00 sleep 22 finished /tmp/ts-out.g4nEOg 0 3.01/0.00/0.00 sleep 33 finished /tmp/ts-out.E7hDyg 0 4.00/0.00/0.00 sleep 44 finished /tmp/ts-out.iNqnyi 0 5.01/0.00/0.00 sleep 55 finished /tmp/ts-out.zLJ4Ci 0 6.01/0.00/0.00 sleep 66 finished /tmp/ts-out.kjWcqk 0 7.00/0.00/0.00 sleep 77 finished /tmp/ts-out.i9BXum 0 8.01/0.00/0.00 sleep 88 finished /tmp/ts-out.AWi5Dq 0 9.00/0.00/0.00 sleep 9
◦ 一秒ごとに tsコマンドを実行しています
◦ 自動更新されるわけではない
実行の様子キューの状態を確認する
終わり
2016-09-13 社内勉強会 21
$ ts
ID State Output E-Level Times(r/u/s) Command [run=0/4]0 finished /tmp/ts-out.sWEDhd 0 1.01/0.00/0.00 sleep 11 finished /tmp/ts-out.2FZb9f 0 2.02/0.00/0.00 sleep 22 finished /tmp/ts-out.g4nEOg 0 3.01/0.00/0.00 sleep 33 finished /tmp/ts-out.E7hDyg 0 4.00/0.00/0.00 sleep 44 finished /tmp/ts-out.iNqnyi 0 5.01/0.00/0.00 sleep 55 finished /tmp/ts-out.zLJ4Ci 0 6.01/0.00/0.00 sleep 66 finished /tmp/ts-out.kjWcqk 0 7.00/0.00/0.00 sleep 77 finished /tmp/ts-out.i9BXum 0 8.01/0.00/0.00 sleep 88 finished /tmp/ts-out.AWi5Dq 0 9.00/0.00/0.00 sleep 99 finished /tmp/ts-out.kVAX0u 0 10.00/0.00/0.00 sleep 10
◦ 一秒ごとに tsコマンドを実行しています
◦ 自動更新されるわけではない
tsのオプション [1/3]ジョブの情報を確認する
2016-09-13 社内勉強会 22
オプション 意味
-t [id] 指定されたジョブの出力を tail -f する
-c [id] 指定されたジョブの出力を cat する
-p [id] 指定されたジョブのプロセス ID を表示する
-o [id] 指定されたジョブの出力ファイル名を表示する
-i [id] 指定されたジョブの情報を表示する
-s [id] 指定されたジョブの状態を表示する
ts -i [id]指定されたジョブの情報を表示する
2016-09-13 社内勉強会 23
$ ts -i 3Exit status: died with exit code 0Command: sleep 4Slots required: 1Enqueue time: Mon Sep 12 22:07:56 2016Start time: Mon Sep 12 22:07:56 2016End time: Mon Sep 12 22:08:00 2016Time run: 4.004059s
tsのオプション [2/3]ジョブの実行を制御する
2016-09-13 社内勉強会 24
オプション 意味
-r [id] 指定されたジョブをキューから取り除く
-w [id] 指定されたジョブが終わるまで待つ
-k [id] 指定されたジョブを kill する (SIGTERM)
-u [id] 指定されたジョブをキューの先頭に移動する
-U <id>-<id> 指定された二つのジョブの位置を入れ替える
tsのオプション [3/3]ジョブを登録するときのオプション
2016-09-13 社内勉強会 25
オプション 意味
-n ジョブの出力をファイルに保存しない
-E ジョブの標準出力と標準エラーを分けて出力する
-g ジョブの出力を gzipする
-f バックグラウンドで fork しない (未確認)
-m ジョブの出力をメールで送信する (未確認)
-d 直前のジョブが正常終了したときだけ実行する
-D <id> 指定されたジョブが正常終了したときだけ実行する
-L <lab> ジョブに名前を付ける
-N <num> ジョブが使うスロット数を指定する
ts -D [id]指定されたジョブが正常終了したときだけ実行する
2016-09-13 社内勉強会 26
$ ts -S 2$ ts sleep 200$ ts sleep 101$ ts -D 0 sleep 52$ ts sleep 53
◦ ID = 2 のジョブは ID = 0 のジョブが正常終了したら実行が始まる
実行の様子実行直後
2016-09-13 社内勉強会 27
$ ts
ID State Output E-Level Times(r/u/s) Command [run=2/2]0 running /tmp/ts-out.flebwV sleep 201 running /tmp/ts-out.RGTygW sleep 102 queued (file) [0]&& sleep 53 queued (file) sleep 5
実行の様子10 秒後
2016-09-13 社内勉強会 28
$ ts
ID State Output E-Level Times(r/u/s) Command [run=2/2]0 running /tmp/ts-out.flebwV sleep 202 queued (file) [0]&& sleep 53 running /tmp/ts-out.4MUpNi sleep 51 finished /tmp/ts-out.RGTygW 0 10.01/0.00/0.00 sleep 10
◦ ID = 1 のジョブが終了する
◦ ID = 2 のジョブは ID = 0 を待っているので実行が開始されない
◦ ID = 3 のジョブの実行が開始される
実行の様子15 秒後
2016-09-13 社内勉強会 29
$ ts
ID State Output E-Level Times(r/u/s) Command [run=1/2]0 running /tmp/ts-out.flebwV sleep 202 queued (file) [0]&& sleep 51 finished /tmp/ts-out.RGTygW 0 10.01/0.00/0.00 sleep 103 finished /tmp/ts-out.4MUpNi 0 5.01/0.00/0.00 sleep 5
◦ ID = 3 のジョブが終了する
◦ ID = 2 のジョブは ID = 0 を待っているので実行が開始されない
実行の様子20 秒後
2016-09-13 社内勉強会 30
$ ts
ID State Output E-Level Times(r/u/s) Command [run=1/2]2 running /tmp/ts-out.c9eVnz [0]&& sleep 51 finished /tmp/ts-out.RGTygW 0 10.01/0.00/0.00 sleep 103 finished /tmp/ts-out.4MUpNi 0 5.01/0.00/0.00 sleep 50 finished /tmp/ts-out.flebwV 0 20.01/0.00/0.00 sleep 20
◦ ID = 0 のジョブが終了する
◦ ID = 2 のジョブの実行が開始される
実行の様子25 秒後
2016-09-13 社内勉強会 31
$ ts
ID State Output E-Level Times(r/u/s) Command [run=0/2]1 finished /tmp/ts-out.RGTygW 0 10.01/0.00/0.00 sleep 103 finished /tmp/ts-out.4MUpNi 0 5.01/0.00/0.00 sleep 50 finished /tmp/ts-out.flebwV 0 20.01/0.00/0.00 sleep 202 finished /tmp/ts-out.c9eVnz 0 5.01/0.00/0.00 [0]&& sleep 5
◦ ID = 2 のジョブが終了する
ところで-D って複数指定できるの?◦ できない!
◦ 右図のような制御ができない
プログラムを修正すればできる◦ 実際できた
◦ -D の値を intで持っているのを配列に変更するだけ
2016-09-13 社内勉強会 32
ここができない!
tsの後片付けバックグラウンドの tsサーバプロセスを終了する
2016-09-13 社内勉強会 33
$ ts -K
◦ 必要になったとき (ジョブを登録したとき等) に自動起動している
おわり詳細は ts -h
説明していないオプションもあるよ
2016-09-13 社内勉強会 34