1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Windows・Mac・Linuxでプロセスとサービスを確認する|Get-Process・ps・systemctl|コマンドライン入門③

1
Posted at

前回までは、

を、Windows PowerShell / macOS / Linux で比較しました。

第3回では、

今、何が動いているのか?
このアプリは動いている?
バックグラウンドのサービスは起動している?

を確認する方法を整理します。

今回も、コマンド一覧を並べるだけではなく、

「動作中のものを確認したい」

という実務目的から比較します。


1. まず整理:プロセスとサービスは何が違う?

最初に、この2つをざっくり整理しておきます。

プロセス

今実行されているプログラムの単位です。

たとえば、

  • エディタ
  • ブラウザ
  • ターミナル
  • バックグラウンド処理

など、OS上で動いている実行単位をプロセスとして見ます。

サービス

主にバックグラウンドで継続動作する機能・仕組みです。

たとえば、

  • ネットワーク関連
  • 印刷関連
  • 更新処理
  • サーバー機能

などです。

サービスも最終的にはプロセスとして動くことがありますが、初心者向けにはまず、

プロセス = 今動いているプログラム
サービス = 主に裏側で動く継続機能

くらいで考えると分かりやすいです。


2. PIDとは何か

プロセス一覧を見ると、よく PID が出てきます。

PID は、

OSが動作中のプロセスを識別するための番号

です。

同じアプリ名でも、複数のプロセスが動いていれば、PIDはそれぞれ別になります。

たとえばブラウザは1つ起動しているように見えても、内部では複数プロセスになっていることがあります。


3. 今動いているプログラムを一覧で見たい

まずは一番基本の操作です。


Windows PowerShell

Get-Process

これで現在動いているプロセス一覧を確認できます。

特定の名前で絞るなら、

Get-Process -Name notepad

のようにします。


macOS

ps aux

でプロセス一覧を表示できます。

ps だけでも使えますが、実務では ps aux の方が一覧として見やすいことが多いです。


Linux

ps aux

です。

Linuxでも ps 単体より、ps aux の形で使うことが多いです。


4. 3OSで何が違うか

同じ「一覧を見る」でも、WindowsとUnix系では考え方が少し違います。

Windows PowerShell

Get-Process は、単なる文字列一覧ではなく、

プロセスを表すオブジェクト

を返します。

そのため、後ろでさらに並べ替えや絞り込みをしやすいです。

macOS / Linux

ps aux は、基本的に

テキスト形式の一覧

を出力します。

そのため、後段で使うときもテキストを前提に処理することが多いです。

つまり、

PowerShell
→ オブジェクトをパイプで渡す

Unix系 shell
→ テキストをパイプでつなぐ

という違いがあります。

どちらが優れているという話ではなく、思想の違いです。


5. WindowsではCPU使用量の高いプロセスを見たい

例えば、

PCが重い。CPUを多く使っているプロセスを見たい

という場面です。

PowerShellでは、次のようにできます。

Get-Process | Sort-Object CPU -Descending

これでCPU使用時間の多い順に並べられます。

画面が長いときは、上位だけ見たいこともあります。

Get-Process | Sort-Object CPU -Descending | Select-Object -First 10

のようにすると、上位10件だけ確認できます。


6. macOS / Linuxでは top でリアルタイムに見る

Unix系では、重いときの確認として top がよく使われます。

macOS

top

Linux

top

です。

top は、現在の状態を継続的・リアルタイムに見られるのが特徴です。

一方 ps aux は、

実行した瞬間の一覧を見る

のに向いています。

整理すると、

ps
→ その時点の一覧

top
→ 継続的に監視

です。


7. 特定のプロセスを探したい

例えば、

このアプリは本当に動いている?

を見たい場合です。


Windows PowerShell

Get-Process -Name notepad

のように、名前で確認できます。

対象がなければエラーや空結果になります。


macOS / Linux

一覧から探すなら、例えば次のようにします。

ps aux | grep ssh

あるいはアプリ名で検索します。

ただし grep 自身も一覧に出ることがあるため、慣れないうちは少しややこしく感じるかもしれません。

今回は深掘りしませんが、

Unix系はテキスト出力をさらに文字列検索する

という流れがよくある、くらいに押さえておくとよいです。


8. サービスを確認したい

ここからはサービスです。


Windows PowerShell

一覧を見るなら、

Get-Service

特定のサービスなら、

Get-Service -Name Spooler

のようにします。

Status が Running か Stopped かを見ることで、動作状況を確認できます。


macOS

macOSではLinuxの systemctl のような統一的な見え方とは少し違います。

概要を知る目的なら、

launchctl list

などがあります。

ただし macOS のサービス管理は launchd を中心にしており、Linuxの systemd とそのまま同一ではありません。

今回は、

macOSでは launchctl でバックグラウンド処理の管理系に触れられる

程度の紹介にとどめます。


Linux

Linuxで systemd 採用環境なら、

systemctl

や、

systemctl status ssh

のように確認できます。

ただし注意点として、

すべてのLinuxで systemctl が使えるとは限りません。

今回は systemd を採用しているLinuxを前提にしています。


9. プロセスとサービスの違いを実感する

例えば、

  • ブラウザを起動している
  • 画面には見えていないが、印刷サービスやネットワークサービスが動いている

というとき、

ブラウザは「ユーザーが起動したプロセス」として意識しやすいです。

一方、サービスは普段は見えにくく、OSや機能を支える裏方として動いています。

今回のコマンドで見る対象も、

Get-Process / ps / top
→ プロセス寄り

Get-Service / launchctl / systemctl
→ サービス寄り

というイメージを持つと分かりやすいです。


10. 実務例:PCが重いとき何を見るか

例えば、

PCが重い
何が原因かざっくり見たい

ときです。

Windows

PowerShellで、

Get-Process | Sort-Object CPU -Descending | Select-Object -First 10

のように上位を見る。

必要ならメモリ使用量も見ます。

macOS / Linux

まずは

top

でリアルタイムに確認する。

必要なら ps aux で一覧を見直します。

このように、

完全に同じ見方にはならないが、「重そうなものを見る」という目的は共通

です。


11. 停止操作は今回は主題にしない

今回の中心は、

確認すること

です。

そのため、

  • Stop-Service
  • kill
  • systemctl stop

などの停止操作は深掘りしません。

初心者の段階で、ネットワークやOSの重要サービスを不用意に止めるとトラブルの元になりやすいためです。

まずは、

何が動いているかを見る

ところまでを確実にする方が大事です。


12. 一連で試すなら

Windows PowerShell

Get-Process
Get-Process -Name notepad
Get-Service
Get-Service -Name Spooler

macOS

ps aux
top
launchctl list

Linux

ps aux
top
systemctl
systemctl status ssh

こうして並べると、3OSでコマンドは違っても、見たいものは共通だと分かります。


まとめ

今回の対応関係をまとめると、次のようになります。

やりたいこと Windows PowerShell macOS Linux
動作中プロセス一覧 Get-Process ps aux ps aux
特定プロセス確認 Get-Process -Name ps aux | grep ps aux | grep
リアルタイム確認 (用途に応じて並べ替え等) top top
サービス一覧 Get-Service launchctl(概要) systemctl
特定サービス確認 Get-Service -Name launchctl(用途次第) systemctl status <name>

今回特に重要なのは、

プロセス
= 今動いているプログラム

サービス
= 主にバックグラウンドで継続動作する仕組み

という違いと、

PowerShell
→ オブジェクト中心

Unix系
→ テキスト中心

という思想の違いです。

次回は最終回として、

「ネットワーク確認|IP・DNS・Gateway・疎通」

をWindows / Mac / Linuxで比較します。


1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?