(0)目次&概説
(1) 記事の目的
(1-1) 目的
(2) プロセスについて
(2-1) プロセスとは?
(2-2) バックグラウンドプロセスとは?
(2-3) コマンドでプロセスを探す方法
(3) サービスについて
(3-1) サービスとは?
(3-2) サービスとプロセスの違いは?
(1) 記事の目的
(1-1) 目的
・Windows(OS)のプロセスとサービスの意味や違いについて理解する事。
・コマンドを利用してプロセスの検索が行える事。
(2) プロセスについて
(2-1) プロセスとは?
(2-2) バックグラウンドプロセスとは?
・ただしプロセスの中でも時々「サービスではない」ものの、デスクトップでのやり取りなく(GUI等がなく)バックグラウンドで動作するものもあり、これらを「バックグラウンドプロセス」と呼んでいます。
・バッググラウンドプロセスとサービスは似ているものの、バッググラウンドプロセスは「ユーザープロセス」を実行しているのに対して、サービスは「Windowsプロセス」を実行しているため、より多くの権限が付与されています。
(2-3) コマンドでプロセスを探す方法
コマンドプロンプト(cmd)からプロセスに関する照会や操作を行うためのコマンドをいくつか紹介します。
①プロセスの状態やPIDを確認
> tasklist
(図231)
②プロセス名を指定して照会
「eq」は比較演算子で左辺(Imagename=プロセス名を表す単語)が右辺(探したいプロセス名)に等しい(equal)という意味になります。ワイルドカード(*)での前方一致検索も可能です。
> tasklist /fi "Imagename eq [Process name].exe" > tasklist /fi "Imagename eq [Partial Process Name]*"
③プロセスの停止
> taskkill /pid [Process ID]
(3) サービスについて
(3-1) サービスとは?
・ユーザがアプリケーションを起動しているか否かにかかわらず見えない部分(バックグラウンド)で起動しているプログラムです(デスクトップからはやり取りが行われない)
■GUIなし
・昔のWindows(Vista以前)ではサービスのGUIがありましたが、現在ではGUIはありません。
■OSブートと同時に起動
・サービスは基本的にOSの起動と同時に自動で開始しますが、ユーザー側にて手動で起動、停止、再起動などの操作も可能です。
・更にはイベントに応じて起動させる事も可能です(イベントや特定のエラーなどをトリガーにする)
■実態は「svchost.exe」(の場合が多い)
・多くの場合、サービスは「svchost.exe」(Windows Service Host Process)のインスタンスとして実行されます(svchost.extの実行時の引数にサービス名を指定する)
(3-2) サービスとプロセスの違いは?
以上を踏まえて、プロセスとサービスの違いを簡単ですが表で比較します。
(表)プロセスとサービスの違い
比較項目 | プロセス | サービス |
起動 | デスクトップから起動 | OS起動時に自動起動 (バックグラウンドで動作) |
ユーザがログオフした時 | 停止する | 継続起動する |
GUI | 基本ある (ないプロセスもあり) |
原則ない |
起動ユーザ | 通常ユーザ | ローカルシステムアカウント (管理者権限あり) |
起動・停止コマンド | 起動 cmdでexeファイルのあるディレクトリに移動してファイル名を入力・実行 > [exeファイル名].exe 停止 > taskkill /pid [Process ID] |
起動 > NET START [Service Name] 停止 > NET STOP [Service Name] |
その他 | SCM(Service Control Manager)の指示を受けるための特別なコードを記載する必要がある |