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 08, 2025
Technology
2
46
シェルのセッション
以下動画のテキストです。
https://youtu.be/obf6qnCBkQU
Satoru Takeuchi
PRO
February 08, 2025
Tweet
Share
More Decks by Satoru Takeuchi
See All by Satoru Takeuchi
会社員しながら本を書いてきた知見の共有
sat
PRO
3
690
デバイスにアクセスするデバイスファイル
sat
PRO
1
31
ファイルシステムのデータを ブロックデバイスへの操作で変更
sat
PRO
1
24
デバイスドライバ
sat
PRO
0
37
マルチスレッドの実現方法 ~カーネルスレッドとユーザスレッド~
sat
PRO
2
84
共有メモリ
sat
PRO
3
60
マルチスレッドプログラム
sat
PRO
3
51
Linuxのブートプロセス initramfs編
sat
PRO
2
65
Linuxのブートプロセス
sat
PRO
6
170
Other Decks in Technology
See All in Technology
大規模PaaSにおける監視基盤の構築と効率化の道のり
lycorptech_jp
PRO
0
170
Redmineの意外と知らない便利機能 (Redmine 6.0対応版)
vividtone
0
1.1k
NW運用の工夫と発明
recuraki
1
770
Digitization部 紹介資料
sansan33
PRO
1
3.8k
S3 Tables を図解でやさしくおさらい~基本から QuickSight 連携まで/s3-tables-illustrated-basics-quicksight
emiki
1
330
積み上げられた技術資産と向き合いながら、プロダクトの信頼性をどう守るか
plaidtech
PRO
0
840
カンファレンスのつくりかた / The Conference Code: What Makes It All Work
tomzoh
8
920
toittaにOpenTelemetryを導入した話 / Mackerel APM リリースパーティ
cohalz
1
490
研究開発部メンバーの働き⽅ / Sansan R&D Profile
sansan33
PRO
3
17k
Roo Codeにすべてを委ねるためのルール運用
pharma_x_tech
1
220
【5分でわかる】セーフィー エンジニア向け会社紹介
safie_recruit
0
24k
Introduction to Sansan, inc / Sansan Global Development Center, Inc.
sansan33
PRO
0
2.6k
Featured
See All Featured
Practical Orchestrator
shlominoach
188
11k
Intergalactic Javascript Robots from Outer Space
tanoku
271
27k
It's Worth the Effort
3n
184
28k
Building a Modern Day E-commerce SEO Strategy
aleyda
40
7.3k
The Power of CSS Pseudo Elements
geoffreycrofte
76
5.8k
The Web Performance Landscape in 2024 [PerfNow 2024]
tammyeverts
5
620
The Success of Rails: Ensuring Growth for the Next 100 Years
eileencodes
45
7.3k
実際に使うSQLの書き方 徹底解説 / pgcon21j-tutorial
soudai
PRO
180
53k
Thoughts on Productivity
jonyablonski
69
4.7k
JavaScript: Past, Present, and Future - NDC Porto 2020
reverentgeek
48
5.4k
Put a Button on it: Removing Barriers to Going Fast.
kastner
60
3.9k
Unsuck your backbone
ammeep
671
58k
Transcript
シェルのセッション Feb. 8th, 2025 Satoru Takeuchi X: satoru_takeuchi 1
シェルのセッション • ログインしてシェルが立ち上がってからログアウトしてシェルが終了するまでの期間 • ログインセッションとも呼ばれる • カーネルのセッション機能を使っている 2
カーネルのセッション機能 • 各セッションにはセッションID(SID)が割り当てられる • セッションを開始したプロセス(bashなど)がセッションリーダーとなる • 端末(デバイス名はttyXやptyX)に結びついている ◦ 📝 その33「端末デバイス」
◦ ほとんどの場合はgtermのような疑似端末に結びついている ◦ よくわからなければ「文字だらけの白黒のウィンドウ」くらいの感覚でよいです • ログインセッションでないセッションもある ◦ 📝 別動画で紹介予定 3
セッションIDの表示 • bashからps ajxを実行 4 $ ps ajx PPID PID
PGID SID TTY TPGID STAT UID TIME COMMAND ... 19261 19262 19262 19262 pts/0 19647 Ss 1000 0:00 -bash ... 19262 19647 19647 19262 pts/0 19647 R+ 1000 0:00 ps ajx ...
システムに複数のログインセッションが存在する場合 5 Aさんのセッション: go build & vim Bさんのセッション1: ps aux
| less Bさんのセッション2: sleep 10 bash go build zsh ps aux less vim zsh sleep 10 セッション 端末 pty/0 pty/1 pty/2
セッションに紐付く端末が末の接続が切れると… • カーネルがセッションリーダー(bashなど)にSIGHUPを送る • bashはSIGHUPのハンドラで同じセッションに属する全ジョブにSIGHUPを送って から終了 ◦ ジョブはパイプで繋がれた一連のプロセス ▪ 📝
別動画で解説予定 ◦ ジョブにSIGHUPを送る ~= プロセスにSIGHUPを送る ◦ プロセスはSIGHUPを受信するとデフォルトで終了する • 疑似端末ウィンドウを閉じると端末から実行したプロセスが全部終了するのはこの 仕組みによるもの 6
プロセスを終了させたくなければ… • プログラムでの対処 ◦ SIGHUPを無視するコードを書く ◦ SIGHUPのシグナルハンドラを設定して、このシグナルを受信しても終了しないようにする • 便利コマンド ◦
nohupコマンド ▪ SIGHUPを無視する設定にしたうえでプログラムを起動する ◦ bashのdisown組み込みコマンド ▪ ジョブ(プロセスのかたまり)をbashの管理下から外す ▪ bashがSIGHUPを受け取ってもdisownしたジョブにはSIGHUPを送らない 7
まとめ • ログインしてからシェルが立ち上がってログアウトしてシェルが終了するまでに保持 される期間をセッションと呼ぶ • カーネルのセッション機能に結びついている • セッションは端末に結びついている ◦ 端末の接続が切れると通常はセッションに紐づくプロセスはすべて終了する
◦ nohupコマンドやbashのdisown組み込みコマンドを使うと終了を避けられる 8