言語
日本語
English

Caution

お使いのブラウザはJavaScriptが無効になっております。
当サイトでは検索などの処理にJavaScriptを使用しています。
より快適にご利用頂くため、JavaScriptを有効にしたうえで当サイトを閲覧することをお勧めいたします。

Linux & Mac & Bashコマンド辞典

  1. トップページ
  2. Linux & Mac & Bashコマンド辞典
  3. Linux の基礎知識

Linux の基礎知識

『Linux』は、カーネルとユーザースペースを明確に分離した設計を持つオペレーティングシステムです。カーネルはハードウェアを直接制御し、プロセス管理・メモリ管理・ファイルシステム・デバイスドライバを担当します。ユーザースペースで動作するプログラムは、システムコールを通じてのみカーネルに処理を依頼します。プロセスにはフォアグラウンドで動作するものとバックグラウンドで常時稼働するデーモンがあり、それぞれ異なる役割と起動方法を持ちます。

構文

# -----------------------------------------------
#  カーネルとシェルの関係
# -----------------------------------------------

# ユーザーはシェル(bash / zsh 等)を通じてカーネルに命令を渡します
# シェルはコマンドを解釈し、システムコール経由でカーネルへ処理を依頼します

#  ユーザー
#    ↓  コマンド入力
#  シェル(/bin/bash など)
#    ↓  システムコール(fork / exec / read / write 等)
#  カーネル
#    ↓  ハードウェアへのアクセス
#  CPU / メモリ / ディスク / ネットワーク

# -----------------------------------------------
#  プロセスの概念
# -----------------------------------------------

# プログラムを実行するとプロセスが生成されます
# 各プロセスには一意の PID(プロセスID)が割り当てられます

# ps コマンドでプロセス一覧を確認します
ps aux

# 出力例:
#   USER       PID  %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
#   root         1   0.0  0.1  22560  4096 ?        Ss   10:00   0:01 /sbin/init
#   ginoza    1042   0.2  0.5  55320 20480 pts/0    Ss   10:01   0:00 -bash
#   kogami    1123   0.0  0.1   9216  3584 pts/0    R+   10:05   0:00 ps aux

# -----------------------------------------------
#  デーモンとフォアグラウンドプロセスの違い
# -----------------------------------------------

# フォアグラウンドプロセス:
#   - ターミナルに紐づいて動作します
#   - ターミナルを閉じると終了します
#   - 標準入出力がターミナルに接続されています

# デーモン:
#   - バックグラウンドで常時稼働します
#   - ターミナルから切り離されています(制御端末なし)
#   - プロセス名の末尾に d が付くものが多いです(sshd / httpd / crond 等)
#   - systemd によって管理・監視されます

# -----------------------------------------------
#  シェルの種類と確認方法
# -----------------------------------------------

# 現在使用しているシェルを確認します
echo $SHELL

# インストール済みのシェル一覧を確認します
cat /etc/shells

# 出力例:
#   /bin/sh
#   /bin/bash
#   /bin/zsh
#   /usr/bin/fish

構文一覧

概念キーワード説明
カーネルkernelハードウェアを直接制御するOSの中核部分です。プロセス管理・メモリ管理・デバイスドライバ・ファイルシステムを担当します。
ユーザースペースuser spaceカーネルとは隔離された領域で、一般のプログラムが実行される空間です。システムコールを通じてのみカーネルと通信します。
システムコールsyscallユーザースペースのプログラムがカーネルへ処理を依頼するための仕組みです。fork / exec / read / write 等があります。
シェルshellユーザーが入力したコマンドを解釈してカーネルに渡すインタフェースです。bash / zsh / fish 等の種類があります。
プロセスprocess実行中のプログラムの実体です。固有の PID・メモリ空間・ファイルディスクリプタを持ちます。
PIDPIDProcess ID の略称です。システム起動時に最初に生成される init(または systemd)は PID 1 を持ちます。
デーモンdaemonバックグラウンドで常時稼働するプロセスです。制御端末を持たず、systemd によって管理されます。
フォアグラウンドプロセスforeground processターミナルに紐づいて動作するプロセスです。ユーザーの入力を受け取り、終了するまでシェルは次のコマンドを受け付けません。
バックグラウンドプロセスbackground processコマンド末尾に & を付けて起動するプロセスです。シェルはコマンドの終了を待たずに次の入力を受け付けます。
init / systemdPID 1カーネルが最初に起動するプロセスです。すべてのプロセスはこの PID 1 の子孫として生成されます。現代的な Linux では systemd が担当します。
シグナルsignalプロセスへの非同期通知です。SIGTERM(正常終了要求)・SIGKILL(強制終了)・SIGHUP(設定再読み込み)等があります。
ゾンビプロセスzombie process処理が終了したにもかかわらず、親プロセスが終了ステータスを回収していないプロセスです。psZ 状態として表示されます。

使用例

プロセスの状態を確認してシグナルを送信する
# -----------------------------------------------
#  プロセスの確認と操作(PSYCHO-PASSのキャラで例示します)
# -----------------------------------------------

# 現在実行中のプロセスを確認します
ps aux

# 出力例:
#   USER       PID  %CPU %MEM COMMAND
#   ginoza    1234   1.5  0.8 python3 inspector_report.py
#   kogami    1235   0.0  0.1 sleep 3600
#   makishima 1236  99.9  5.2 ./anomaly_process

# 特定のプロセス名で絞り込みます
ps aux | grep inspector_report

# PID を指定してプロセスを終了します(SIGTERM: 正常終了を要求します)
kill 1234

# 強制終了します(SIGKILL: プロセスに終了を強制します)
kill -9 1236

# プロセス名で終了します
pkill -f inspector_report.py
$ ps aux | grep inspector_report
ginoza    1234   1.5  0.8  55320 32768 pts/0    S    10:10   0:03 python3 inspector_report.py
$ kill 1234
$ ps aux | grep inspector_report
(プロセスが終了したため出力されません)
デーモンの起動状態を確認して制御する
# -----------------------------------------------
#  systemd によるデーモン管理の基本操作
# -----------------------------------------------

# SSH デーモン(sshd)の状態を確認します
systemctl status sshd

# デーモンを起動します
sudo systemctl start sshd

# デーモンを停止します
sudo systemctl stop sshd

# サーバー起動時に自動起動するよう設定します(enable)
sudo systemctl enable sshd

# 自動起動を無効化します
sudo systemctl disable sshd

# -----------------------------------------------
#  デーモンの一覧を確認します
# -----------------------------------------------

# 稼働中のサービスを一覧表示します
systemctl list-units --type=service --state=running

# 出力例(抜粋):
#   UNIT                     LOAD   ACTIVE SUB     DESCRIPTION
#   cron.service             loaded active running Regular background program processing daemon
#   nginx.service            loaded active running A high performance web server and a reverse proxy server
#   sshd.service             loaded active running OpenBSD Secure Shell server
#   systemd-journald.service loaded active running Journal Service
$ systemctl status sshd
● ssh.service - OpenBSD Secure Shell server
     Loaded: loaded (/lib/systemd/system/ssh.service; enabled; vendor preset: enabled)
     Active: active (running) since Wed 2026-03-25 10:00:00 JST; 1h 5min ago
       Docs: man:sshd(8)
             man:sshd_config(5)
   Main PID: 512 (sshd)
      Tasks: 1 (limit: 4915)
     Memory: 2.1M
        CPU: 85ms
     CGroup: /system.slice/ssh.service
             └─512 sshd: /usr/sbin/sshd -D [listener] 0 of 10-100 startups
カーネルバージョンとシステム情報を確認する
# -----------------------------------------------
#  カーネルとシステム情報の確認コマンド
# -----------------------------------------------

# 現在のカーネルバージョンを確認します
uname -r

# システム全体の情報を確認します
uname -a

# OS のディストリビューション情報を確認します(Debian / Ubuntu 系)
cat /etc/os-release

# 稼働時間とロードアベレージを確認します
uptime

# -----------------------------------------------
#  /proc ファイルシステムからカーネル情報を参照します
# -----------------------------------------------

# CPU 情報を確認します
cat /proc/cpuinfo | grep "model name" | head -3

# メモリ情報を確認します
cat /proc/meminfo | grep -E "MemTotal|MemFree|MemAvailable"

# 現在実行中のプロセス数を確認します
ls /proc | grep -E '^[0-9]+$' | wc -l
$ uname -r
6.1.0-28-amd64
$ uname -a
Linux sybilsystem 6.1.0-28-amd64 #1 SMP PREEMPT_DYNAMIC Debian 6.1.119-1 (2024-11-22) x86_64 GNU/Linux
$ uptime
 11:05:43 up  1:05,  2 users,  load average: 0.12, 0.08, 0.05
$ cat /proc/meminfo | grep -E "MemTotal|MemFree|MemAvailable"
MemTotal:        8192000 kB
MemFree:         4096512 kB
MemAvailable:    6291456 kB
フォアグラウンドとバックグラウンドのプロセスを切り替える
# -----------------------------------------------
#  ジョブ制御(job control)の基本操作
# -----------------------------------------------

# バックグラウンドでプログラムを起動します(末尾に & を付けます)
python3 dominator_simulation.py &

# 出力例:
#   [1] 2048
#   ([ジョブ番号] PID が表示されます)

# 現在のジョブ一覧を確認します
jobs

# 出力例:
#   [1]+  Running    python3 dominator_simulation.py &

# バックグラウンドジョブをフォアグラウンドに戻します
fg %1

# フォアグラウンドで実行中のプロセスを一時停止します(Ctrl+Z)
# その後バックグラウンドで再開します
bg %1

# -----------------------------------------------
#  nohup でターミナルを閉じてもプロセスを継続します
# -----------------------------------------------

# nohup を使うとターミナル終了後もプロセスが継続します
# 出力は nohup.out に保存されます
nohup python3 dominator_simulation.py > /var/log/dominator.log 2>&1 &
$ python3 dominator_simulation.py &
[1] 2048
$ jobs
[1]+  Running                 python3 dominator_simulation.py &
$ fg %1
python3 dominator_simulation.py
^Z
[1]+  Stopped                 python3 dominator_simulation.py
$ bg %1
[1]+ python3 dominator_simulation.py &

概要

『Linux』のカーネルとユーザースペースの分離は、システムの安定性とセキュリティの根幹をなす設計です。ユーザースペースのプログラムがハードウェアに直接アクセスできない仕組みにより、一つのプロセスの誤動作がシステム全体に影響を及ぼすリスクを低減しています。シェルはこの境界の窓口として機能し、ユーザーのコマンドをシステムコールに変換してカーネルへ渡します。プロセスはフォアグラウンドとバックグラウンドに大別でき、バックグラウンドで常時稼働するデーモンは systemd(PID 1)によって管理・監視されます。デーモンの名前には sshd / nginx / crond のように末尾に d が付くものが多く、制御端末を持たない点がフォアグラウンドプロセスとの本質的な違いです。サービスの管理には systemctl(サービスの管理) を、起動時のログ確認には journalctl(ログの確認) を合わせて参照してください。

記事の間違いや著作権の侵害等ございましたらお手数ですがまでご連絡頂ければ幸いです。