はじめに
OS内の作業前後にサービス状態を取得比較する機会が多々あり、コマンドで効率的に取得する方法を調べたので、簡単にはまとめてみる。
windowsはサービス一覧画面から一覧をエクスポートする方法がありますが、あれだとサービスの説明まで引っこ抜かれてしまい見づらい。
scコマンドなら多少見やすくなる。
> sc query state= all
・
・
SERVICE_NAME: WpnUserService_291644
DISPLAY_NAME: Windows Push Notifications User Service_291644
TYPE : f0 ERROR
STATE : 4 RUNNING
(STOPPABLE, NOT_PAUSABLE, ACCEPTS_PRESHUTDOWN)
WIN32_EXIT_CODE : 0 (0x0)
SERVICE_EXIT_CODE : 0 (0x0)
CHECKPOINT : 0x0
WAIT_HINT : 0x0
・
・
ただ、実際知りたいのはサービス名と状態だけなので、パイプでつないでfindstrコマンドでソート。
※findstrコマンド・・・文字列・正規表現により文字列を検索するコマンド。
> sc query state= all | findstr /C:SERVICE_NAME /C:STATE
・
・
SERVICE_NAME: WpnUserService_291644
STATE : 4 RUNNING
・
・
あとは、fcコマンドで比較してあげればオケ。
> fc /n C:\Users\Administrator\Desktop\作業前.txt C:\Users\Administrator\Desktop\作業後.txt
ファイル C:\USERS\ADMINISTRATOR\DESKTOP\作業前.txt と C:\USERS\ADMINISTRATOR\DESKTOP\作業後.TXT を比較しています
***** C:\USERS\ADMINISTRATOR\DESKTOP\作業前.txt
513: SERVICE_NAME: WpnUserService_291644
514: STATE : 4 RUNNING
***** C:\USERS\ADMINISTRATOR\DESKTOP\作業後.TXT
513: SERVICE_NAME: WpnUserService_291644
514: STATE : 4 hogehoge ← 変わったところが表示される。
*****
Linux(RHEL系)の場合
Linuxの場合は色々取得方法があるかと思いますが、
自分なりにわかりやすかったのはsystemctlコマンドによる一覧取得。
# systemctl list-units --type=service
UNIT LOAD ACTIVE SUB DESCRIPTION
・
smartd.service loaded active running Self Monitoring
一度ファイルに起こしてから、sortコマンドで特定列のみソートしてあげる。
あとは、diffコマンドで-cなりオプションをつけて比較。
# diff -c 作業前ファイル 作業後ファイル
まとめ
目視での比較は中々辛いものがあるので、コマンドで少しでも見やすくなるといいですね。また、比較ソフトとかが入ってない環境も時にはあるので、そゆときには使えるかな。。