回答編集履歴

1

書きかけを修正

2019/12/16 01:42

投稿

退会済みユーザー
test CHANGED
@@ -1,3 +1,9 @@
1
+ pingの回数については、コメントなどに譲るとして、少し別角度から。
2
+
3
+
4
+
5
+
6
+
1
7
  Cent OS 7ですが、pingのmanにはこうあります。
2
8
 
3
9
 
@@ -28,9 +34,27 @@
28
34
 
29
35
 
30
36
 
37
+ なので、コメントにもある通り、『何が成功か』をはっきりさせる必要があると思います。
38
+
31
- といったループに入ばいいんですけれども単に2重ループにするとかでping失敗した場合、そこで処理が止ってしまうでしょう
39
+ 例えば、1回でも成功すればいいのか、15回成功しなければ意味がないのかちょと考える必要あるとおもい
40
+
41
+ それによって、ping 1回の実行結果を全部取ってきて、全部成功したら、無視する(例えば$?をすべて足して0なら全部成功)のか、それとも単に-c 15オプションで行くのかが変わります。
32
42
 
33
43
 
44
+
45
+ ご提示頂いたシェルスクリプトは、pingの処理を逐一待つことになるので、台数が増えてゆく場合は、1台毎の回数が増えるに従い、だんだん時間がかかります。
46
+
47
+
48
+
49
+ 台数が少なければ、あまり問題になりませんが、
50
+
51
+ 15回ではたった4台のチェックで実行時間は1分になってしまいますよね。
52
+
53
+ 100台なら、25分もかかります。
54
+
55
+
56
+
57
+ ループに入れればいいんですけれども、単に2重ループにすると、どっかでping失敗した場合は、そこで処理が止まってしまうでしょう。
34
58
 
35
59
  そこで、バックグラウンド実行の出番です。
36
60
 
@@ -58,6 +82,4 @@
58
82
 
59
83
  こうしてみると、それぞれが並列にsleepしているため今度は一瞬で終わってしまうでしょう。
60
84
 
61
-
62
-
63
- ヒントになっていますかね
85
+ 100台乗っても大丈夫