しらべっぱなし帽子

調べっぱなしにしないためのメモ。

WindowsとLinuxのサービス状態比較コマンドまとめ

はじめに

OS内の作業前後にサービス状態を取得比較する機会が多々あり、コマンドで効率的に取得する方法を調べたので、簡単にはまとめてみる。

 

Windowsの場合

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 作業前ファイル 作業後ファイル

 

まとめ

目視での比較は中々辛いものがあるので、コマンドで少しでも見やすくなるといいですね。また、比較ソフトとかが入ってない環境も時にはあるので、そゆときには使えるかな。。