ページの作成
親となるページを選択してください。
親ページに紐づくページを子ページといいます。
例: 親=スポーツ, 子1=サッカー, 子2=野球
子ページを親ページとして更に子ページを作成することも可能です。
例: 親=サッカー, 子=サッカーのルール
親ページはいつでも変更することが可能なのでとりあえず作ってみましょう!
| この記事の要点 |
|
kill コマンドの基本
名前から「殺す」とつい連想しますが、実際はプロセスにシグナルを送るコマンドです。デフォルトは SIGTERM (15) で「お願いだから終了して」という丁寧な要求。プロセス側は終了処理 (DB クローズ、テンポラリファイル削除など) を行ってから終わります。
# PID を指定して SIGTERM 送信
kill 1234
# = 明示的指定
kill -SIGTERM 1234
kill -15 1234
kill -TERM 1234
# 強制終了 (SIGKILL)
kill -9 1234
kill -KILL 1234
kill -SIGKILL 1234
# 複数 PID 同時
kill 1234 5678 9012
# シグナル一覧
kill -l
# 1) SIGHUP 2) SIGINT 3) SIGQUIT 4) SIGILL 5) SIGTRAP
# 6) SIGABRT 7) SIGBUS 8) SIGFPE 9) SIGKILL 10) SIGUSR1
# 11) SIGSEGV 12) SIGUSR2 13) SIGPIPE 14) SIGALRM 15) SIGTERM ...
主なシグナル一覧
| 番号 | 名前 | 意味 | キャッチ可 |
|---|---|---|---|
| 1 | SIGHUP | ハングアップ。多くのデーモンは設定再読込として使う | ○ |
| 2 | SIGINT | 割り込み (Ctrl+C) | ○ |
| 3 | SIGQUIT | 中止 (Ctrl+\)、コアダンプ生成 | ○ |
| 9 | SIGKILL | 強制終了。プロセスは抵抗不可 | × (絶対) |
| 10 | SIGUSR1 | ユーザ定義 1。アプリ独自用途 (ログローテーション等) | ○ |
| 12 | SIGUSR2 | ユーザ定義 2 | ○ |
| 15 | SIGTERM | 終了要求。kill デフォルト。後始末させる | ○ |
| 17/19 | SIGSTOP | 一時停止 (Ctrl+Z 相当の SIGTSTP もある) | × |
| 18/19 | SIGCONT | 一時停止解除 | ○ |
SIGTERM と SIGKILL の使い分け
| 項目 | SIGTERM (15) | SIGKILL (9) |
|---|---|---|
| 意味 | 「終了してね」(丁寧) | 「即殺す」(問答無用) |
| キャッチ | プロセスが受け取って処理 | カーネルが即終了 |
| 後始末 | DB クローズ / 一時ファイル削除あり | 後始末されない |
| 使うべき | まず最初に試す | SIGTERM で 30秒待っても死なないとき |
| 副作用 | 少ない | データ破損 / ファイル断片化 |
原則: いきなり -9 はやめる。kill PID → 待つ → 死ななければ kill -9 PID。
プロセス検索: ps / pgrep / top
ps aux | grep
# Apache を探す
ps aux | grep apache
# www-data 1234 0.5 2.0 ... apache2
# www-data 1235 0.3 1.8 ... apache2
# grep 自体が含まれるのを除外
ps aux | grep [a]pache
# プロセスツリー表示
ps auxf
# または
ps -ejH
pstree -p
pgrep / pkill (パターン検索 + kill 統合)
# パターン一致する PID を表示
pgrep nginx
# 1234
# 1235
# 詳細表示 (名前 + 引数)
pgrep -af nginx
# 1234 nginx: master process /usr/sbin/nginx
# 1235 nginx: worker process
# プロセス名フル一致 (デフォルトは部分一致)
pgrep -x nginx
# ユーザ指定
pgrep -u www-data nginx
# 親 PID で
pgrep -P 1234 # PID 1234 の子プロセス
top / htop でインタラクティブに
top
# 表示中: k キー → PID 入力 → シグナル番号入力 で kill
htop
# F9 (Kill) → シグナル選択 → Enter
# F5 でツリー表示
# CPU 使用率順
top -o %CPU
# メモリ使用率順
top -o %MEM
killall: プロセス名で一括 kill
# nginx という名前のプロセスをすべて kill
killall nginx
# 強制
killall -9 nginx
# 確認モード (対話的)
killall -i nginx
# Kill nginx(1234) ? (y/N) y
# ユーザ指定
killall -u www-data nginx
# 完全一致のみ
killall -e nginx
pkill: パターンで kill
# nginx を含むプロセス
pkill nginx
# 完全引数一致 (-f は引数も含めてマッチ)
pkill -f "python my_script.py"
# 強制
pkill -9 -f "tomcat"
# ユーザ指定
pkill -u alice firefox
# 親プロセス指定
pkill -P 1234
# シグナル指定
pkill -SIGUSR1 -f my_app # ログローテ等
fuser: ファイル使用中のプロセスを kill
# /tmp を使っているプロセス
fuser -v /tmp/
# /var/log/app.log を開いているプロセス
fuser /var/log/app.log
# /var/log/app.log: 1234 5678
# kill しながら一覧表示
fuser -k /var/log/app.log
# umount できないときの常套手段
fuser -mv /mnt/foo
fuser -km /mnt/foo
umount /mnt/foo
# ポート使用中のプロセス
fuser -n tcp 8080
# 8080/tcp: 1234
# 同じことを lsof でも
lsof -i:8080
ss -lntp | grep 8080
systemd で管理されているサービス
Apache / Nginx / MySQL など、systemd で起動されたサービスは systemctl で停止するのが正しい流儀。直接 kill すると自動再起動が走ったり、状態管理が壊れます:
# 正しい停止
sudo systemctl stop nginx
sudo systemctl status nginx
# 再起動 (設定再読込)
sudo systemctl restart nginx
# 設定のみ再読込 (止めない)
sudo systemctl reload nginx
# 異常終了したサービスを再開
sudo systemctl reset-failed nginx
sudo systemctl start nginx
# 関連プロセスを強制終了 (最終手段)
sudo systemctl kill -s SIGKILL nginx
SIGHUP の典型用途: 設定再読込
# 多くのデーモンは SIGHUP を「設定再読込」として実装
sudo kill -HUP $(pgrep -x nginx)
sudo kill -HUP $(cat /var/run/sshd.pid)
# = systemctl reload と同じ役割
sudo systemctl reload nginx
sudo systemctl reload sshd
# 注意: アプリにより SIGHUP の意味は異なる
# - nginx, Apache, sshd : 設定再読込
# - bash, less : 終了
# - syslog : ログファイル再オープン
ゾンビプロセスは kill 不可
ゾンビプロセス (defunct) は既に終了済で残骸として残っている状態。親プロセスが wait() 呼び出ししていないせい。kill しても消えません:
# ゾンビ検索
ps aux | grep -w Z
ps aux | awk '$8=="Z" {print $2, $11}'
# 親 PID を確認
ps -o pid,ppid,state,cmd -p ZOMBIE_PID
# 親プロセスに SIGCHLD を送って収穫を促す
kill -CHLD PARENT_PID
# それでもダメなら親プロセスを kill (子は init/systemd に引き取られて消える)
kill PARENT_PID
Windows での同等操作
# プロセス一覧
Get-Process
tasklist
# 名前で
Get-Process notepad
tasklist | findstr notepad
# PID で kill
Stop-Process -Id 1234
taskkill /PID 1234
# 強制
Stop-Process -Id 1234 -Force
taskkill /F /PID 1234
# 名前で
Stop-Process -Name notepad -Force
taskkill /F /IM notepad.exe
# ツリー (子プロセスも)
taskkill /F /T /PID 1234
# CPU 高負荷プロセスを見る
Get-Process | Sort-Object CPU -Descending | Select-Object -First 5
FAQ
Q: SIGKILL で殺せないプロセスがある
A: D 状態 (uninterruptible sleep) のプロセスは I/O 完了待ち中で SIGKILL も効かない。NFS タイムアウトやハングしたディスク待ちが典型。原因の I/O を解消するか、最悪は OS 再起動。
Q: 自分が起動していないプロセスを kill したい
A: root 権限が必要。sudo kill 1234。他ユーザの kill は root のみ可能。
Q: スクリプトで「動いていれば kill、いなければ何もしない」
A: pkill -f "my_script.py" || true。pgrep -f xxx && pkill -f xxx でも良い。
Q: kill した後 PID が再利用される?
A: はい。OS は PID を循環的に再割当てするので、長時間使われていない古い PID を kill すると別のプロセスを殺してしまう可能性あり。スクリプトでは pgrep でその場で取得して即 kill するのが安全。
ページの作成
親となるページを選択してください。
親ページに紐づくページを子ページといいます。
例: 親=スポーツ, 子1=サッカー, 子2=野球
子ページを親ページとして更に子ページを作成することも可能です。
例: 親=サッカー, 子=サッカーのルール
親ページはいつでも変更することが可能なのでとりあえず作ってみましょう!
子ページはありません
- ls ファイル/ディレクトリ一覧表示
- sudo ユーザー指定
- cron/crontab ジョブの自動実行と登録方法
- wget http通信によるファイルダウンロード
- rm ファイル/ディレクトリ削除
- pwd カレントディレクトリの表示
- cd ディレクトリの移動
- ./configure
- make
- make install
- unzip ファイルの解凍
- mv ファイル/ディレクトリの移動および名称変更
- mkdir ディレクトリの作成
- touch 空ファイルの新規作成
- vi テキストディタの使用
- find ファイル/ディレクトリ検索
- grep 文字列の検索
- tail ファイルの末尾表示
- curl HTTP通信によるリクエスト
- nslookup ドメインのIP解決
- apt update パッケージリストの情報を更新
- apt upgrade パッケージの更新
- ln リンク/ショートカットの作成と削除
- rsync ファイル/ディレクトリの同期
- ssh リモートとの暗号化通信
- scp sshを利用したファイルのコピー
- unzip zip ファイルを解凍する
- cp ファイル/ディレクトリのコピー
- diffファイルの差分抽出
- fdisk ハードディスクに対する操作
- lsblk デバイスをツリー状で表示する
- kill プロセスを終了させる
- zip ファイルやディレクトリをzip形式に圧縮する
- hostコマンド
- chmod 権限の変更
- ip IPアドレスの確認
- chown コマンド(所有者の変更)
- chgrp ファイル/ディレクトリのグループ情報の変更
- nohupと'&' プログラムのバックグラウンド実行(ssh接続時)
- lsof 開いているポート番号の確認
- tar ファイルの圧縮と解凍
- file ファイルの種類を表示
- cat ファイルの中身を表示
- head ファイルの先頭部分を表示
- wc 行数/単語数/文字数を確認
- shutdown システムのシャットダウンと再起動
- ps プロセスの確認
- which コマンドの絶対パスを調べる
- yum RedHat系ディストリビューションの管理
- mount ファイルシステムのマウント
- 特定フォルダ以下の特定拡張子のファイルを再帰的に削除する方法
- 特定のフォルダとそのサブフォルダ内にある特定のファイル名のファイルを再帰的に削除
- sed テキスト処理用ストリームエディタ
- awk フィールド単位の柔軟なテキスト処理
- sort 行の並び替え
- uniq 重複行の除去・カウント
- cut 行から特定列を切り出し
- tr 文字の置換・削除
- less ページャでファイルを読む
- more 古典ページャ
- xargs 標準入力をコマンド引数に変換
- paste 複数ファイルを列方向に結合
- top プロセスの動的監視
- htop 強化版インタラクティブプロセス監視
- nice プロセスの優先度を指定して起動
- renice 実行中プロセスの優先度を変更
- jobs シェル管理下のジョブ一覧
- bg ジョブをバックグラウンドで実行
- fg バックグラウンドジョブをフォアグラウンドに
- killall プロセス名でまとめて終了
- pgrep プロセス名から PID を検索
- pkill プロセス名でシグナルを送信
- uname システム情報の表示
- uptime システム稼働時間とロードアベレージ
- free メモリ使用状況の表示
- df ディスク使用量 (ファイルシステム単位)
- du ディレクトリ・ファイル単位の使用量
- lscpu CPU 情報の表示
- lsmod 読み込み済みカーネルモジュール一覧
- lspci PCI デバイス一覧
- dmesg カーネルリングバッファの表示
- w ログイン中ユーザーと負荷の表示
- ping ホストへの到達性とラウンドトリップ確認
- traceroute ホストまでの経路を表示
- netstat ネットワーク接続・ルーティング表示 (旧式)
- ss netstat 後継、ソケット統計
- ifconfig ネットワークインターフェース表示・設定 (旧式)
- dig DNS リゾルバ問い合わせの定番
- route ルーティングテーブル表示 (旧式)
- iptables Linux パケットフィルタリング
- telnet TCP 接続診断・古典的リモートログイン
- arp ARP テーブルの表示・編集 (旧式)
- useradd ユーザーアカウントの作成
- usermod 既存ユーザーアカウントの変更
- userdel ユーザーアカウントの削除
- passwd パスワードの変更・管理
- groupadd グループの追加
- id ユーザーとグループの ID・所属を表示
- whoami 現在のユーザー名を表示
- su 別ユーザーに切り替え
- dnf Red Hat 系の次世代パッケージマネージャ (yum 後継)
- pacman Arch Linux のパッケージマネージャ
- echo 文字列・変数の出力
- export 環境変数の設定と継承
- alias コマンドの別名定義
- source / . スクリプトをカレントシェルで実行
- history コマンド履歴の表示・操作
- type コマンドの種別 (組み込み/関数/エイリアス/外部) を表示
- env 環境変数表示と一時設定でコマンド実行
- set シェルオプションと位置パラメータの操作
- unset 変数・関数の削除
- printf C 風書式付き出力
- systemctl systemd ユニットの管理
- service init.d 互換のサービス管理
- journalctl systemd ジャーナルログの参照
- crontab 定期実行ジョブの登録・編集
- at 指定時刻に 1 回だけコマンド実行
- umount ファイルシステムのアンマウント
- reboot システムを再起動
- halt システムを停止
- date 日付・時刻の表示と設定
- hostname ホスト名の表示・設定
- gzip ファイルを Deflate で圧縮
- gunzip gzip 圧縮ファイルの展開
- bzip2 高圧縮率の圧縮コマンド
- xz LZMA2 ベースの高圧縮コマンド
- zstd Facebook 製の高速圧縮コマンド
- dpkg Debian パッケージの低レベル操作
- rpm Red Hat パッケージの低レベル操作
- snap Canonical の sandbox パッケージマネージャ
- apt Debian/Ubuntu の高レベルパッケージマネージャ
- 7z 7-Zip コマンドラインツール
人気ページ
- 1 Eclipseで「サーバーに追加または除去できるリソースがありません。」の原因と対処法
- 2 tomcat の起動 / 停止ログと catalina.log・catalina.out の違い
- 3 JavaScript base URL 取得方法|window.location.origin と SSR/Node.js 対応
- 4 YouTube Data API v3 エラー一覧|403/400/404 の主要原因と切り分け
- 5 Spring Frameworkのアノテーション一覧
- 6 Laravel エラー一覧|500/Blade/DB 接続/ルーティングの代表エラー
- 7 3Dグラフィックスとは|モデリング/レンダリング/主要ソフトウェア (Blender / Maya)
- 8 【Spring】@Valueアノテーションとは
- 9 CATALINA_HOME の確認方法 (Linux / Mac)
- 10 【Spring】@Autowiredアノテーションとは
最近更新/作成されたページ
- IPv6とは|128bitアドレス・コロン16進表記/::省略・リンクローカル・SLAAC・デュアルスタック NEW 2026-06-22 12:34:44
- VPNとは|暗号トンネル・サイト間/リモートアクセス・IPsec/SSL-VPN/WireGuardを解説 NEW 2026-06-22 12:19:10
- MAC アドレスフィルタリングの仕組みと限界 | ネットワーク入門 NEW 2026-06-22 12:19:10
- gRPC とは HTTP/2 + Protocol Buffers の高速 RPC | ネットワーク入門 NEW 2026-06-22 12:17:25
- WebRTC とは ブラウザ間 P2P の音声・映像・データ通信 | ネットワーク入門 NEW 2026-06-22 12:17:25
- HTTP/2 とは 多重化・HPACK・バイナリフレーム | ネットワーク入門 NEW 2026-06-22 12:17:25
- Web通信プロトコル入門 HTTP/2・HTTP/3・WebSocket・gRPC・WebRTC | ネットワーク入門 NEW 2026-06-22 12:17:25
- HTTP/3 (QUIC) とは UDP ベースの低遅延 Web 通信 | ネットワーク入門 NEW 2026-06-22 12:17:25
- WebSocket とは 全二重リアルタイム通信 ws/wss | ネットワーク入門 NEW 2026-06-22 12:17:25
- 証明書と認証局(CA)とは|X.509・信頼チェーン・DV/OV/EV・失効(CRL/OCSP)を解説 NEW 2026-06-22 12:17:24
- ファイアウォールとは|パケットフィルタ・ステートフル・DMZ・次世代FW(L4/L7)を解説 NEW 2026-06-22 12:17:24
- iptables/nftablesとは|テーブル・チェーン・ルール例・永続化をLinux視点で解説 NEW 2026-06-22 12:17:24
- HAProxy とは frontend/backend と設定例 | ネットワーク入門 NEW 2026-06-22 12:17:24
- CDN とは エッジキャッシュ・TTL・Cloudflare/CloudFront | ネットワーク入門 NEW 2026-06-22 12:17:24
- TLS/SSLの仕組み|ハンドシェイク・暗号スイート・前方秘匿性・証明書検証をわかりやすく解説 NEW 2026-06-22 12:17:24
コメントを削除してもよろしいでしょうか?