回答編集履歴
3
tail と grepの間違っていた部分を修正
test
CHANGED
@@ -28,13 +28,13 @@
|
|
28
28
|
|
29
29
|
|
30
30
|
|
31
|
-
lastLogRow=$(
|
31
|
+
lastLogRow=$(tail -n1 /var/log/hoge.log|awk '{print $1}')
|
32
32
|
|
33
33
|
#[2018-08-07T19:01:02]だけ抜き出して
|
34
34
|
|
35
35
|
#抜き出した日時以降をを出力してカウント
|
36
36
|
|
37
|
-
while [ $(grep -
|
37
|
+
while [ $(grep -A 100000 "${lastLogRow}" |grep 起動完了 | |wc -l) -eq 0 ]
|
38
38
|
|
39
39
|
do
|
40
40
|
|
@@ -68,7 +68,7 @@
|
|
68
68
|
|
69
69
|
起動しないと無限ループになるので、規定数になったら無限ループを止める処理も必要です。
|
70
70
|
|
71
|
-
`lastLogRow=$(
|
71
|
+
`lastLogRow=$(tail -n1 /var/log/hoge.log|awk '{print $1}')` の部分は日時が出力されている前提で日付部分だけ抜き取るawkを使ってます。
|
72
72
|
|
73
73
|
しかしこれはログ中に日付の無いログの行が出てると期待通りに動作しません。
|
74
74
|
|
2
実行したときの末端ログ以下を関しするロジックを追加
test
CHANGED
@@ -18,7 +18,23 @@
|
|
18
18
|
|
19
19
|
|
20
20
|
|
21
|
+
#[2018-08-07T19:01:00] 10.10.10.1 - - 起動完了
|
22
|
+
|
23
|
+
#[2018-08-07T19:01:01] 10.10.10.1 - - Login
|
24
|
+
|
25
|
+
#[2018-08-07T19:01:02] 10.10.10.1 - - Logout
|
26
|
+
|
27
|
+
#のようなログと前提し
|
28
|
+
|
29
|
+
|
30
|
+
|
31
|
+
lastLogRow=$(grep -n1 /var/log/hoge.log|awk '{print $1}')
|
32
|
+
|
33
|
+
#[2018-08-07T19:01:02]だけ抜き出して
|
34
|
+
|
35
|
+
#抜き出した日時以降をを出力してカウント
|
36
|
+
|
21
|
-
while [ $(grep -n
|
37
|
+
while [ $(grep -n100000 "${lastLogRow}" |grep 起動完了 | |wc -l) -eq 0 ]
|
22
38
|
|
23
39
|
do
|
24
40
|
|
@@ -50,9 +66,13 @@
|
|
50
66
|
|
51
67
|
|
52
68
|
|
53
|
-
|
69
|
+
起動しないと無限ループになるので、規定数になったら無限ループを止める処理も必要です。
|
54
70
|
|
71
|
+
`lastLogRow=$(grep -n1 /var/log/hoge.log|awk '{print $1}')` の部分は日時が出力されている前提で日付部分だけ抜き取るawkを使ってます。
|
72
|
+
|
55
|
-
|
73
|
+
しかしこれはログ中に日付の無いログの行が出てると期待通りに動作しません。
|
74
|
+
|
75
|
+
その場合grepやakwで日付がでてる最後の行を取得するようにしなければなりません。
|
56
76
|
|
57
77
|
|
58
78
|
|
1
読み込み行数制限追加
test
CHANGED
@@ -18,7 +18,7 @@
|
|
18
18
|
|
19
19
|
|
20
20
|
|
21
|
-
while [ $(grep '起動完了' /var/log/hoge.log |wc -l) -eq 0 ]
|
21
|
+
while [ $(grep -n5 '起動完了' /var/log/hoge.log |wc -l) -eq 0 ]
|
22
22
|
|
23
23
|
do
|
24
24
|
|