こんにちは。サイオステクノロジーの橋本です。
今回は運用上役に立ちそうなコマンドや tips をまとめてみました。
なぜまとめたのかというの、私がよく忘れて都度都度調べたりするのがめんどくさくなったからです….
1: vmstat や iostat の結果に時刻を付ける
・使いどころ
vmstat が特に顕著ですが、便利ですが一体いつの時間の情報かわからないことがよくあります。
これを利用することで時刻も併せて表示させることが可能です。
・コマンド実行例
$ vmstat 1 | awk '{print strftime("%y/%m/%d %H:%M:%S"), $0}'
23/01/23 13:57:52 procs -----------memory---------- ---swap-- -----io---- -system-- ------cpu-----
23/01/23 13:57:52 r b swpd free buff cache si so bi bo in cs us sy id wa st
23/01/23 13:57:52 2 0 0 291208 2104 352384 0 0 1975 402 332 721 5 6 79 1 9
23/01/23 13:57:53 0 0 0 290824 2104 352388 0 0 0 8 228 378 2 3 95 0 0
23/01/23 13:57:54 0 0 0 290840 2104 352392 0 0 0 8 216 354 1 3 96 0 0
$ iostat -txyh 1 | awk '{print strftime("%y/%m/%d %H:%M:%S"), $0}' 23/01/23 13:58:28 Linux 4.18.0-425.3.1.el8.x86_64 (ip-172-31-21-200.ap-northeast-1.compute.internal) 2023年01月23日 _x86_64_ (1 CPU) 23/01/23 13:58:28 23/01/23 13:58:29 2023年01月23日 13時58分29秒 23/01/23 13:58:29 avg-cpu: %user %nice %system %iowait %steal %idle 23/01/23 13:58:29 0.0% 0.0% 0.0% 0.0% 0.0% 0.6% 23/01/23 13:58:29 23/01/23 13:58:29 r/s w/s rkB/s wkB/s rrqm/s wrqm/s %rrqm %wrqm r_await w_await aqu-sz rareq-sz wareq-sz svctm %util Device 23/01/23 13:58:29 0.00 1.00 0.0k 8.0k 0.00 0.00 0.0% 0.0% 0.00 1.00 0.00 0.0k 8.0k 2.00 0.2% xvda 23/01/23 13:58:29
2: ping の結果に時刻を付与する
・使いどころ
ネットワーク調査の際に利用
アプリケーションのレスポンス遅延などを調査する際にネットワークの問題を排除するために利用します。
ping の場合は上記の方法だと統計情報が取れない場合があるので以下の方法で時刻を付与します。
500 msec という細かい実行間隔および極めて小さいパケットサイズで実行することで、
より機敏にネットワークトラブルを検知したい思いがあります。
・コマンド実行例
$ ping -s 1 -i 0.5 localhost | (trap : INT QUIT; while read line; do echo $(date +"%Y/%m/%d_%H:%M:%S.%3N :") $line; done) 2023/01/23_13:58:42.005 : PING localhost(localhost (::1)) 1 data bytes 2023/01/23_13:58:42.007 : 9 bytes from localhost (::1): icmp_seq=1 ttl=64 2023/01/23_13:58:42.510 : 9 bytes from localhost (::1): icmp_seq=2 ttl=64 2023/01/23_13:58:43.014 : 9 bytes from localhost (::1): icmp_seq=3 ttl=64 2023/01/23_13:58:43.518 : 9 bytes from localhost (::1): icmp_seq=4 ttl=64 ^C2023/01/23_13:58:43.554 : 2023/01/23_13:58:43.556 : --- localhost ping statistics --- 2023/01/23_13:58:43.557 : 4 packets transmitted, 4 received, 0% packet loss, time 1512ms 2023/01/23_13:58:43.558 :
3: 特定ディレクトリ配下のファイルすべてのハッシュ値を取得する
・使いどころ
作業前後でファイルの変更有無を検知する
ハッシュ値は同一の入力に対しては同一の結果を返し、その結果は (基本的に) 重複しません。
つまり、全く同じファイルなら全く同じハッシュ値が取得できます。
対し、ファイルに少しでも差異があるなら全く異なる結果となります。
例えば特定の作業前後で /etc 配下のすべてのファイルハッシュ値を取得し、
比較すれば意図していないファイルの編集などを検知すること可能です。
・コマンド実行例
# find /etc -type f | xargs sha512sum > /tmp/sha512_$(date +%Y%m%d_%H%M%S).txt # more /tmp/sha512_20230123_140011.txt ce307f87b90e0a0d09335577283ab4509802b43d14725d76c65139f6625f7e4fe636f41c9c398ccc9a2c70b229a34fd796b8ae0e9f5f3720e43f727a60232167 /etc/pki/tls/ct_log_list.cnf 50e9de1a0ccb3c72ad8863f78a101f2ad90ba888561676df40204e149a455f9edc443a3f95eb9e7be9376c27af90298615ce0de1269558cc15e87956b4432d4b /etc/pki/tls/openssl.cnf ~後略~
4: 重要なコマンドを実行する際の実行方法
・使いどころ
重要なコマンド (例えばサービスの再起動) を実行する際の tips です
・コマンド実行例
date ; 「実行コマンド」 ; echo "${?}" ; date date ; systemctl restart httpd ; echo "${?}" ; date
上記のように実行することで実行時刻、コマンドが正常に実行されたか、コマンド完了時刻を一目で把握することが可能です。
5: 正規表現でファイルを削除する前のひと手間
・使いどころ
ディレクトリの中にたくさんある不要なファイルを 「rm -rf ./*」で
削除する際のひと手間です。
・コマンド実行例
rm -rf ./* → tab キーを 2 回押す
# rm -rf ./* Display all 131 possibilities? (y or n) foo_001.txt foo_018.txt foo_035.txt foo_052.txt foo_069.txt foo_086.txt foo_11.txt foo_27.txt foo_002.txt foo_019.txt foo_036.txt foo_053.txt foo_070.txt foo_087.txt foo_12.txt foo_28.txt foo_003.txt foo_020.txt foo_037.txt foo_054.txt foo_071.txt foo_088.txt foo_13.txt foo_29.txt foo_004.txt foo_021.txt foo_038.txt foo_055.txt foo_072.txt foo_089.txt foo_14.txt foo_3.txt foo_005.txt foo_022.txt foo_039.txt foo_056.txt foo_073.txt foo_090.txt foo_15.txt foo_30.txt foo_006.txt foo_023.txt foo_040.txt foo_057.txt foo_074.txt foo_091.txt foo_16.txt foo_4.txt foo_007.txt foo_024.txt foo_041.txt foo_058.txt foo_075.txt foo_092.txt foo_17.txt foo_5.txt foo_008.txt foo_025.txt foo_042.txt foo_059.txt foo_076.txt foo_093.txt foo_18.txt foo_6.txt foo_009.txt foo_026.txt foo_043.txt foo_060.txt foo_077.txt foo_094.txt foo_19.txt foo_7.txt foo_010.txt foo_027.txt foo_044.txt foo_061.txt foo_078.txt foo_095.txt foo_2.txt foo_8.txt foo_011.txt foo_028.txt foo_045.txt foo_062.txt foo_079.txt foo_096.txt foo_20.txt foo_9.txt foo_012.txt foo_029.txt foo_046.txt foo_063.txt foo_080.txt foo_097.txt foo_21.txt log.txt foo_013.txt foo_030.txt foo_047.txt foo_064.txt foo_081.txt foo_098.txt foo_22.txt foo_014.txt foo_031.txt foo_048.txt foo_065.txt foo_082.txt foo_099.txt foo_23.txt foo_015.txt foo_032.txt foo_049.txt foo_066.txt foo_083.txt foo_1.txt foo_24.txt foo_016.txt foo_033.txt foo_050.txt foo_067.txt foo_084.txt foo_10.txt foo_25.txt foo_017.txt foo_034.txt foo_051.txt foo_068.txt foo_085.txt foo_100.txt foo_26.txt #
こうすることで削除対象のファイルが候補として表示されるわけです。
これを利用して重要なファイルがないか確認をしましょう。