dtrace でもっとインタラクティブシェル!

Post on 25-May-2015

1.391 Views

Category:

Documents

1 Downloads

Preview:

Click to see full reader

DESCRIPTION

dtrace でシステムコールをフックして zsh を喋らせながら使い方を覚えました。

TRANSCRIPT

dtrace でもっとインタラクティブシェル!

2010/12/16 kei <http://apribase.net>

自己紹介

Mandriva Linux や on JVM 言語好き

最近は割と雑食

今日は OpenSolaris 寄りなお話

まずはこれを見てほしい

さっきはなにやったの?

さっきはなにやったの?dtrace を使って

システムコールをフックしました!

コマンド実行時に声を出してくれます。

なんでつくったの?人よりシェルと話す時間のが長くて寂しかった。

声が聞きたくなるじゃない、

人間だもの (´・ω・`)

# 教育用サンプル作成が本当の目的

dtrace ってなに?システム情報取得のための

トレースツールです

dtrace ってなに?プローブと呼ばれる計測ポイントで

パフォーマンスを計測したり

システムコールを検知したり

関数フローをトレースしたり

だいたいなんでも見れます

世間の dtrace の紹介をおさらいします

ほら、プローブ数すごいでしょ?

$ dtrace -l プローブの一覧を出す

ほら、プローブ数すごいでしょ?

$ dtrace -l プローブの一覧を出す

$ dtrace -l | wc -l 96898

ほら、プローブ数すごいでしょ?

$ dtrace -l プローブの一覧を出す

$ dtrace -l | wc -l 96898

多すぎるし 呪文すぎてわかりません

トレースすごいでしょ?

$ sudo dtrace -n "syscall::open:entry, syscall::stat:entry, syscall::stat64:entry / execname == \"vim\" / { trace(copyinstr(arg0)) } "

トレースすごいでしょ?

$ sudo dtrace -n "syscall::open:entry, syscall::stat:entry, syscall::stat64:entry / execname == \"vim\" / { trace(copyinstr(arg0)) } "

トレースする目的がないと楽しくない orz

もっと入門者向けの例を

真面目な話ばかりで遊んでいる記事がない

もっと入門者向けの例を

真面目な話ばかりで遊んでいる記事がない

正直、使い方を覚えるだけでもつらかった

もっと入門者向けの例を

真面目な話ばかりで遊んでいる記事がない

正直、使い方を覚えるだけでもつらかった

よろしい、ならばわたしが人柱だ・・・!

もっと入門者向けの例を

フックに着目して、イベントに合わせてアクションを起こすサンプルを提案したい

これならアプリのイベントリスナー感覚で

既存のシステムの上におもちゃを作れる・・・!

もっと入門者向けの例を

もっと入門者向けの例を

← 土日の試行錯誤の跡

もっと入門者向けの例を

← キーイベントプローブが Mac だとなかった

もっと入門者向けの例を

← キーイベントプローブが Mac だとなかった

出だしで泣きたくなった。

もっと入門者向けの例を

← zsh のソースを解析してみた

もっと入門者向けの例を

← zsh のソースをいろいろ読んでみた それらしい関数なのに反応しない orz

もっと入門者向けの例を

← プロセス監視したら fork して逃げられた?

もっと入門者向けの例を

← プロセス監視したら fork して逃げられた?

俺はお前を見ていたいんだ・・・!

もっと入門者向けの例を

← TTY 入力を奪うことにした

もっと入門者向けの例を

← TTY 入力を奪うことにした 1文字打ち込むたびに喋って 賑やかなること、うけあい。

もっと入門者向けの例を

← システムコールをいろいろ奪ってみた

もっと入門者向けの例を

← システムコールをいろいろ奪ってみた CPU が暴走して MacBook Air が火事

もっと入門者向けの例を

↓ システムコール execve が zsh から呼ばれたとき

system() で python ワンライナーを呼ぶことで落ち着きました。 (問題もあるけどね)

dtrace が使える環境Solaris 10

OpenSolaris

Mac OS X (Leopard からサポート)

FreeBSD (7.1-RELEASE からサポート)

などで使えます。

OS の基礎は勉強したほうがいいかも

OS (プロセス周り) やシェル周りは少しだけ知ってたほうが遊びやすいかもしれないです

Operating System Concepts 8th Edition

Abraham Silverschatz

dtrace 本は 2011/03 発売

dtrace 本はようやく来年出るようです。

DTrace: Dynamic Tracing in

Oracle Solaris, Mac OS X and FreeBSD

dtrace を触った人はこんな技術も触っています

ZFS (ファイルシステム仮想化)

Zone (コンテナ仮想環境)

Crossbow (ネットワーク仮想化)

東京 OpenSolaris 勉強会 忘年会 2010.12 http://atnd.org/events/10514

次にやりたいこと

dtrace で文字列結合できないのが残念だった

dtrace D言語を拡張できれば幸せじゃ?

Dアセンブリ?を解析できればコンパイラ作れる・・・!

おわり

ありがとうございました

$ say thanks

top related