>100 Views
April 20, 26
スライド概要
はじめまして、ALJ Education Plus 株式会社のyukikoと申します。 IT教育支援や、DX推進が可能です。 ◆ スキル LPIC レベル2 AI / Python Splunk BI(データ可視化・分析) ◆ その他 新卒・未経験の学生向けに、エンジニア転職を応援する資料を趣味で作成しています。 もしよろしければご活用ください。 ◆IT研修講師をお探しの方は [email protected] にお気軽にお問い合わせください。 ※ALJ Education Plus 株式会社を通して、ご支援させていただきます。 ◆Zenn https://zenn.dev/yukiko_sapporo/articles/46c13e9f98b110
LPIC 101 / 新卒文系エンジニア向け 「ジョブ」を味方に つけよう! ― シェルの中で起きていることを、うさうさラーメン店の厨房で理解する ― ALJ Education Plus 講師: Yukiko / 25分講義 + 5分口頭クイズ 面白きなき世を面白く — Linuxコマンドも、面白く。
SECTION 01 今日のゴール 25分後、あなたはここに立っています 1 2 3 言える 見分けられる 使える 「ジョブって何?」を 自分の言葉で説明できる フォアグラウンド と バックグラウンドの違いがわか る jobs / bg / fg / & / nohup を使い分けられる 今日の学び方 → LPIC 101 / ジョブ管理 ①用語 ②簡単に ③詳しく 一言まとめ 2 / 16
SECTION 02 ジョブって、そもそも何? まずは ①用語 から ① 用語を確認 シェルで実行するものは、すべて 「ジョブ」 Job ジョブ シェル(コマンドライン)で実行される 処理(プロセス)のまとまり。 LPIC 101 / ジョブ管理 $ echo test test $ cat bigfile & [1] 3542 # コマンド1つ = ジョブ1つ 3 / 16
SECTION 02 ジョブって、そもそも何? ②簡単に書くよ ※正確な表現ではございません ② 簡単に言うと… うさうさラーメン店で例えると お客さん 注文票(=ジョブ) 厨房(=プロセス) 「塩ラーメン一丁!」 と注文する 1つの注文 = 1つの作業のまとまり 店員さんが 実際に作業を進める echo test は「塩ラーメン一丁!」と同じ。echo = 注文票、test = 出てきた一杯。 LPIC 101 / ジョブ管理 4 / 16
SECTION 02 ジョブって、そもそも何? ③詳しく書くよ ※原理原則 ③ 詳しく言うと… 「シェルが、プロセスをまとめて扱うための単位」 階層で整理すると… シェル ① 識別番号がつく あなたの指示を受付 ↓ 受け取って「ジョブ化」 ジョブ [1] [2] シェルが管理する単位 ↓ 1つ以上のプロセスに展開 プロセス (PID) LPIC 101 / ジョブ管理 OSが実行する最小単位 [1] [2] [3] … ジョブ番号 ② シェル単位の管理 そのシェルが閉じると基本的に終了 ③ 2つの実行形態 フォアグラウンド / バックグラウンド 5 / 16
SECTION 03 ジョブには 2 種類ある 見た目は1つだけど、働き方が違う フォアグラウンド (Foreground) バックグラウンド (Background) カウンター席で塩ラーメンを待つ 裏で寸胴鍋を煮込んでいる状態 • • 完了するまで他のことができない 画面に結果がそのまま出る • • 実行中でも次のコマンドが打てる 時間がかかる処理に向いている • • 小さなコマンドに向いている 例: echo / ls / cat など • • Webサーバーなど常駐系に必須 例: sleep 300 & / nohup など LPIC 101 / ジョブ管理 6 / 16
SECTION 04 フォアグラウンド ジョブ ①用語 ②簡単 ③詳しく ① ② 用語 Foreground Job ユーザーが直接実行し、 完了するまで制御が 戻ってこないジョブ。 $ sleep 10 簡単に カウンター待ち 塩ラーメンが出るまで、 カウンターで待ち続ける。 他の注文はできない。 ③ 詳しく 端末を占有 シェルは終了/中断まで 待機。標準入出力は そのジョブに占有される。 ← 10秒間プロンプトが返ってこない (フォアグラウンド) LPIC 101 / ジョブ管理 7 / 16
SECTION 05 バックグラウンド ジョブ ①用語 ②簡単 ③詳しく ① ② 用語 簡単に Background Job 裏で煮込む寸胴鍋 ユーザーが実行しても、 制御がすぐ戻り 他のコマンドが打てる ジョブ。 店員さんは他の仕事を しながら、スープを 裏で煮込み続ける。 $ sleep 300 & LPIC 101 / ジョブ管理 ③ 詳しく 端末を占有しない シェルはすぐプロンプトを 返す。時間のかかる処理・ サーバー常駐に最適。 ← 末尾に「&」を付けると裏で動く (プロンプト即復帰) 8 / 16
SECTION 06 裏で動かす魔法「&」(アンパサンド) コマンドの末尾にちょい足しするだけ コマンドの末尾に & を付けるだけ こんなときに使う 大量データのコピー cp -r hugedir /backup & $ sleep 300 & [1] 4521 $ # ←すぐプロンプトが # 戻ってくる! 長時間のビルド処理 make all & ログの常時監視 tail -f app.log & & は「これ裏でやっといて!」のサイン。厨房の奥に注文を回すイメージ。 LPIC 101 / ジョブ管理 9 / 16
SECTION 07 ログアウトしても動き続ける「nohup」 店を閉めても寸胴鍋は煮え続ける ① nohup = No HangUP ②簡単に (※正確な表現ではございません) 書き方はシンプル $ nohup ./long_task.sh & お店を閉めても、裏で 寸胴鍋の火は落とさない。 翌朝までコトコト煮込む。 ① nohup + & で実行 ③詳しく (原理原則) ② exit / ターミナルを閉じる SIGHUP(ハングアップ)信号を 無視。ターミナル/セッションが 終了しても処理が継続する。 ③ それでも処理は動き続ける ✓ → 出力は nohup.out に保存される & だけ だとセッション終了時にジョブも止まる → 長時間処理は nohup + & がセット! LPIC 101 / ジョブ管理 10 / 16
SECTION 08 ジョブの確認「jobs」 今の厨房には何の注文が残ってる? ① 用語 実行してみよう jobs コマンド 現在のシェルの ジョブ一覧を表示 ② 簡単に 注文ボードを確認する 「今、裏で何作ってる?」 ③ 詳しく そのシェルが管理する ジョブを番号付きで リスト表示する組込コマンド $ sleep 300 & [1] 4521 $ sleep 400 & [2] 4522 $ jobs [1]- Running [2]+ Running sleep 300 & sleep 400 & 記号の意味: [番号] ジョブ番号 / + カレントジョブ / − 1つ前のジョブ LPIC 101 / ジョブ管理 11 / 16
SECTION 08 jobs の出力を読み解く 1行の中に4つの情報が詰まっている [2]+ Running sleep 400 & ジョブ番号 記号 状態 コマンド [2] = 2番目のジョブ + : 今のカレントジョブ Running / Stopped など 実行したコマンド文字列 fg / bg に続けて [2] のように番号指定するとき、この番号を使います! LPIC 101 / ジョブ管理 12 / 16
SECTION 09 ジョブを行き来させる「fg / bg」 カウンターと厨房の出入り フォアグラウンド バックグラウンド カウンター席 厨房の奥 fg [番号] bg [番号] 画面占有 fg 2 → 2番のジョブを前面に LPIC 101 / ジョブ管理 裏で継続 bg 2 → 2番のジョブを裏に戻す 13 / 16
SECTION 10 フォアグラウンドを止める 2つのキー 「一時停止」と「終了」は別モノ Ctrl + Z (一時停止 / Suspend) Ctrl + C (終了 / Terminate) • • ジョブを止めて、プロンプトを返す 状態は「Stopped」として残る • • ジョブを「中断」して消す SIGINT が送られる • • fg / bg で再開できる 例: 大きな処理を一旦止めたい時 • • 再開不可、完全にキャンセル 例: 間違って実行した時にスパッと 覚え方: 「Z」zzz…眠る(一時停止) / 「C」Cancel キャンセル(終了) LPIC 101 / ジョブ管理 14 / 16
SECTION 11 一言でまとめるよ! ジョブは「シェルが扱う仕事の単位」 時間のかかる処理は裏 (&)、確認は jobs、行き来は fg/bg、離席も続けたければ nohup。 & で裏 jobs で確認 時間のかかる処理は 末尾に「&」を付ける 今シェルに何が居るのか 番号つきで見える化 fg / bg で移動 カウンター 厨房を 番号で自由に行き来 面白きなき世を面白く — Linuxコマンドも、きっと面白くなる。
SECTION 12 口頭クイズタイム (5分) 答えられたら、今日の目標クリアです! 1 Q1 フォアグラウンドで実行中のコマンドを止めるキーは? A. 2 Q2 『sleep 100』をバックグラウンドで実行したい。末尾につける記号は? A. 3 Q3 今、実行中のジョブを確認したいときのコマンドは? A. 4 Q4 ジョブ番号 2 をバックグラウンドからフォアグラウンドに戻すには? A. 5 Q5 ログアウト後もバックグラウンド処理を続けたい。何を使う? A. 次回:プロセス管理 (ps / kill / top) — ジョブの先にある『プロセス』の世界へ! LPIC 101 / ジョブ管理 16 / 16
SECTION 12 口頭クイズタイム (5分) 答えられたら、今日の目標クリアです! 1 Q1 フォアグラウンドで実行中のコマンドを止めるキーは? A. Ctrl + Z 2 (アンパサンド ) Ctrl + C (終了 ) → sleep 100 & Q3 今、実行中のジョブを確認したいときのコマンドは? A. jobs 4 または Q2 『sleep 100』をバックグラウンドで実行したい。末尾につける記号は? A. & 3 (一時停止) (※ ps は全プロセスを見る別コマンド) Q4 ジョブ番号 2 をバックグラウンドからフォアグラウンドに戻すには? A. fg 2 5 Q5 ログアウト後もバックグラウンド処理を続けたい。何を使う? A. nohup コマンド + & 例: nohup ./run.sh & 次回:プロセス管理 (ps / kill / top) — ジョブの先にある『プロセス』の世界へ! LPIC 101 / ジョブ管理 16 / 16