Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
シェルのジョブ
Search
Satoru Takeuchi
PRO
February 23, 2025
Technology
1
66
シェルのジョブ
以下動画のテキストです。
https://youtu.be/LvuQqQvtork
Satoru Takeuchi
PRO
February 23, 2025
Tweet
Share
More Decks by Satoru Takeuchi
See All by Satoru Takeuchi
ソースを読むプロセスの例
sat
PRO
14
8.5k
メモリマップトファイル
sat
PRO
1
98
「Linux」という言葉が指すもの
sat
PRO
4
200
APIとABIの違い
sat
PRO
5
170
ファイルシステムへのアクセス方法
sat
PRO
0
66
ファイルシステム
sat
PRO
1
62
低レイヤソフトウェア技術者が YouTuberとして食っていこうとした話
sat
PRO
7
6.2k
ポーリングと割り込み
sat
PRO
1
120
Rook: Intro and Deep Dive With Ceph
sat
PRO
1
150
Other Decks in Technology
See All in Technology
カンファレンスに託児サポートがあるということ / Having Childcare Support at Conferences
nobu09
1
590
Findy Team+ QAチーム これからのチャレンジ!
findy_eventslides
0
380
技育祭2025【秋】 企業ピッチ/登壇資料(高橋 悟生)
hacobu
PRO
0
110
スタートアップにおけるこれからの「データ整備」
shomaekawa
2
490
dbtとBigQuery MLで実現する リクルートの営業支援基盤のモデル開発と保守運用
recruitengineers
PRO
3
100
やる気のない自分との向き合い方/How to Deal with Your Unmotivated Self
sanogemaru
0
510
"プロポーザルってなんか怖そう"という境界を超えてみた@TSUDOI by giftee Tech #1
shilo113
0
200
OCI Network Firewall 概要
oracle4engineer
PRO
2
7.9k
BI ツールはもういらない?Amazon RedShift & MCP Server で試みる新しいデータ分析アプローチ
cdataj
0
160
Contract One Engineering Unit 紹介資料
sansan33
PRO
0
8.8k
ビズリーチ求職者検索におけるPLMとLLMの活用 / Search Engineering MEET UP_2-1
visional_engineering_and_design
1
140
Introdução a Service Mesh usando o Istio
aeciopires
0
170
Featured
See All Featured
Practical Tips for Bootstrapping Information Extraction Pipelines
honnibal
PRO
23
1.5k
Automating Front-end Workflow
addyosmani
1371
200k
How GitHub (no longer) Works
holman
315
140k
Large-scale JavaScript Application Architecture
addyosmani
514
110k
The Web Performance Landscape in 2024 [PerfNow 2024]
tammyeverts
10
870
Being A Developer After 40
akosma
91
590k
Bootstrapping a Software Product
garrettdimon
PRO
307
110k
The Illustrated Children's Guide to Kubernetes
chrisshort
49
51k
Build The Right Thing And Hit Your Dates
maggiecrowley
37
2.9k
Practical Orchestrator
shlominoach
190
11k
Why Our Code Smells
bkeepers
PRO
340
57k
The Cult of Friendly URLs
andyhume
79
6.6k
Transcript
シェルのジョブ Feb. 23rd, 2025 Satoru Takeuchi X: satoru_takeuchi 1
シェルのジョブ • シェル上での1つのコマンド、またはパイプで繋がれた一連のプロセス • 2種類ある ◦ フォアグラウンドジョブ : 実行時に末尾に”&”を付けない(e.g. ps
ajx | less) ▪ 端末に直接アクセスできる ▪ セッションの中で常に 1つ ◦ バックグラウンドジョブ : 実行時に末尾に”&”を付ける(e.g. go build &) ▪ バックグラウンド(裏側)で実行 ▪ 端末に直接アクセスできない • アクセスするとフォアグラウンドプロセスになるまで待たされる ▪ セッションの中で複数存在できる 2
プロセスグループ 3 • カーネルの機能 • シェルのセッションはプロセスグループを使って実装している ◦ フォアグラウンドジョブ => フォアグラウンドプロセスグループ
◦ バックグラウンドジョブ => バックグラウンドプロセスグループ • パイプラインの最初のプロセスをプロセスグループリーダーと呼ぶ ◦ プロセスグループリーダーは端末の入出力を直接受け取る • プロセスグループごとに固有のID、プロセスグループIDが対応する ◦ プロセスグループIDはプロセスグループリーダーの PIDと等しい
セッションとジョブの関係 4 セッション プロセスグループ(ジョブ)1 (バックグラウンド) プロセスグループ(ジョブ)2 (フォアグラウンド) ps aux less
端末 go build bash 生成 生成&パイプでつなげる アクセス可 フォアグラウンド になるまで アクセスを待たさ れる
例 • “go build”はバックグラウンドジョブ(プロセスグループ)として実行 • “ps aux | less”はフォアグラウンドジョブ(プロセスグループ)として実行 5
$ go build & $ ps ajx | less PPID PID PGID SID TTY TPGID STAT UID TIME COMMAND ... 19261 19262 19262 19262 pts/0 19653 Ss 1000 0:00 -bash ... 19262 19653 19653 19262 pts/0 19653 R+ 1000 0:00 ps ajx 19262 19654 19653 19262 pts/0 19653 S+ 1000 0:00 less ...
プロセスグループとシグナル • シグナルはプロセスグループに送れる ◦ プロセスグループ内の全プロセスにシグナルを送る ◦ “kill”コマンドの場合、例えば ”kill -100”を実行するとプロセスグループ (IDは100)にシグナルを送る
• 疑似端末上で”C-c”を押すとフォアグラウンドプロセスグループにSIGINTシグナル を送る ◦ バックグラウンドプロセスグループには送らないのでバックグラウンドプロセスは残る 6
まとめ • シェルのセッションにはジョブという概念がある • ジョブはカーネルのプロセスグループという機能によって実現している ◦ フォアグラウンドジョブ => フォアグラウンドプロセスグループ ▪
端末に直接アクセスできる ◦ バックグラウンドジョブ => バックグラウンドプロセスグループ ▪ 端末にアクセスすると待たされる • プロセスグループにシグナルを送信すると、所属する全プロセスにシグナルを送信 する 7