Windows 2000 Insider/PC Insider合同特別企画

Windows XPの正体
強化されたコマンドライン・ツール(中編)

3.タスク制御ユーティリティ

デジタルアドバンテージ
2001/11/08

 タスク制御のためのコマンドライン・ユーティリティとしては、以下の2つが新しく用意されている。タスクの一覧表示と強制終了の2つが行える。

■tasklist.exe――タスク一覧の表示
 これはシステム内(ローカルだけでなく、リモートのWindowsマシンでも指定可)で稼働しているプロセスの一覧を表示するためのコマンドである。GUIのタスクマネージャなどでもタスクの一覧を表示することはできるが、このコマンドでは、より詳細にタスクの状態を調べたり、リモートのマシンのタスクを調べたりすることもできる。また、ユーザー名や(プロセスに含まれる)実行モジュール名、セッション番号(ターミナルサービスを利用している、各ユーザー単位のセッションを表す番号)、使用メモリ量、(消費した)CPU時間などの条件を指定して、特定のプロセスだけを取り出して出力することができる。例えばタスクジューラと組み合わせれば、一定時間ごとにメモリを多く消費しているプロセスだけを選択して、ログに残すなどの操作が可能だろう。

 また/SVCオプションを指定すれば、各プロセス内で実行されているサービスを表示させることもできる。

C:\>tasklist /svc  …プロセスとサービスの情報を表示する

イメージ名                   PID サービス ↓↓…プロセスごとのサービス一覧
========================= ====== =============================================
System Idle Process            0 N/A
System                         4 N/A
smss.exe                     596 N/A
csrss.exe                    804 N/A
winlogon.exe                 872 N/A
services.exe                 916 Eventlog, PlugPlay
lsass.exe                    928 PolicyAgent, ProtectedStorage, SamSs
svchost.exe                 1104 RpcSs
svchost.exe                 1232 AudioSrv, Browser, CryptSvc, Dhcp, dmserver,
                                 ERSvc, EventSystem,
                                 FastUserSwitchingCompatibility, helpsvc,
                                 lanmanserver, lanmanworkstation, Messenger,
                                 Netman, Nla, Schedule, seclogon, SENS,
                                 ShellHWDetection, srservice, TermService,
                                 Themes, TrkWks, uploadmgr, W32Time, winmgmt,
                                 WmdmPmSp, wuauserv, WZCSVC
svchost.exe                 1460 Dnscache
svchost.exe                 1512 LmHosts, RemoteRegistry, SSDPSRV, WebClient
spoolsv.exe                 1640 Spooler
nvsvc32.exe                 1784 NVSvc
svchost.exe                 1816 stisvc
explorer.exe                 640 N/A
ctfmon.exe                   828 N/A
wpabaln.exe                 1760 N/A
csrss.exe                    788 N/A
winlogon.exe                 812 N/A
  ……(以下省略)

 この例ではプロセスに含まれるサービスの一覧を表示させているが、これと“netstat -o”コマンドを組み合わせると、ある特定のTCP/UDPサービスを利用しているプロセスを見つけることができる。

C:\>netstat -na -o  …「-na」は一覧の表示、「-o」はプロセスの表示オプション

Active Connections
 ↓↓右端に表示されているのがプロセスのID
  Proto  Local Address          Foreign Address        State           PID
  TCP    0.0.0.0:135            0.0.0.0:0              LISTENING       1104
  TCP    0.0.0.0:445            0.0.0.0:0              LISTENING       4
  TCP    0.0.0.0:1025           0.0.0.0:0              LISTENING       1232
  TCP    0.0.0.0:1171           0.0.0.0:0              LISTENING       4
  TCP    0.0.0.0:1362           0.0.0.0:0              LISTENING       2000
  TCP    0.0.0.0:1363           0.0.0.0:0              LISTENING       2000
  TCP    0.0.0.0:1364           0.0.0.0:0              LISTENING       2000
  TCP    0.0.0.0:3389           0.0.0.0:0              LISTENING       1232
  TCP    0.0.0.0:5000           0.0.0.0:0              LISTENING       1512
  TCP    192.168.0.107:139      0.0.0.0:0              LISTENING       4
  TCP    192.168.0.107:1176     0.0.0.0:0              LISTENING       4
……(以下省略)……

 このnetstatの結果を見ると、例えばTCPの5000番ポートで待ち受けしているサービスのプロセスIDは「1512」であることが分かる。すると先ほどのtasklistの実行結果から、それは「LmHosts、RemoteRegistry、SSDPSRV、WebClient」サービスを実行しているsvchost.exeというプロセスがオープンしたものであるということが分かる。より詳細に調べたければ、それぞれのサービスを停止/再開させて、netstatの実行結果などと照らし合わせてみればよい。このような情報は、ネットワークのトラブルシューティングやファイアウォールの設定などに役に立つだろう。

■taskkill.exe――タスクの終了
 これは指定したプロセスを終了させるためのコマンドである。指定したPID(プロセスID)を持つプロセスを終了させるだけでなく、先ほどのtasklistの場合と同様に、ユーザー名やセッション番号、実行モジュール名、使用メモリ量、(消費した)CPU時間などを組み合わせた条件を指定して、それに合致するプロセスをすべて同時に終了させることもできる。もちろんリモートのホスト上のプロセスも指定することができる。

C:\>taskkill /s server /fi "username eq hiroy-u"
 ↑…server上で実行されているユーザーhiroy-uのプロセスをすべて終了させる

ネットワーク関連ユーティリティ

 Windows XPのネットワーク関連ツールとしては、新しく以下のgetmacが増えたぐらいで、ほかには目立ったコマンドライン・ツールは追加されていない(IPv6関連ツールは除く)。その分、既存のツールの機能がいくらか強化されているようである。

■getmac.exe――MACアドレスの取得
 システムに接続されているネットワーク・カードのMACアドレスを取得するためのツールである。インターフェイス名と物理MACアドレス、トランスポート名などを一覧にして取得、表示することができる。他のコマンドと同様に、リモート・システムのMACアドレスを調べることもできるし、出力をCSV形式にすることもできるので、多数のクライアント・マシンをリモート管理する場合に有用なツールである。ただし、アドレスを取得できる相手のシステムは、Windows NTやWindows 2000、Windows XPだけに限られる(Windows 9x/Me系は不可)。

C:\>getmac /s server01  …リモートのサーバシステムのMACアドレスを表示させる

物理アドレス        トランスポート名
=================== ==========================================================
00-A0-C9-B4-08-22   \Device\Tcpip_{34967FCC-0B3C-4565-B7F4-601A07A4FBEB},
                    \Device\AppleTalk_{34967FCC-0B3C-4565-B7F4-601A07A4FBEB}

C:\>getmac /v /fo csv  …ローカルのMACアドレスをCSV形式で表示、出力させる

"接続名","アダプタ","物理アドレス","トランスポート名"
"ローカル エリア接続 2","Planex FNW-9700-T Fast Ethernet Adapter","00-90-CC-01-D7-F1","メディアが切断されています"
"ローカル エリア接続","3Com EtherLink Server 10/100 PCI (3C980B-TX)","00-50-DA-05-4E-40","\Device\Tcpip_{32CB8FD0-778F-41AC-910E-E8DDC7DF4A07}"
↑↑…2つのインターフェイスのMACアドレスが表示されている


 INDEX
  強化されたコマンドライン・ツール(前編)
  強化されたコマンドライン・ツール(中編)
    1.ディスク/ファイル関連ツール(1)
    2.ディスク/ファイル関連ツール(2)
  3.タスク制御ユーティリティ
  強化されたコマンドライン・ツール(後編)
    4.イベント・ログ/レジストリ関連ツール
    5.その他のユーティリティ
 
 「Windows XPの正体」


Windows Server Insider フォーラム 新着記事
@ITメールマガジン 新着情報やスタッフのコラムがメールで届きます(無料)

注目のテーマ

Windows Server Insider 記事ランキング

本日 月間