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
第2回 GNU/Linux勉強会
Search
Hiroto Sasagawa
July 09, 2023
Programming
460
0
Share
第2回 GNU/Linux勉強会
Hiroto Sasagawa
July 09, 2023
More Decks by Hiroto Sasagawa
See All by Hiroto Sasagawa
IP Anycastとリバースプロキシ
nagutabby
0
450
HSTSについて調べた
nagutabby
0
410
第1回 AWS勉強会
nagutabby
0
590
第1回 GNU/Linux勉強会
nagutabby
0
540
第3回 GNU/Linux勉強会
nagutabby
0
520
DNSを標的とする攻撃
nagutabby
0
470
EC2とCloudWatchで始める高対話型ハニーポット運用
nagutabby
0
600
Other Decks in Programming
See All in Programming
VueエンジニアがReactを触って感じた_設計の違い
koukimiura
0
180
10 Tips of AWS ~Gen AI on AWS~
licux
5
410
Cache-moi si tu peux : patterns et pièges du cache en production - Devoxx France 2026 - Conférence
slecache
0
240
おれのAgentic Coding 2026/03
tsukasagr
1
150
YJITとZJITにはイカなる違いがあるのか?
nakiym
0
220
AWS re:Invent 2025の少し振り返り + DevOps AgentとBacklogを連携させてみた
satoshi256kbyte
3
160
AIエージェントで業務改善してみた
taku271
0
530
書籍「ユーザーストーリーマッピング」が私のバイブル
asumikam
3
350
ローカルで稼働するAI エージェントを超えて / beyond-local-ai-agents
gawa
3
280
AWSコミュニティ活動は顧客のクラウド推進に効くのか / Do AWS community activities help customers adopt the cloud?
seike460
PRO
0
140
UIの境界線をデザインする | React Tokyo #15 メイントーク
sasagar
2
360
ハーネスエンジニアリングとは?
kinopeee
10
5.3k
Featured
See All Featured
AI: The stuff that nobody shows you
jnunemaker
PRO
6
570
Designing Experiences People Love
moore
143
24k
DevOps and Value Stream Thinking: Enabling flow, efficiency and business value
helenjbeal
1
170
Introduction to Domain-Driven Design and Collaborative software design
baasie
1
730
Building Adaptive Systems
keathley
44
3k
How Fast Is Fast Enough? [PerfNow 2025]
tammyeverts
3
530
Organizational Design Perspectives: An Ontology of Organizational Design Elements
kimpetersen
PRO
1
680
Done Done
chrislema
186
16k
Distributed Sagas: A Protocol for Coordinating Microservices
caitiem20
333
22k
The Illustrated Guide to Node.js - THAT Conference 2024
reverentgeek
1
340
Future Trends and Review - Lecture 12 - Web Technologies (1019888BNR)
signer
PRO
0
3.5k
HDC tutorial
michielstock
2
630
Transcript
第2回 GNU/Linux 勉強会 正規表現、⽂字列探索、プロセス管理 2022/5/23 笹川 尋翔
正規表現とは • 端的に⾔えば、あいまいな表現 • 定義 • ⽂字列の集合を1つの⽂字列で表現する⽅法 • メリット •
⽂字列検索を⾏う際にコード量を削減できる
もう少し分かりやすく • カレーを例に考えてみる • 世界には⾊々なカレーがある • チキンカレー • ビーフカレー •
ポークカレー … • 全てのカレーを検索対象とするときは、単に「カレー」と検索すれば いい • 正規表現では同様のことを「*カレー」という⽂字列で表現する
Linuxにおける正規表現 • grepコマンドと組み合わせることが多い • 今回はgrepコマンドを例に、実際に検索⽂字列から⽂字列を抽 出してみる
grep(global regular expression print) • ファイルや標準出⼒に書かれている⽂字列を検索対象として、指定 した⽂字列を検索するコマンド • ⽤法 •
grep 検索パターン ファイル名 • オプション • -c: マッチした⾏数のみを表⽰する • -f: ファイルの内容を検索パターンに指定する • -i: ⼤⽂字と⼩⽂字を区別しない • -n: 先頭に⾏番号を付けてマッチした⾏を表⽰する • -v: マッチしなかった⾏を表⽰する
grep • -E: 拡張正規表現を使う • egrepコマンドと同じ挙動になる • -F: 検索パターンを正規表現ではなく固定⽂字列として解釈する •
fgrepコマンドと同じ挙動になる • -e: 検索パターンを指定する • 検索パターンが1つの場合は不要
grepを使ってみる • それぞれのユーザのホームディレクトリにinput.txtファイルを 作成してある • 実際にgrepコマンドを使って⽂字列を検索してみる • ⽂字列linuxを含む⾏の⽂字列を表⽰する • grep
linux input.txt
grep -i • ⼤⽂字と⼩⽂字を区別せずに、⽂字列linuxを含む⾏の⽂字列を 表⽰する • grep ‒i linux input.txt
grep ‒v • ⽂字列linuxを含まない⾏の⽂字列を表⽰する • grep ‒v linux input.txt
grepでAND, OR検索 • AND検索(A∩B) • grepで抽出した結果を|(パイプ)で次のgrepに渡す • grep 検索パターンA ファイル名
| grep 検索パターンB • OR検索(A∪B) • grepの-eオプションで複数の検索パターンを指定する • grep ‒e 検索パターンA ‒e 検索パターンB ファイル名 • 拡張正規表現の|を使う • grep ‒E 検索パターンA|検索パターンB ファイル名 • egrep 検索パターンA|検索パターンB ファイル名
grepの正規表現 • []: []内の任意の1⽂字 • [abc]: aかbかcのいずれか1⽂字を含む⾏ • [a-z]: aからzまでのいずれか1⽂字(⼩⽂字のアルファベット)を含む⾏
• [A-Z]: AからZまでのいずれか1⽂字(⼤⽂字のアルファベット)を含む ⾏ • [0-9]: 0から9までのいずれか1⽂字(数字)を含む⾏
grepの正規表現 • .(ドット):任意の1⽂字 • ...(ドット3つ): 任意の3⽂字 • .*: 任意の⽂字列 •
a.*: aを含む⾏ • ^: ⾏頭 • ^a: aから始まる⾏ • $: ⾏末 • a$: aで終わる⾏
grepの正規表現 • ⾏頭が⼤⽂字Lである⾏の⽂字列を表⽰する • grep ^L.* input.txt あるいは grep ^L
input.txt • マッチの仕⽅が全部⼀致でも部分⼀致でも ⾏は表⽰されることに注意する
特殊⽂字のエスケープ • エスケープする⽅法 • \(バックスラッシュ)を特殊⽂字の直前に挿⼊する • ʻʼ(シングルクォーテーション)で囲む • grepの-Fオプションを使う •
fgrepを使う
プロセス管理 • プロセス • Linuxカーネルがプログラムを管理する際の単位の1つ • プログラムを実⾏すると⽣成されるインスタンス • 親プロセスがforkされている場合は、単⼀のプログラムでも複数のプ ロセスを持つ
• 親プロセスと⼦プロセスの関係はpstreeコマンドで確認できる
pstree(process tree)
init • Linuxカーネルが起動した際に最初に実⾏されるプログラム • initのPIDは必ず1になる • 他の全てのプロセスの親プロセス • 古い⽅から順番に、SysVinit、Upstart、systemdがある
SysVinit • initプロセスを開始 • → initプロセスが/etc/inittabを読み込む • → /etc/inittabに書かれたプロセスを順番に開始する •
メリット • 開始するプロセスを1つのファイルだけで管理できる • デメリット • プロセスを順番に開始するため、全てのプロセスが開始されるまでに ⻑い時間が掛かる
Upstart • イベント駆動型 • initプロセスを開始 • → initプロセスがイベントを検知する • →
イベントを処理するために必要なジョブを実⾏するためのジョブ定 義ファイルを/etc/event.dディレクトリから検索する • → ジョブを実⾏する • メリット • プロセスを並列で起動することができる
systemd • initのデファクトスタンダード • ほとんどのディストリビューションで採⽤されている • プロセスをユニットと呼ばれる単位で管理する • systemdプロセスを開始 •
→ default.targetを確認 • → default.targetに書かれているtargetを確認 • → 読み込んだtargetを元に必要なユニットを起動
systemd • メリット • プロセスを並列で起動することができる • Upstartよりも⾼速