Linuxで定期的にコマンドを実行してほしいケースってよくあると思います。
例えば特定のプロセスの数をチェックしたいとか。そんな時に便利なのがwatchコマンド。指定した間隔でコマンドを実行してくれます。
watch -n 1 "ps auxw | grep httpd"
Every 1.0s: ps auxw | grep httpd Tue Jun 1 22:49:41 2021 root 10172 0.0 0.7 349304 13048 ? Ss 5月31 0:08 /usr/sbin/httpd -DFOREGROUND apache 10173 0.0 0.4 351520 7984 ? S 5月31 0:00 /usr/sbin/httpd -DFOREGROUND apache 10174 0.0 0.4 351520 7984 ? S 5月31 0:00 /usr/sbin/httpd -DFOREGROUND apache 10175 0.0 0.4 351520 7984 ? S 5月31 0:00 /usr/sbin/httpd -DFOREGROUND apache 10176 0.0 0.4 351520 7980 ? S 5月31 0:00 /usr/sbin/httpd -DFOREGROUND apache 10177 0.0 0.4 351520 7984 ? S 5月31 0:00 /usr/sbin/httpd -DFOREGROUND apache 10178 0.0 0.4 351520 7984 ? S 5月31 0:00 /usr/sbin/httpd -DFOREGROUND apache 10179 0.0 0.4 351520 7980 ? S 5月31 0:00 /usr/sbin/httpd -DFOREGROUND apache 10180 0.0 0.4 351520 7984 ? S 5月31 0:00 /usr/sbin/httpd -DFOREGROUND apache 10362 0.0 0.4 351520 7984 ? S 5月31 0:00 /usr/sbin/httpd -DFOREGROUND root 13101 0.1 0.1 157636 2400 pts/0 S+ 22:49 0:00 watch -n 1 ps auxw | grep httpd root 13242 0.0 0.0 157632 784 pts/0 S+ 22:49 0:00 watch -n 1 ps auxw | grep httpd root 13243 0.0 0.0 113284 1200 pts/0 S+ 22:49 0:00 sh -c ps auxw | grep httpd root 13245 0.0 0.0 112832 948 pts/0 S+ 22:49 0:00 grep httpd
apacheのプロセスを1秒間隔で出力しています。
watch -n 1 -d df -h
Every 1.0s: df -h Fri Jun 4 22:12:47 2021 ファイルシス サイズ 使用 残り 使用% マウント位置 devtmpfs 876M 0 876M 0% /dev tmpfs 887M 0 887M 0% /dev/shm tmpfs 887M 17M 871M 2% /run tmpfs 887M 0 887M 0% /sys/fs/cgroup /dev/mapper/cl-root 18G 1.8G 16G 10% / /dev/sda2 244M 151M 94M 62% /boot /dev/sda1 200M 12M 189M 6% /boot/efi /dev/mapper/cl-home 50G 35M 50G 1% /home /dev/mapper/cl-var 30G 393M 30G 2% /var tmpfs 178M 0 178M 0% /run/user/0 tmpfs 178M 0 178M 0% /run/user/1000
ディスクの使用状況を1秒間隔で出力しています。-dオプションを指定すると、変化した箇所がハイライトされます。
watch -n 1 "netstat -anp | grep httpd | grep ESTABLISHED | wc -l"
Every 1.0s: netstat -anp | grep httpd | grep ESTABLISHED | wc -l Tue Jun 1 22:58:48 2021 3
httpのTCPセッション数を1秒毎に出力しています。TCPセッション数の上限張り付きなどの調査でよく使います。