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
0
460
第2回 GNU/Linux勉強会
Hiroto Sasagawa
July 09, 2023
Tweet
Share
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
Symfony + NelmioApiDocBundle を使った スキーマ駆動開発 / Schema Driven Development with NelmioApiDocBundle
okashoi
0
140
エンジニアの「手元の自動化」を加速するn8n 2026.02.27
symy2co
0
160
エラーログのマスキングの仕組みづくりに役立ったASTの話
kumoichi
0
240
PostgreSQL を使った快適な go test 環境を求めて
otakakot
0
560
AI活用のコスパを最大化する方法
ochtum
0
110
ロボットのための工場に灯りは要らない
watany
10
2.9k
モジュラモノリスにおける境界をGoのinternalパッケージで守る
magavel
0
3.6k
最初からAWS CDKで技術検証してもいいんじゃない?
akihisaikeda
4
160
maplibre-gl-layers - 地図に移動体たくさん表示したい
kekyo
PRO
0
280
grapheme_strrev関数が採択されました(あと雑感)
youkidearitai
PRO
1
230
Claude Codeログ基盤の構築
giginet
PRO
7
3.4k
Takumiから考えるSecurity_Maturity_Model.pdf
gessy0129
1
150
Featured
See All Featured
Public Speaking Without Barfing On Your Shoes - THAT 2023
reverentgeek
1
340
Dominate Local Search Results - an insider guide to GBP, reviews, and Local SEO
greggifford
PRO
0
110
A Modern Web Designer's Workflow
chriscoyier
698
190k
職位にかかわらず全員がリーダーシップを発揮するチーム作り / Building a team where everyone can demonstrate leadership regardless of position
madoxten
62
52k
Lessons Learnt from Crawling 1000+ Websites
charlesmeaden
PRO
1
1.1k
Learning to Love Humans: Emotional Interface Design
aarron
275
41k
Bootstrapping a Software Product
garrettdimon
PRO
307
120k
Navigating Weather and Climate Data
rabernat
0
140
The Language of Interfaces
destraynor
162
26k
Templates, Plugins, & Blocks: Oh My! Creating the theme that thinks of everything
marktimemedia
31
2.7k
Leading Effective Engineering Teams in the AI Era
addyosmani
9
1.7k
Chrome DevTools: State of the Union 2024 - Debugging React & Beyond
addyosmani
10
1.1k
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よりも⾼速