便利コマンド whileで繰り返し同じコマンドをうつ

Linuxネタ

「while :」で繰り返しコマンドを実行できる。応用も効くので覚えておくと便利。

以下はwhileを使用して5秒に1度pingと現在時刻確認を確認する動作を繰り返す例。Ctrl+Cでキャンセルするまで繰り返す。

[root@cent7S2 /]#
[root@cent7S2 /]# while :
> do
> ping -c 1 192.168.56.102
> date
> echo "================================"
> sleep 5
> done
PING 192.168.56.102 (192.168.56.102) 56(84) bytes of data.
64 bytes from 192.168.56.102: icmp_seq=1 ttl=64 time=0.539 ms

--- 192.168.56.102 ping statistics ---
1 packets transmitted, 1 received, 0% packet loss, time 0ms
rtt min/avg/max/mdev = 0.539/0.539/0.539/0.000 ms
2021年  9月  1日 水曜日 23:34:34 JST
================================
PING 192.168.56.102 (192.168.56.102) 56(84) bytes of data.
64 bytes from 192.168.56.102: icmp_seq=1 ttl=64 time=0.392 ms

--- 192.168.56.102 ping statistics ---
1 packets transmitted, 1 received, 0% packet loss, time 0ms
rtt min/avg/max/mdev = 0.392/0.392/0.392/0.000 ms
2021年  9月  1日 水曜日 23:34:39 JST
================================

historyでみると、1行のコマンドして認識されているので、再利用するときは1行コマンドをコピーして実行してもよい。

[root@cent7S2 /]# history 3
  434  while :; do ping -c 1 192.168.56.102; date; echo "================================"; sleep 5; done
  435  history 5
  436  history 3

以上