俺の話を聞け!!LT大会 #8でトークした資料です

Linuxのカーネルは膨大な数のソースコードから成り立っており、どこに何の処理が書いてあるのかぱっと見当をつけるのにはかなりコードを読み込む必要があります。「Interactive map of Linux kernel」はそのソースコードを機能とレイヤーで分類して表示してくれるサイトということで、使い勝手を試してみました。 Interactive map of Linux kernel http://www.makelinux.net/kernel_map/ サイトにアクセスし、ロードが終わると下の画像のように6列6行の表が表示されます。列が機能の分類を表しており、「インターフェース」「システム」「処理」「メモリー」「ストレージ」「ネットワーク」という分類になっています。行はレイヤーを表しており、上からシステムコールなどの「ユーザースペースインターフェース」、「バーチャル」、「ブリッジ」
twitter で評判だった「Linux のしくみ」を最近買いました。前評判通り、実際に動くコードを用いて実験ベースで Linux の仕組みを説明してくれる良い本で、これは非常にお勧めできるなと思いました(6〜7割よみつつ、今いろんな箇所の実験を手元でやってみています)。 第4章 プロセススケジューラの部分では、プロセスに対して、論理CPU がどのように割り当てられるのか説明しつつ、それが本当に正しいのかを、コードを使って実験してみることにより示していました。だいたいの内容を読み、まぁそうですよね...と納得しつつも、実際に手元マシンで実験してみたことはなかったので、今回自分の手を動かしてやってみることにしました。 実験内容 複数のプロセスを生成して、それぞれのプロセスにおいてループを回して、ユーザーモードの負荷をかけたとき、どのように各プロセスが実行されるかを観察する 測定の際は、複数の
Linuxサーバの障害対応で社内で伝統的に使われているテクニック。I/Oで完全にブロックしているポイントを特定するノウハウ。 問題対応のため、怪しいプロセスをstraceしてみる read(2)やwrite(2)でブロックしていることを発見する read(2)やwrite(2)、connect(2)の引数にはファイルディスクリプタ番号がみえる プロセスIDとファイルディスクリプタ番号を使って、/proc//fd/ の中身をみると、ソケットI/Oで刺さっている場合はソケット番号を発見できる netstat からソケット番号でgrepして接続先を発見する [y_uuki@hogehoge ~]$ sudo strace -p 10471 Process 10471 attached - interrupt to quit read(58, <unfinished ...> Process 10
カーネルのバージョンやシステムの構成や実行するタイミングなどの変動要因により、結果が異なる場合がありますことを予めご了承ください。 0.3 自己紹介:熊猫の Linux との関わりについて OSレベルでのセキュリティ強化 2003年4月から2012年3月までは、 TOMOYO Linux という Linux システム向けのアクセス制御モジュールの開発に携わってきました。バッファオーバーフロー脆弱性やOSコマンドインジェクション脆弱性を撲滅できない状況で、当初は SELinux という難解なアクセス制御モジュールしかありませんでした。 TOMOYO Linux のメインライン化にまつわる苦労話は、セキュリティ&プログラミングキャンプ2011の講義資料を参照していただければと思います。 TOMOYO Linux から始まって AKARI や CaitSith に至るまでの変遷は、セキュリティ・
configファイル修正したり、ソースをいじった際によくdiffコマンドを使って変更点を確認しますよね。 オプション無しで実行すると見にくいけど、あるオプションを付けてやると gitっぽく出力してくれたり、WinMergeっぽく出力してくれるようになります。 覚えておくと便利なので、ぜひ見ていってください。 オプション無し オプション無しでdiff を叩くと以下のように出力されます。 見にくい・・ 慣れない人が見るとなんじゃこりゃとなりそうですね。 [root@bacchi ~]# diff /etc/ntp.conf.orig /etc/ntp.conf 8,9c8,10 < restrict default kod nomodify notrap nopeer noquery < restrict -6 default kod nomodify notrap nopeer noquer
はじめに LinuxでCtrl-C打ったらコマンドが中断されるとか。皆さんご存知ですよね。こういうことに関連したちょっとした四択クイズです。Linux使い各位、当然、全問正解できますよね? 問題 いずれもPuTTYなりTeraTermなりのターミナルソフトでLinuxマシンにSSHで接続した、ログインシェル上での対話操作の上でのお話です。ターミナルソフトなんかは特に設定をいじらないことにします。一応。それと、シェルは大体なんでも同じだと思うのですが、念のためbashと指定しておきます。 Q1: シグナル送ったのは誰? 「はじめに」でも書きましたが、Ctrl-Cを入力すると、実行中のコマンドを停止させることができますね。例えば次のように。
ccze インストール 使い方 色設定 ccze wonderwall.hatenablog.com 上記記事でcczeというログに色を付けるコマンドを知ったので使い方を調べてみる。 ccze(1): robust log colorizer - Linux man page(cczeマニュアルページ) インストール CentOSの場合(今回はCentOSで試してみる)。 $ sudo yum install cczeUbuntuの場合。 $ sudo apt-get install cczeMacの場合。 $ brew install cczeヘルプメッセージ。 $ ccze --help Usage: ccze [OPTION...] ccze -- cheer up 'yer logs. -a, --argument=PLUGIN=ARGS... Add ARGUMENTS to P
commandlinefu.com コマンド使用例 ^foo^bar mount | column -t time read (ctrl-d to stop) echo "You can simulate on-screen typing just like in the movies" | pv -qL 10 mv filename.{old,new} diff <(sort file1) <(sort file2) !* !:- fc date -d@1234567890 ps awwfux | less -S bind -P mkdir -p work/{d1,d2}/{src,bin,bak} showkey -a ccze grep . filename > newfilename grep -Fx -f file1 file2 grep . * kill -9 $$ tail
コマンドラインプログラムの引数、オプションといったインターフェースには ちゃんと仕様、ガイドラインといったものが存在しています。 Unix(Linux) では慣習としてなんとなく合うものなのですが、 Windows や Java のプログラムなどでは、インターフェースがめちゃくちゃなプログラムも結構あります。 今回はコマンドラインプログラムの標準的なインターフェースの仕様、動作を紹介します。 プログラムを作る際の参考にしてもらえればと思います。 標準インターフェースはよくあるケースを考慮されて作られているものです。 自分の作っているプログラムは標準的なケースと違うといったことがあるかもしれません。 しかし、 標準のスタイルは合わせること自体に意味があります。 作成する場合にはなるべく標準インターフェースにあわせて作るべきだと思います。 Windows or Unix スタイル コマンドライ
こんにちわ。せじまです。 先日ポチった C302CA が届いたんですが、(話が長くなるのですごい雑にいうと)Chromebook の、いろいろ削ぎ落として最適化するという方向性には、とても学ぶところがありました。 昨年末、 MySQLのサーバ集約に取り組んでいるという話をさせていただきましたが、「DB集約できてきたので、Webアプリケーションサーバも集約するかー」ということで、最近はWebサーバの集約にも取り組んでいます。 ただ、PHPゴリゴリ書いてるのではなく、集約していく上で Linux や TCP 的な観点からチューニングしたほうが良いところを見てまして、そのへんについてあるていどまとまったので、次のスライドを書かせていただきました。
興味があって調べていたら、少しだけ分かったのでまとめておきます。当然間違った箇所もある、あと考慮が漏れている箇所もあるかと思いますのでツッコミをお願いします… ptrace(2) システムコール strace の核となるシステムコールは ptrace(2) である。ptrace(2)を用いることで、あるプロセスを別のプロセスから監視し、シグナルごとに停止してレジスタやメモリの状態を観察したり変更したりできる。gdbのようなデバッガのブレークポイント、あるいはまさにstraceのような目的で利用される。 大まかな利用方法としては、親プロセスの ptrace(PTRACE_ATTACH, pid, ...) (または子プロセスの ptrace(PTRACE_TRACEME, 0...))によりトレースが開始し、wait()などで停止を待ってから様々な設定を親から送り、 ptrace(PTRAC
TCP Fast Open TCP Fast Openと呼ばれる技術があり、RFC 7413として標準化されている。 このTCP Fast Openを使うと、一度コネクションを貼った相手とは、TCPの3ウェイハンドシェイク中にデータを送受信できるようになる。クライアントからSYNとともにデータを送信することで、実際にデータを送受信開始するまでの待ち時間が短縮できる。 Linuxではすでにクライアント/サーバ両方でTCP Fast Openを使用できる。 TCP Fast Openの闇 しかし、数年前よりこのTCP Fast Openには一部のネットワークで奇妙な振る舞いをすることが知られている。Appleの人が実際にデプロイした時に見つけたもので、IETFやNANOGにて報告されており、その時の資料は下記のとおりである Deploying TCP Fast Open in the wild
B! 44 0 2 0 ターミナルでドキュメントを開く手軽なコマンドのlessですが、 小さなものならcatで良かったり、 サイズがそこまで大きく無ければvim等のエディタで開いてみてしまったりすることが多いです。 というのもlessの機能を余り知らないのでvimなどで見た方が色々と便利だったりするので。 しかしlessも実は結構高機能で便利だったりするので知っていると 使えることも結構あります。 その辺の一歩踏み込んだlessの使い方について。 less オプションのプレセット指定 表示中にオプションを切り替える シンタックスハイライト(source-hilight、ついでにlesspipe.shについて) 途中からエディタで開く 複数のファイルを扱う tail -fの代わりに使う less lessはMark Nudelman氏によって書かれたもので、今は GNU Projectの一つ
追記 直近の Docker 界隈について Linux コンテナ 参考 Linux コンテナとは Linux コンテナを構成する主な機能 OS リソース毎の Namespace cgroup サブシステム こんなにざっくりでは、Linux コンテナは語れないと思うけど haconiwa haconiwa とは haconiwa で何が出来ると? haconiwa 導入 はじめての haconiwa (1) はじめての haconiwa (2) 〜 コンテナ作成 〜 はじめての haconiwa (3) 〜 コンテナ起動 〜 haconiwa で学ぶ Linux コンテナ .haco ファイル再掲 namespace を弄る前に namespace uts namespace pid 俺は Linux コンテナについてなんにも解っていなかった(まとめ) haconiwa は Linux コンテ
目的 仮想メモリ空間のアドレス等のメモリマップを調べる。 なお、ちゃんと調べたわけではないので誤りがあるかもしれない。 環境 OS: Oracle Enterprise Linux 5.8 Kernel: 2.6.32-300.10.1.el5uek x86_64 Unix/Linux における仮想メモリ空間のメモリマップは一般には以下のようになっている。 +------------------------------+ 0x0000000000000000 : : +------------------------------+ | | | text | 機械命令 | | +------------------------------+ | | | data | 初期化された static 変数 | | +------------------------------+ | | | BSS
簡単な解説 [ ] は囲まれた文字のリスト中の一文字にマッチする。 「grep "[z]sh"」とダブルクォートで囲み[ ]を使うことで grep の プロセスは「grep "[z]sh"」になる。 実際のプロセスの検索は「z」一文字と「sh」という意味で検索されるため、grep のプロセスは一致しなくなる。 課題 これは手で grep する時用な気がしている。スクリプトの中で grep 対象が変数に格納されている場合は「grep -v grep」の方が書くのは楽。 元ネタ 結構昔から利用しているので元ネタはすっかり忘れたが、おそらく元ネタはこのあたり。ps -ef | grep hoge | grep -v grep ではなく、ps -ef | grep [h]oge - hogehoge @teramako
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く