前回までは、
- 第1回:現在地・ファイル一覧・ディレクトリ移動 「Windows・Mac・Linuxで現在地・ファイル一覧・移動を確認する|コマンドライン入門①」
- 第2回:ファイル・フォルダの作成・コピー・移動・削除 「Windows・Mac・Linuxでファイル操作を比較する|作成・コピー・移動・削除|コマンドライン入門②」
を、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-Servicekillsystemctl 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で比較します。