-- Views
May 13, 26
スライド概要
何卒よろしくお願い申し上げます。 一流のIT研修講師を目指し、日々研鑽を続けております。 本資料は外部公開用としてご提供するものです。
CORPORATE TRAINING / 新卒未経験向け 30分で学ぶ Linux 必須コマンド 理系学部出身者のための、原理原則ベース短期講義 LPIC Level 1 / Level 2 公式範囲準拠 | 全22スライド YukikoIshiguro 面白きこともなき世を面白く ── 高杉晋作
AGENDA 02 / 22 本日のアジェンダ 30分で「使える」基礎を、原理から押さえる 00 5分 イントロ コマンドの構造と man の使い方 §1 5分 ファイル・ディレクトリ操作 ls, cd, pwd, mkdir, rm, cp, mv, find §2 5分 テキスト処理 cat, less, grep, パイプとリダイレクト §3 5分 プロセス・リソース監視 ps, top, kill, df, du, free §4 4分 権限・ユーザー管理 chmod, chown, sudo §5 5分 ネットワーク・サービス ip, ping, ssh, systemctl, journalctl 99 1分 まとめと次のステップ LPIC学習導線・参考一次資料 LPIC必須コマンド30分講義|うさうさ先生監修
INTRO 03 / 22 Linuxコマンドの構造 すべてのコマンドは「コマンド名 + オプション + 引数」で出来ている $ ls ▲ コマンド -l ▲ オプション (-) -h /var/log ▲ 引数 (対象) コマンド オプション 引数 PATHを順に探索して実行ファイルを呼ぶ 動作の修飾子。-短形式、--長形式 操作対象。複数取れるものが多い ▷ which / type で実体を確認 ▷ -h は human readable / --help は説明 ▷ ファイル・ディレクトリ・パターン等 迷ったら man コマンド名 / コマンド名 --help ── 一次情報を引く習慣が、エンジニアを育てる LPIC必須コマンド30分講義|うさうさ先生監修
SECTION 1 / 5 §1 ファイル・ディレクトリ操作 FILE & DIRECTORY OPERATIONS Linuxの「すべてはファイル」原則を、操作コマンドから体感する 04 / 22
§1 ファイル・ディレクトリ操作 05 / 22 現在地と一覧 ─ pwd / cd / ls pwd cd ls ピーダブリューディー シーディー エルエス 意味 意味 意味 現在のディレクトリ絶対パスを表示 ディレクトリを移動(シェル組込) ディレクトリ内容を一覧表示 原理原則 [理系] 原理原則 [理系] 原理原則 [理系] シェルプロセスのカレントワーキングディレ 外部コマンドではなくシェル組込。プロセス 対象ディレクトリの dirent エントリを クトリ(CWD)をchdir(2)で管理し、その絶対パ のCWDをchdir(2)で更新し、環境変数 PWD / readdir(3) で走査し、必要に応じ stat(2) で スを取得して標準出力へ。シンボリックリン OLDPWD を書き換える。cd - で直前ディレク inode情報を取得して整形出力。-l で長形式、- クで来た場合は -P で実体パスを表示できる。 トリへ復帰可能。 a で隠しファイル、-h で人間可読サイズ。 $ pwd → /home/user LPIC必須コマンド30分講義|うさうさ先生監修 $ cd ~ / cd .. / cd - $ ls -alh /var/log
§1 ファイル・ディレクトリ操作 06 / 22 作成・複製・移動・削除 ─ mkdir / cp / mv / rm mkdir rm cp mv メイクディレクトリ アールエム シーピー エムブイ 意味 意味 意味 意味 ディレクトリを新規作成 ファイル/ディレクトリを削除 ファイル/ディレクトリを複製 移動またはリネーム 原理原則 [理系] 原理原則 [理系] 原理原則 [理系] 原理原則 [理系] mkdir(2) システムコール。-p で親デ unlink(2)/rmdir(2) でディレクトリエン ソースを read(2)、新しいinodeを確保 同一ファイルシステム内なら ィレクトリを再帰的に同時生成、-m トリを除去。リンク数が0かつ参照プ して write(2)。-a で属性・所有者・タ rename(2) でディレクトリエントリの でモード指定。既存ならエラー。 ロセスが無くなった時点でinodeとデ イムスタンプ・SELinuxコンテキスト 付け替えのみ(高速・原子的)。FSを ータブロックが解放。-rf は非可逆。 まで保持してアーカイブコピー。 跨ぐ場合は cp 相当の後に元を削除。 $ mkdir -p a/b/c LPIC必須コマンド30分講義|うさうさ先生監修 $ rm -i / rm -rf dir $ cp -a src/ dest/ $ mv old.txt new.txt
§1 ファイル・ディレクトリ操作 条件検索 ─ find(万能の探索コマンド) find ファインド 意味 条件を指定してファイルを再帰検索 原理原則 [理系] 指定ディレクトリを深さ優先で再帰走査し、各エントリに対し評価式(-name / -type / -size / -mtime / -perm / -user 等)を順次適用。式は短絡評価で、true と なったエントリに -print(既定)または -exec で任意処理を連結できる。Unixの「小さなツールを組み合わせる」思想を体現する最重要コマンド。 $ find /var/log -type f -name '*.log' -mtime -7 -exec ls -lh {} \; LPIC必須コマンド30分講義|うさうさ先生監修 07 / 22
SECTION 2 / 5 §2 テキスト処理 TEXT PROCESSING & STREAMS 標準入出力とパイプ ─ Unix哲学の中核に触れる 08 / 22
§2 テキスト処理 09 / 22 閲覧の基本 ─ cat / less / head / tail cat less head tail キャット レス ヘッド テイル 意味 意味 意味 意味 ファイル内容を連結して表示 ページャー(前後移動・検索可 ) 先頭N行を表示(既定10行) 末尾N行を表示/追記を実況 原理原則 [理系] 原理原則 [理系] 原理原則 [理系] 原理原則 [理系] open(2) → read(2) → write(2) のルー ファイル全体をメモリに読み込まず -n NUM で行数指定。バイト単位は -c -f で inotify ベースの追記監視。-F は プで標準出力へ。複数ファイル指定 シーク移動。/ で検索、n で次、G で 。長大ログの冒頭確認や、ストリー ファイルローテーションも追従。ロ で連結。リダイレクトと組み合わせ 末尾。large fileに強い。more の上位 ム冒頭だけ消費したい場合に使う。 グ監視の定番手段。 ると簡易結合保存になる。 互換。 $ cat a.txt b.txt > c.txt LPIC必須コマンド30分講義|うさうさ先生監修 $ less /var/log/syslog $ head -n 20 access.log $ tail -f /var/log/syslog
§2 テキスト処理 10 / 22 パターン抽出 ─ grep(最も使う検索コマンド) grep グレップ 意味 正規表現で行単位の検索・抽出 原理原則 [理系] 標準入力または指定ファイルから1行ずつ読み取り、与えられた正規表現にマッチする行を出力。基本(BRE)・拡張(ERE,-E)・Perl互換(PCRE,-P)の3種類のエ ンジン切替が可能。-r で再帰、-v で反転、-n で行番号、-i で大小無視、-c で件数、-l でファイル名のみ、--include で対象限定。grep の語源は ed エディタの g/re/p (global / regex / print)。Unixの抽出フィルタの定番。 $ grep -rEn '^ERROR|FATAL' /var/log/ LPIC必須コマンド30分講義|うさうさ先生監修 / $ ps aux | grep -v grep | grep nginx
§2 テキスト処理 11 / 22 標準入出力・パイプ・リダイレクト すべてのプロセスは3本のファイルディスクリプタを持つ ── これがUnixの設計思想の核 0 stdin stdout stderr 標準入力 標準出力 標準エラー出力 キーボード / 前段のパイプ 1 画面 / 次段のパイプ 演算子の意味 | 前のstdoutを次のstdinに接続 $ ps aux | grep nginx | wc -l > stdoutをファイルへ上書き(既存削除) $ ls -l > files.txt >> stdoutをファイルへ追記 $ date >> log.txt < ファイルをstdinへ流し込む $ wc -l < input.txt 2> stderrのみリダイレクト $ cmd 2> error.log &> stdout/stderr両方をリダイレクト $ cmd &> all.log LPIC必須コマンド30分講義|うさうさ先生監修 2 画面(バッファ無し)
SECTION 3 / 5 §3 プロセス・リソース監視 PROCESS & RESOURCE MONITORING 「今、システムで何が起きているか」を観測する手段を身につける 12 / 22
§3 プロセス・リソース監視 13 / 22 プロセス可視化 ─ ps / top ps top ピーエス トップ 意味 意味 現時点でのプロセス一覧(スナップショット) プロセスをリアルタイム監視(対話) 原理原則 [理系] 原理原則 [理系] /proc/[pid]/{stat,status,cmdline} から各プロセスの状態を取得して表示。 /proc を一定周期(既定3秒)でポーリングしソート再描画。1キー=CPUコア BSD構文(ps aux)とSysV構文(ps -ef)が混在しているのは歴史的経緯。aux 別表示、Mキー=メモリ順、Pキー=CPU順、kキー=シグナル送信。後継と は a=全ユーザー / u=ユーザー指向 / x=制御端末なしも含む、の意味。 してhtop/atopもある。 $ ps aux / $ ps -ef --forest LPIC必須コマンド30分講義|うさうさ先生監修 $ top → M / P / 1 / k
§3 プロセス・リソース監視 14 / 22 プロセス制御 ─ kill とシグナルの仕組み kill は「殺す」のではなく「シグナルを送る」コマンド ── 中身を理解すると挙動が読める 主要シグナル kill キル 1 SIGHUP 2 SIGINT 9 SIGKILL 15 SIGTERM 18 SIGCONT 19 SIGSTOP 意味 プロセスに指定シグナルを送信する 原理原則 [理系] kill(2) システムコールでカーネルにシグナル送信を依頼。カーネルが対象プロセ ハングアップ / 設定再読込の慣用 割込(Ctrl+C 相当) 強制終了(捕捉/無視不可・最終手段) スのsignal queueに積み、プロセスは次回ユーザーモードに戻る際にハンドラを 実行する。シグナル番号は signal.h で定義された整数。 $ kill -9 1234 / $ kill -SIGTERM $(pgrep nginx) LPIC必須コマンド30分講義|うさうさ先生監修 通常終了要求(既定・お願いベース) 停止プロセスを再開 強制停止(捕捉不可)
§3 プロセス・リソース監視 15 / 22 リソース確認 ─ df / du / free df du free ディーエフ ディーユー フリー 意味 意味 意味 ファイルシステム単位の使用量 ディレクトリ単位の使用量 メモリ・スワップ使用量 原理原則 [理系] 原理原則 [理系] 原理原則 [理系] statvfs(3) で各マウント済みFSのブロック総数 指定ディレクトリ配下を再帰的に stat(2) し、 /proc/meminfo から取得。available は cache ・空き・inode情報を取得。-h で人間可読、-i 各ファイルのブロック数を集計。-sh で合計の を考慮した実質的余裕量で、used より重要な でinode使用率。inode枯渇は容量に余裕があっ み可読表示、--max-depth=1 で第1階層のみ。 指標。スワップが頻繁に使われるとI/O待ちが ても発生し得る重要観点。 実ファイルサイズと割当ブロック数は異なる 増えるためvmstatのsi/soと合わせて確認。 点に注意。 $ df -hT / $ df -i LPIC必須コマンド30分講義|うさうさ先生監修 $ du -sh /var/* | sort -h $ free -h / $ vmstat 1
SECTION 4 / 5 §4 権限とユーザー PERMISSIONS & USERS 「誰が何をできるか」を制御する ── マルチユーザーOSの根幹 16 / 22
§4 権限とユーザー 17 / 22 パーミッション ─ chmod / chown 3ビット×3対象 = 9ビット + 特殊3ビット = inode内のmodeフィールドが本体 ls -l の表示を分解する chmod の使い方 $ chmod 755 script.sh - rwx r-x r-- 数値モード指定 $ chmod u+x file 所有者に実行を追加 $ chmod -R go-w dir/ 種別 所有者(u) グループ(g) その他(o) -/d/l rwx=読書実 r-x=読・実 r--=読のみ g/oから書込を再帰削除 $ chmod a=r file 通常/dir/link 全員を読のみに 数値表現: r=4 / w=2 / x=1 を足す → rwx r-x r-- = 754 chown 特殊パーミッション(応用) 所有者(uid)とグループ(gid)を変更(要root) SUID (4000) 実行時に所有者権限で動作 例: /usr/bin/passwd SGID (2000) 実行時にグループ権限/dirは新規ファイルが親grpを継承 Sticky (1000) dir内のファイルを所有者のみ削除可 例: /tmp inodeの uid / gid フィールドを書換える。-R で再帰、--reference=FILE で他ファイ ルと同じ所有関係をコピー。chgrpはgidのみ変更する派生コマンド。 LPIC必須コマンド30分講義|うさうさ先生監修
§4 権限とユーザー 18 / 22 権限昇格 ─ sudo(rootを安全に使う仕組み) sudo スードゥー 意味 他ユーザー(既定root)の権限でコマンドを実行 原理原則 [理系] 実行時に /etc/sudoers と /etc/sudoers.d/* を visudo 経由で解析し、呼出元ユーザー・ホスト・対象コマンドの3条件で許可判定。許可時は setuid(2) で実効UID を切替えて目的コマンドをexec(3)。全実行はauthログ(/var/log/auth.log や journald)に記録され、ssh root直接ログイン禁止+sudoのみ許可、が現代のサーバ 運用標準。su との違い: パスワードは自分自身のもの、コマンド単位の許可、ログが残る、の3点。 $ sudo apt update / $ sudo -u www-data php artisan ... LPIC必須コマンド30分講義|うさうさ先生監修 / $ sudo visudo
SECTION 5 / 5 §5 ネットワーク・サービス NETWORKING & SERVICES 外との接続と、内側のサービスを「観る・操る」最小セット 19 / 22
§5 ネットワーク・サービス 20 / 22 ネットワーク基本 ─ ip / ping / ssh ip ping ssh アイピー ピング エスエスエイチ 意味 意味 意味 ネットワーク統合管理(iproute2) ICMP Echoで到達性とRTT測定 暗号化リモートログイン 原理原則 [理系] 原理原則 [理系] 原理原則 [理系] netlink ソケット経由でカーネルのネットワー ICMP Echo Request を生成し相手のEcho TCP/22 で鍵交換(KEX)→公開鍵またはパスワ クスタックを操作。addr=L3アドレス、link=L2 Reply帰着までを測定。L3レベルの疎通確認。 ード認証→対称暗号セッション確立。 インタフェース、route=ルーティング、 受信側がICMPを破棄する設定なら応答無しで ~/.ssh/config に Host エイリアスとオプション neigh=ARP/NDキャッシュ。古い ifconfig/route も到達はしている可能性あり。 を束ねるのが運用上の定石。 の後継。 $ ip addr show / ip route / ip link set eth0 up LPIC必須コマンド30分講義|うさうさ先生監修 $ ping -c 4 8.8.8.8 $ ssh -i ~/.ssh/key.pem user@host
§5 ネットワーク・サービス 21 / 22 サービス管理 ─ systemctl / journalctl systemctl journalctl システムシーティーエル ジャーナルシーティーエル 意味 意味 systemd ユニット制御(サービス起動・停止) systemd-journald のバイナリログを閲覧 原理原則 [理系] 原理原則 [理系] PID 1 として動作する systemd に対する制御フロントエンド。.service / /var/log/journal/ のバイナリ構造化ログを時系列・ユニット・優先度などで .socket / .timer / .target などの ユニット定義(/etc/systemd/system/, フィルタ表示。-u でユニット、-f で追従、-p で優先度、--since/--until で時 /lib/systemd/system/) を依存関係込みで起動・停止・有効化。enable は起 刻範囲、-b で起動回別。テキストログ時代の grep + tail を一手に置き換え 動時自動起動の登録(シンボリックリンク作成)、start は今すぐ起動。 る。 $ systemctl start nginx / enable / status / list-units LPIC必須コマンド30分講義|うさうさ先生監修 $ journalctl -u nginx -f / -p err -b
22 / 22 SUMMARY & NEXT STEPS まとめ ──「観る・操る・記録する」 30分で押さえた20+コマンド。すべては /proc, /etc, システムコールに帰着する §1 ファイル §2 テキスト §3 リソース §4 権限 §5 ネット/サービス ls / cd / pwd cat / less ps / top chmod / chown ip / ping / ssh mkdir / cp / mv / rm head / tail kill (signal) sudo / visudo systemctl find grep df / du / free SUID/SGID/Sticky journalctl | > >> < 2> 次のステップ ── 一次情報に当たる習慣を 1. man / --help を最初に引く。Webより速く正確、かつOSバージョンに整合 2. LPIC Level 1 公式範囲 (101/102) で網羅性を確保 ── 体系化された地図を持つ 3. 毎日1コマンド、深掘り。「ソースは何を参照しているか」をstrace -fで覗く 面白きこともなき世を面白く ── 高杉晋作