Linux用語・演習1 (LinuCレベル1 101試験 出題範囲 )

Linux用語・演習 (2026/08/16時点 LinuCレベル1 101試験 出題範囲 )

LinuCレベル1は101試験・102試験の両方に合格して認定される。
この記事は101試験の公式出題範囲(Version 10.0)を土台に、 用語・path一覧とコマンド演習の2部構成でまとめたもの。

コマンド演習は出題項目ごとに分割せず、上から順に実行すれば一つの演習として通しで進められる構成。
仮想マシンかコンテナ環境を1つ用意して、実際に打ちながら読み進める。

102試験編は別記事にまとめる。

第1部:用語・path一覧

〇 用語

用語 説明
UEFI/BIOS ハードウェアの初期化とOSの起動を行うソフトウェア
パッケージグループ 複数ソフトウェアパッケージを一度に管理/インストールできる単位
ハイパーバイザー ホストOS上で仮想マシンを動かす基盤ソフト(ベアメタル型/ホスト型)
仮想化支援機能 CPUがハードウェアレベルで提供するIntel VT-x/AMD-Vなどの機能
コンテナ ホストOSのカーネルを共有し、アプリケーションを実行するための環境をパッケージ化したもの
ブートターゲット 従来のランレベルに相当(multi-user.target、graphical.targetなど)
シングルユーザモード トラブルシュート用のroot向け最小起動状態
X Window System Xサーバー、Xクライアント、ウィンドウマネージャで構成され、GUI環境を提供する
SUID / SGID / スティッキービット 特殊なアクセスモード
UUID / ラベル デバイス名に依存しないファイルシステム識別方法(fstabでよく使う)
umask 新規作成ファイルのデフォルト権限を決めるマスク値
ワイルドカード 文字列パターンを表現するための特殊な文字や記号
ハードリンク 同一inodeを指す別名(ファイルシステムをまたげない)
シンボリックリンク パスを指すポインタ(ファイル・ディレクトリどちらも可)
FHS(Filesystem Hierarchy Standard) ディレクトリ構成の標準
相対パス/絶対パス カレントディレクトリ基準、ルート基準のpath
EDITOR(環境変数) デフォルトエディタの指定
sysfs、udev、dbus デバイス管理の周辺仕組み
ESP(EFI System Partition) UEFI環境でブートローダを格納するFAT形式パーティション
GPT(GUID Partition Table) 現行主流のパーティション方式
LVM 物理ボリューム、論理ボリューム、動的拡張・縮小、スナップショット
ファイルシステム種別 ext3 / ext4、XFS、VFAT、Btrfs、tmpfs
フォアグラウンド/バックグラウンド シェル上での実行状態の区別

〇 重要path

path 用途
~/.ssh/authorized_keys 接続を許可する公開鍵の一覧
~/.ssh/known_hosts 接続したことのあるホストのフィンガープリント
~/.ssh/id_rsa, ~/.ssh/id_rsa.pub 秘密鍵・公開鍵ペア
~/.bash_history コマンド履歴の保存先
/etc/updatedb.conf updatedbの除外設定
/etc/apt/sources.list aptのリポジトリ定義
/etc/yum.repos.d/ yumのリポジトリ定義ディレクトリ
/etc/yum.conf yumの全体設定
/sys/ デバイス・カーネル情報を表すsysfs
/proc/ プロセス・カーネル状態を表す仮想ファイルシステム
/dev/ デバイスファイル
/, /var, /home, /boot 代表的なマウントポイントとその割当方針
/etc/fstab 起動時の自動マウント設定
/media リムーバブルメディアのマウントポイント

第2部:コマンド演習

ホームディレクトリに作業用ディレクトリlinuc-practiceを作るところから始めて、最後まで一連のものとして進める。
破壊的な操作は実機のディスクを直接壊さないよう、コメントで注意点を明記する。
該当箇所はスキップするか、使い捨てできる検証用ディスク/VMで試すこと。

Step 1. 作業ディレクトリの準備とシステム状態の確認

# ホームディレクトリに移動し、演習用ディレクトリを作成
cd ~
mkdir -p linuc-practice/{docs,logs,bin,archive}
cd linuc-practice

# 現在地とホスト情報の確認
pwd
hostname
uname -a

# systemdの現在のデフォルトターゲットを確認 (変更はしない)
systemctl get-default

# 主要サービスの状態確認 (存在しなければ sshd以外の手元の環境にあるものに置き換える)
systemctl status sshd

# シャットダウン・再起動コマンドの書式確認 (※停止できない環境なら書式確認にとどめること)
# shutdown -h +1 "メンテナンスのため停止します"
# shutdown -c
# reboot

Step 2. リモート接続とコンテナ・仮想マシンの操作

# SSH接続の書式 (手元にもう1台あれば実際に接続してみる)
# ssh -i ~/.ssh/id_rsa user@192.168.1.10

cd ~/linuc-practice

# コンテナイメージを取得してポートマッピング付きで起動 (dockerが入っている環境で)
docker run -d --name web -p 8080:80 nginx:latest

# 稼働中コンテナの確認
docker ps

# コンテナに入って中を見る
docker exec -it web bash
# (コンテナ内で ls /etc/nginx などを確認後 exit で戻る)

# 停止・削除
docker stop web
docker rm web

# 仮想マシンがある場合 (virsh)
virsh list --all
virsh start centos-lab
virsh shutdown centos-lab

Step 3. ファイル・ディレクトリ操作とパーミッションの演習

cd ~/linuc-practice/docs

# サンプルファイルの作成
touch report.txt draft.txt
echo "サンプルテキストです" > report.txt

# パーミッションの変更(記号モード→数値モードの順に試す)
chmod u+x report.txt
chmod 644 report.txt
ls -l report.txt

# 所有者・グループの変更 (権限があれば)
chown "$(whoami)":"$(whoami)" report.txt

# ディレクトリを掘って再帰的に権限変更
mkdir -p shared/team
chmod -R 750 shared
chmod g+s shared          # SGID:配下の新規ファイルが親と同じグループになる

# umaskの確認と一時変更
umask
umask 022
touch after_umask.txt
ls -l after_umask.txt

# コピー・移動・削除
cp -av report.txt ../archive/report_$(date +%Y%m%d).txt
mv draft.txt draft_v2.txt
rm -f draft_v2.txt

# ディレクトリ構造をまとめて作成
mkdir -p ../projects/{app,app/logs,app/conf}

# アーカイブ化と展開
tar czvf ../archive/docs-backup.tar.gz .
mkdir -p ../restore
tar xzvf ../archive/docs-backup.tar.gz -C ../restore

# 古いファイル・大きいファイルの検索
find ~/linuc-practice -name "*.log" -mtime +7
find ~/linuc-practice -type f -size +10M 2>/dev/null

# 圧縮コマンド(xzで圧縮→unxzで展開して元に戻す)
xz ../archive/docs-backup.tar.gz
unxz ../archive/docs-backup.tar.gz.xz

Step 4. リンクとファイル検索

cd ~/linuc-practice/docs

# ハードリンクとシンボリックリンクの違いを確認
ln report.txt report_hardlink.txt
ln -s report.txt report_symlink.txt
ls -lFi report.txt report_hardlink.txt report_symlink.txt
# → 同じinode番号を持つのはハードリンクだけ

# ファイル名検索(即時、負荷は高め)
find ~/linuc-practice -name "report*"

# locate用DBを更新して高速検索 (要sudo、環境次第で未インストール)
sudo updatedb
locate report.txt

# コマンドの実体を調べる
type ls
type cd
whereis python3
which python3

# コマンドのヘルプ表示
ls --help | head -20

# マニュアルの参照 (セクション指定:1=コマンド、5=設定ファイル)
man 1 passwd
man 5 passwd

# キーワードでmanページを横断検索
man -k partition

Step 5. GNU/Unixコマンドでテキスト処理の演習

cd ~/linuc-practice/logs

# サンプルログを作成 (演習用のダミーログ)
cat > access.log << 'EOF'
192.168.1.10 - - [12/Aug/2026:10:00:01] "GET /index.html" 200
192.168.1.11 - - [12/Aug/2026:10:00:05] "GET /about.html" 404
192.168.1.10 - - [12/Aug/2026:10:01:10] "POST /login" 500
192.168.1.12 - - [12/Aug/2026:10:02:00] "GET /index.html" 200
192.168.1.11 - - [12/Aug/2026:10:03:33] "GET /favicon.ico" 404
EOF

# 表示系
cat -n access.log
head -n 3 access.log
tail -n 2 access.log

# 列の抽出 (スペース区切りで1列目=IPアドレスを取得)
cut -d' ' -f1 access.log

# 並べ替え・重複カウント(頻出IPアドレスの集計)
cut -d' ' -f1 access.log | sort | uniq -c | sort -nr

# 正規表現検索 (404エラーだけ抽出)
grep "404" access.log
grep -E "404|500" access.log
egrep "404|500" access.log
grep -c "200" access.log

# 置換 (sedでステータスコードにラベルを付与)
sed 's/ 200$/ 200 OK/' access.log
sed -i.bak 's/404/NOT_FOUND/g' access.log
cat access.log

# access.logを元の内容に戻す (以降のless/vi演習で"404"を検索するため。.bakは後述のxargs演習で使う)
cp access.log.bak access.log

# 文字種変換・行数カウント
tr 'a-z' 'A-Z' < access.log | head -1
wc -l access.log

# リダイレクトとパイプ
grep "192.168.1.10" access.log > ip10.log
cat ip10.log
ps aux | grep bash

# lessでのページング表示 (長い出力を1画面ずつ確認、qで終了)
ps aux | less
less access.log
# less内での主な操作:
#   スペース/Enter : 次の画面へ
#   b               : 前の画面へ
#   /404            : "404"を前方検索
#   q               : 終了

# xargsで検索結果を一括処理
find ~/linuc-practice/logs -name "*.bak" -print0 | xargs -0 rm -f

# 画面表示しつつファイルにも保存
cut -d' ' -f1 access.log | sort -u | tee unique_ips.txt

Step 6. viエディタでの編集演習

cd ~/linuc-practice/logs
vi access.log

viの中で以下を順に試します。

i          " 挿入モードへ
(1行入力してみる)
ESC        " ノーマルモードに戻る
/404       " "404"を検索、nで次候補へ
dd         " カーソル行を削除
5yy        " 5行コピー(ファイルの行数に応じて調整)
p          " カーソル下に貼り付け
:wq        " 保存して終了
# デフォルトエディタの設定 (crontab -eなどで利用される)
export EDITOR=vim

Step 7. パッケージ管理の演習 (該当ディストリビューションのコマンドのみ実行)

# --- Debian/Ubuntu系 (apt / dpkg) ---
sudo apt update
sudo apt install -y tree
apt-cache show tree
dpkg -l | grep tree
apt-file search /usr/bin/tree   # apt-fileが入っていれば
sudo apt purge -y tree
sudo apt autoremove -y

# --- Red Hat/CentOS系 (yum / rpm) ---
sudo yum install -y tree
yum info tree
rpm -q tree
rpm -ql tree
rpm -qf /usr/bin/tree
sudo yum remove -y tree

Step 8. ハードウェア情報の確認

lsmod | head
lsusb -v 2>/dev/null | head -30
lspci -v 2>/dev/null | head -30
cat /proc/cpuinfo | head -20
cat /proc/meminfo | head -10
ls /sys/class/block/

Step 9. ディスク・パーティション・ファイルシステムの演習 (要:検証用の予備ディスク or 追加した仮想ディスク)

注意:このステップは既存データを破壊する可能性あり。仮想マシンに検証用ディスク(例:/dev/sdb)を追加した上で実施すること。

# ディスク一覧の確認 (まずは現状把握のみ)
lsblk
fdisk -l

# 対象ディスクのパーティション状況確認 (/dev/sdbを検証用ディスクと仮定)
fdisk -l /dev/sdb

# fdiskで対話的にパーティション作成 (n→p→1→Enter→Enter→w の流れ)
# ※以下のfdisk/gdisk/partedは同じ作業の3通りのやり方です。いずれか1つを選んで実行
fdisk /dev/sdb

# GPT専用ツールで作成する場合
gdisk /dev/sdb

# 非対話でのパーティション作成(データ用80% + スワップ用20%の2パーティションを作成)
parted /dev/sdb --script mklabel gpt mkpart primary ext4 0% 80% mkpart primary linux-swap 80% 100%
# ※fdisk/gdiskで作る場合も、同様にn(新規)を2回実行して2パーティション目を確保する

# LVMの一連の流れ
pvcreate /dev/sdb1
vgcreate vg_practice /dev/sdb1
lvcreate -L 2G -n lv_data vg_practice
lvcreate -L 500M -s -n lv_data_snap /dev/vg_practice/lv_data

# ファイルシステムの作成
mkfs.ext4 /dev/vg_practice/lv_data

# マウントポイントを作成して手動マウント
sudo mkdir -p /mnt/practice_data
sudo mount /dev/vg_practice/lv_data /mnt/practice_data
df -h /mnt/practice_data

# UUIDを調べてfstabに追記する準備 (実際の追記は自己責任で)
blkid /dev/vg_practice/lv_data
# echo 'UUID=xxxx-xxxx /mnt/practice_data ext4 defaults 0 2' | sudo tee -a /etc/fstab

# アンマウントとスワップの作成・確認
sudo umount /mnt/practice_data
sudo mkswap /dev/sdb2
sudo swapon /dev/sdb2
swapon --show
sudo swapoff /dev/sdb2

Step 10. プロセス管理の演習

cd ~/linuc-practice

# バックグラウンドで時間のかかる処理を模擬実行
sleep 300 &
jobs -l

# フォアグラウンドに戻す→ Ctrl+Zで一時停止→ bgでバックグラウンド再開 を試す
fg %1
# (Ctrl+Zを押す)
bg %1

# ログアウトしても継続するプロセスを作成
cd bin
cat > long_task.sh << 'EOF'
#!/bin/bash
for i in $(seq 1 100); do
    echo "processing $i" >> ../logs/long_task.log
    sleep 2
done
EOF
chmod +x long_task.sh
nohup ./long_task.sh &

# プロセスの監視・検索・終了
pstree -p
pgrep -f long_task.sh
top -o %CPU -n 1 -b | head -20

# シグナルは番号と名前のどちらでも指定できる (下記は主要な対応)
#  番号  名前      意味
#  1     SIGHUP    端末切断・設定の再読み込み
#  2     SIGINT    Ctrl+Cによる割り込み
#  9     SIGKILL   強制終了(プロセス側で無視できない)
#  15    SIGTERM   正常終了の要求 (デフォルト、後片付け処理を挟める)

# 利用可能なシグナル一覧の確認
kill -l

# プロセスの終了 (番号指定・名前指定は等価。実際のPIDに置き換える)
kill -15 $(pgrep -f long_task.sh)
# kill -SIGTERM $(pgrep -f long_task.sh)   # 上と全く同じ意味 (名前指定の例)

# tmuxでセッションを分離して作業 (演習用に一度体験しておくこと)
tmux new -s work
# tmux内で何か実行 → Ctrl+B, D でデタッチ
tmux attach -t work

Step 11. 後片付け

cd ~
# 演習で作成したプロセスの終了
pkill -f long_task.sh

# 演習用ディレクトリを丸ごと削除
ls -la linuc-practice
# rm -rf linuc-practice

まとめ

101試験は「GNUとUnixのコマンド」と「ハードウェア・ディスク・パーティション・ファイルシステム」が特に配点の厚い領域。
今回の演習を通しでもう一度実行し、grep -Eとegrepのような等価コマンド、fdisk/gdisk/partedのような似た役割のコマンドの使い分けを体で覚えていく。

102試験範囲は(シェルスクリプト、ネットワーク、システム管理、セキュリティなど)は別記事でまとめる。