回答編集履歴

3

tail と grepの間違っていた部分を修正

2018/08/07 13:40

投稿

namda
namda

スコア705

test CHANGED
@@ -28,13 +28,13 @@
28
28
 
29
29
 
30
30
 
31
- lastLogRow=$(grep -n1 /var/log/hoge.log|awk '{print $1}')
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 -n100000 "${lastLogRow}" |grep 起動完了 | |wc -l) -eq 0 ]
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=$(grep -n1 /var/log/hoge.log|awk '{print $1}')` の部分は日時が出力されている前提で日付部分だけ抜き取るawkを使ってます。
71
+ `lastLogRow=$(tail -n1 /var/log/hoge.log|awk '{print $1}')` の部分は日時が出力されている前提で日付部分だけ抜き取るawkを使ってます。
72
72
 
73
73
  しかしこれはログ中に日付の無いログの行が出てると期待通りに動作しません。
74
74
 

2

実行したときの末端ログ以下を関しするロジックを追加

2018/08/07 13:40

投稿

namda
namda

スコア705

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 -n5 '起動完了' /var/log/hoge.log |wc -l) -eq 0 ]
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

読み込み行数制限追加

2018/08/07 10:54

投稿

namda
namda

スコア705

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