正規表現・プロセス管理・実行優先度までまとめて解説!
Linuxの学習を続けていくと、避けて通れないのが「GNUとUnixコマンド」。
今回はその中でも“動くテキストを見つける力”と“プロセスを操る力”に焦点を当てながら、実践的に理解していきます。
「grepってよく聞くけど何?」
「プロセスって種類がいろいろあって難しそう…」
そんな人にも安心して読めるよう、専門用語には補足を入れてやさしく説明していきます。
目次
1. 正規表現を使ってテキストを検索しよう
まずは“テキスト検索の王様”ともいえる 正規表現(Regex)。
これは「文字列のルールをひとつのパターンで表す方法」です。
例えば
- 「a」で始まり
- 「ri」で終わる
という条件をまとめて書けるのが正規表現です。
主に使うメタキャラクタ(基本正規表現)
| 記号 | 意味 | 例 |
|---|---|---|
. | 任意の1文字 | a.c → abc / aec / adc |
* | 直前文字を0回以上繰り返す | a*b → ab / aab / aaab |
^ | 行頭にマッチ | ^abc → abc〜 |
$ | 行末にマッチ | xyz$ → 〜xyz |
[] | 指定した文字のどれか | [abc] → a / b / c |
✨ 補足:エスケープ
メタキャラクタを「普通の文字」として扱う場合は \ を付けます
例:* を検索したい → \*
grep: 正規表現でテキスト検索する定番コマンド
ファイルの中から「特定パターンに一致する行」を探すコマンドです。
grep [オプション] "検索パターン" ファイル名
▼ よく使うオプション
-i:大文字小文字を区別しない-v:一致しない行を表示(NOT検索)-c:一致した行数のみ表示-n:行番号も一緒に表示-E:拡張正規表現を有効にする
拡張正規表現(ERE)も覚えると一気に便利に!
| 記号 | 意味 | 例 |
|---|---|---|
+ | 1回以上繰り返す | ab+c → abc / abbc |
? | 0〜1回の繰り返し | ab?c → ac / abc |
{n} | n回繰り返す | a{3}b → aaab |
| ` | ` | OR条件 |
egrep / fgrep の違い
egrep
- grepに-Eを付けた状態と同じ
- オプションなしで拡張正規表現が使える
fgrep
- 正規表現を使わず、文字をそのまま検索
- 「*」や「?」をそのまま検索したいときに便利
sed: テキストを編集する万能ツール
「置換」「削除」など、ファイルを直接編集せずに変換だけ行うコマンドです。
sed [オプション] 'コマンド' ファイル名
▼ よく使う sed のコマンド
| コマンド | 内容 |
|---|---|
s/検索/置換/ | 置換(g で全置換) |
| y/abc/123/ | 1→1変換(a→1, b→2 など) |
| d | 該当行を削除 |
例:全ての「aggressive」を「AGRRESSIVE」に置換
sed 's/aggressive/AGRRESSIVE/g' sample.txt
2. プロセスとジョブ管理の基礎
Linuxで実行中のプログラムは “プロセス” と呼ばれます。
基本用語
- プロセス:OS上で動いているプログラム
- ジョブ:シェル(端末)上で動かす作業単位
- 親プロセス / 子プロセス:プロセスを起動する側とされる側
- シグナル:プロセスに対する「メッセージ」(停止・終了など)
よく使うプロセス管理コマンド
| コマンド | 用途 |
|---|---|
| ps | 実行中プロセスを一覧表示 |
| top | プロセスをリアルタイム監視 |
| pstree | プロセスの親子関係をツリー表示 |
| kill | PID(プロセスID)で終了 |
| killall | 名前で終了 |
| pkill | 正規表現で終了 |
| pgrep | 検索パターンに一致するPIDを表示 |
ジョブ管理コマンド(シェルで作業するときの必須)
| コマンド | 概要 |
|---|---|
| jobs | ジョブ一覧 |
| bg | 一時停止中ジョブを背景で再開 |
| fg | ジョブを前面に戻す |
| nohup | ログアウト後も処理を継続 |
✨ 補足:フォアグラウンドとバックグラウンド
- FG(前面):画面を占有し、操作できる状態
- BG(背面):裏で動かしつつ他の作業ができる
3. 実行優先度(nice値)を変えてみよう
Linuxでは、プロセスごとに「実行優先度」を決められます。
これを nice値 と呼びます。
- 数値:-20 〜 19
- 小さいほど優先度が高い
nice: 実行時に優先度を指定
nice -n 5 コマンド
※何も指定しないと +10 されます(優先度が下がる)
renice: 実行中プロセスの優先度を変更
renice -n -5 -p 1234
- -p:プロセスID指定
- -u:ユーザー指定も可能
まとめ:ここまででできるようになること
この記事で学んだ内容をざっくり振り返ると…
正規表現コマンド
- grep / egrep / fgrep で柔軟な検索ができる
- sed で置換・削除などのテキスト編集が簡単
プロセス管理
- ps, top, pstree で監視
- kill / killall / pkill / pgrep で終了
ジョブ管理
- jobs, bg, fg でジョブを自在に操作
- nohup でログアウト後も継続
実行優先度
- nice / renice で負荷の調整が可能
Linuxを扱えるようになるとサーバー管理やシェルスクリプトでも役立つ知識ばかりです。
特に grep, sed, ps, kill は現場で毎日使うレベルの必須ツールなので、早めに慣れておくと安心です。
Linuxコマンド&正規表現 暗記シート
1. 正規表現(基本+拡張)
◆ 基本正規表現(よく出る5つ)
| 記号 | 読み方・意味 | 例 |
|---|---|---|
. | ドット:任意の1文字 | a.c → abc, axc |
* | アスタリスク:直前を0回以上繰り返し | ab* → a, ab, abb… |
^ | キャレット:行頭にマッチ | ^abc → abc で始まる行 |
$ | ダラー:行末にマッチ | xyz$ → xyz で終わる行 |
[] | いずれか1文字(-で範囲) | [0-9] → 数字1桁 |
◆ 拡張正規表現(grep -E / egrep)
| 記号 | 意味 | 例 |
|---|---|---|
+ | 1回以上の繰り返し | ab+c → abc, abbc |
? | 0〜1回の繰り返し | ab?c → ac, abc |
{n} / {n,m} | 回数指定 | a{2,4} → aa, aaa, aaaa |
| ` | ` | OR(どちらか) |
2. 検索&テキスト編集コマンド
| コマンド | 覚え方 / 役割 | 代表的な使い方 |
|---|---|---|
grep | 正規表現で検索 | grep "error" log.txt |
egrep / grep -E | 拡張正規表現で検索 | `egrep “err(or |
fgrep / grep -F | 正規表現を使わず、「文字列そのもの」で検索 | fgrep "*sample*" file.txt |
sed | 置換・削除など、テキスト変換に使う | sed 's/foo/bar/g' file.txt |
sed でよく使うパターン
| 書き方 | 意味 | 例 |
|---|---|---|
s/旧/新/ | 置換(1行の最初だけ) | s/samurai/SAMURAI/ |
s/旧/新/g | 置換(その行のすべて) | s/error/ERROR/g |
y/abc/123/ | 1文字ずつ変換 | a→1, b→2, c→3 |
1,5d | 1〜5行目を削除 | sed '1,5d' file.txt |
3. プロセス・ジョブ管理コマンド
◆ プロセスを見る系
| コマンド | 役割 | よく使うオプション |
|---|---|---|
ps | プロセスの一覧 | ps aux, ps -ef |
top | リアルタイム監視 | qで終了 |
pstree | 親子関係をツリー表示 | pstree -p(PID付き) |
◆ プロセスを止める系
| コマンド | 指定の仕方 | 例 |
|---|---|---|
kill | PIDで指定 | kill 1234 |
killall | プロセス名で指定 | killall httpd |
pkill | 正規表現パターンで指定 | `pkill “httpd |
pgrep | パターンにマッチするPIDを表示 | pgrep nginx |
◆ ジョブ管理
| コマンド | 役割 | 例 |
|---|---|---|
jobs | ジョブ一覧 | jobs |
bg %1 | ジョブをバックグラウンド再開 | bg %1 |
fg %1 | ジョブをフォアグラウンドに戻す | fg %1 |
nohup | ログアウト後も継続 | nohup command & |
※ %1 の「1」は jobs で表示されるジョブ番号。
4. システム状態をざっくり確認するコマンド
| コマンド | 内容 | 例 |
|---|---|---|
free | メモリ状況 | free -m(MB表示) |
uptime | 起動時間、ロードアベレージ | uptime |
watch | 一定間隔で同じコマンドを実行 | watch -n 5 df -h |
用語メモ
- ロードアベレージ:CPUが「どのくらい詰まっているか」の平均値
- 数字がCPUコア数を大きく超えていると「処理待ちが多い」と覚えると◎
5. 実行優先度(nice値)関連
| 用語 / コマンド | 内容 |
|---|---|
| nice値 | -20〜19。値が小さいほど優先度が高い |
nice | コマンド実行時の優先度を指定 |
renice | 動いているプロセスの優先度を変更 |
例
# 優先度を落としてコマンドを実行(他プロセスにやさしい)
nice -n 10 long_task.sh
# PID 1234 の優先度を上げる(root権限が必要なことが多い)
sudo renice -n -5 -p 1234
📝 補足記事: 初心者がつまずきやすいポイントQ&A
本編と暗記シートだけだと「なんとなくわかったけど、実際に触ると迷いそう…」というところもあると思うので、よくハマりがちなポイントを Q&A形式 で補足しておきます。
Q1. grep と egrep(grep -E)って、どっちを覚えればいい?
A. 実務では「grep」と「grep -E」をセットで覚えておくのがおすすめ。
最近の環境では egrep は非推奨扱いになる傾向もあるので、
- 基本:
grep "パターン" - 拡張正規表現を使うとき:
grep -E "パターン"
という形に慣れておくと、どの環境でも迷いにくいです。
Q2. kill と killall と pkill、どう使い分ける?
ざっくりこう覚えるとスッキリします。
kill:PIDがわかっているとき(ピンポイント狙い)killall:同名プロセスを全部止めたいとき(httpd全部など)pkill:名前の一部や正規表現でまとめて指定したいとき
安全なのは pgrep で確認 → kill で止める 流れです。
pgrep nginx # まず PID を確認
kill 1234 2345 # 必要なものだけ止める
Q3. フォアグラウンドとバックグラウンドの違いがいまいち…
イメージで覚えると楽です。
- フォアグラウンド:
→ 端末の画面を“占領”しているコマンド。終わるまで次のコマンドを打てない。 - バックグラウンド:
→ 裏で動いていて、端末は他の操作に使える状態。
よくある流れ
# 時間がかかるコマンドをうっかりそのまま実行
long_task.sh
# あ、やってしまった…というとき
Ctrl + Z # いったん一時停止
bg # 裏で再開
jobs # 状態確認
Q4. nohup っていつ使うの?
- 「サーバーにSSHで入って実行しているけど、ログアウトしても処理を止めたくない」
- 「夜中までかかるバッチ処理を投げっぱなしにしたい」
というときに登場します。
nohup backup.sh & # ログアウトしても動き続ける
nohup.out というファイルに標準出力がたまるので、後からログを確認できます。
Q5. nice値を変えるときの注意点は?
- 優先度を 下げる(値を大きくする) のは一般ユーザーでもできることが多い
- 優先度を 上げる(値を小さくする) のは root 権限が必要なケースが多い
サーバー運用では、
「重いバッチ処理には nice をかけておいて、他のサービスに負荷をかけすぎない」
という使い方がよくされます。
Q6. 正規表現の学習、どこから手をつければいい?
最初から全部覚えようとすると挫折しがちなので、段階をつけると楽です。
- 第1ステップ
.(任意1文字),*,^,$
- 第2ステップ
[],+,?
- 第3ステップ
{n},{n,m},|
おすすめ練習方法
- 手元に簡単なテキストファイル(ログ・メモなど)を用意
grepで「検索パターンを1つずつ試してみる」
grep "^error" app.log # errorで始まる行
grep "timeout$" app.log # timeoutで終わる行
grep "user[0-9]" app.log # user1〜user9
「動いているものを自分で絞り込めた」という体験が一度でもあると、一気に理解が進みます。

