タグ

Linuxに関するkitakのブックマーク (43)

  • Yoshinba Linux Wiki - Yoshinba Linux wiki

    始めに † このサイトには、主にLinuxの情報をまとめたメモが記されています。 主にサーバ用途を目的としていますので、あらかじめご了承ください。 また、プログラミングに関してのメモも記していきます。 サーバ運用上必要なプログラミングを考えていますので、アクセス解析等のスクリプト言語が主になります。 また、このサイトは自分用のメモとして残しております。 意味のわからない部分等が多々あるかもしれませんが、あらかじめご了承ください。 だた、記事に間違いがある場合は連絡していただければ、すぐに修正いたします。 wikiの利点である階層化をほとんど行っておりません。 見づらかったら変更することは可能ですので、ご意見をください。 閲覧、リンクはご自由に。 このwikiはyoshiba個人のメモサイトなので、yoshinba以外に編集許可を与えておりません。 あらかじめご了承くだ

  • クラブ・ラボ

    このサイトは、 KLab株式会社が公開しているオープンソースソフトウェアや実験サービスについて紹介するはずだけど ただいま引越中です。

    kitak
    kitak 2010/06/04
    DSASブログまとめ
  • Top page — server-memo.net

    はじめにこのサイトのことを 自宅にサーバを立てることが出来れば色んなことが出来ると思いませんか? メールサーバを作ればメールアドレスも作り放題だし、Webサーバを作れば Webサーバも容量を気にせず好きなだけ使えますし、なんといってもサーバを構築していくのは楽しいですよね。 自分の意図したとおりの動作をしたときの、あの達成感は何物にもかえられません!! そんな楽しみをみなさんと少しでも共有できたらと思いこのサイトを作りました。  このサイトは私(tamohiko)がFreeBSDにて自宅でサーバを構築する際に調べた色々なことをメモとしてアップしています。 今はFreeBSDのみですがLinuxWindowsにも興味ありありなので、そちらの方も時間が出来ればやっていきたいと思っています。 仕事の関係上Redhat系ディストリビューションを触ることが多くなりました。Windowsは相変わら

  • 第116回 UbuntuとEmacsでプログラミングをはじめよう(前編) | gihyo.jp

    プログラミングをはじめよう いよいよ2010年度がはじまりました。この春からの新入社員や新入学生の方の中には、これからLinuxでプログラミングを始めるという方も多くいると思います[1]⁠。Windowsでプログラミングといえば、Visual Studioのような統合開発環境を使用するのが一般的のようですが、Ubuntuではどうすればよいのでしょうか。 UbuntuはUnixの文化を受け継ぐOSですから、プログラミングのためのツールは豊富に揃っています。しかしそれゆえに「とりあえずこうすればOK」という定石がよくわからないという人も多いかもしれません。 Linuxにおける開発環境は色々ありますが、やはり一番メジャーな統合開発環境といえばEclipseとNetBeansでしょう。しかし今回から3回にわたって、開発環境としてのEmacsを紹介します[2]⁠。 Emacsのインストール Emac

    第116回 UbuntuとEmacsでプログラミングをはじめよう(前編) | gihyo.jp
  • Linuxでシステムに対して意図的に高負荷をかけたい場合 - 元RX-7乗りの適当な日々

    今更感があるかもしれませんが紹介。 stressコマンドを使うと、CPUやメモリ、ディスクに対して意図的に負荷を与えることができます。 どこで使うかというと、、、高負荷時のシステムの挙動を見たい場合、AutoScaling等の負荷状況に応じて自動でスケールアップ/アウトさせるための仕組みのテストをしたい場合、部屋が寒いときにPCに発熱させたい場合wwwなどで使えるのかな、と。 Stressをインストール CentOSやRedHatの場合は、DAG(rpmforge)のリポジトリがあるので、ここのパッケージからインストールしましょう。 DAGをyumのリポジトリに追加する場合は、以下リンクから(CentOS5[x86_64]系の2010/05/14時点の最新版は)"rpmforge-release-0.3.6-1.el5.rf.x86_64.rpm"をダウンロードして、rpmインストールしま

    Linuxでシステムに対して意図的に高負荷をかけたい場合 - 元RX-7乗りの適当な日々
  • Linuxファイルシステムまとめ | エンタープライズ | マイコミジャーナル

    Make Tech Easier - Uncomplicating the complicated, making life easier 代表的なファイルシステムに絞っても、Linuxにはいくつか選択候補になるファイルシステムがある。ディストリビューションの指針や評価ごとに違うファイルシステムが採用されたり、バージョンがあがるごとにデフォルトのファイルシステムも入れ替わる傾向がある。インストール時に選択できることが多い。 どのファイルシステムを選択するかは用途ごとに適切なものを選べばいいことになるわけだが、それぞれを比較するのは少々大変だ。そうした場合に役に立つ情報がChoosing The Best Linux Filesystem For Your PC - Make Tech Easierにおいて公開された。代表的なLinuxファイルシステム(Ext2、Ext3、Ext4、Reis

  • OKLab - Bourneシェルスクリプト入門

    最近ではコンピューター、ウェブ、モバイルでゲームを楽しめるようになりました。これらのゲームプログラミングについて学びましょう。 ゲームプログラミングの特徴 ゲームプログラミングは比較的新しいジャンルです。 ゲーム開発に使用される言語は、C#、C++JavaScriptSwiftRubyです。ゲームでは通常のアプリケーションと異なり複雑なビジュアルを操作するパフォーマンスと速度が要求されますので、プログラム言語もそれに特化している言語がおすすめです。 ゲームプログラミングは今後も人気の職種です。習得してステップアップを目指しましょう。 Oracle PLのプログラミング言語について学びましょう。 Oracle PLの特徴 SQL、T-SQLと同様にOracle PLもデータベースを処理するための言語です。違いとしてはOracle PLは世界最大のデータベースのひとつであるOracle

  • Linux の close は fsync 相当を調べる - naoyaのはてなダイアリー

    Linuxのcloseは暗にfsyncするから、ここであげられている 100000回繰り返し open 8K write close というパターンだとfsyncコストが見えちゃうので良くないんじゃないかな とのことで、そうなのか! と思ったので例によって深追いしてみました。 まず fsync(2) の実装は fs/sync.c にあります。 asmlinkage long sys_fsync(unsigned int fd) { return __do_fsync(fd, 0); } static long __do_fsync(unsigned int fd, int datasync) { struct file *file; int ret = -EBADF; file = fget(fd); if (file) { ret = do_fsync(file, datasync);

    Linux の close は fsync 相当を調べる - naoyaのはてなダイアリー
  • Linux I/O のお話 write 編 - naoyaのはてなダイアリー

    write はページに dirty フラグを立てるだけなので決してユーザープロセスを待たせない って、当にそうなんでしょうか?(否定しているわけではなく、純粋な疑問です。) と質問をもらったので、最近追ったことをここでまとめます。かなり長文です、すいません。また、まだまだ不勉強なので間違っているところもあるかもしれません。ツッコミ大歓迎です。 まず、オライリーのカーネルの 15章 ページキャッシュ 15.3 汚れたページのディスクへの書き込み から引用。 ご存知のように、カーネルは、ブロック型デバイスのデータを含むページをページキャッシュに蓄えています。プロセスが何らかのデータを更新した場合は、必ず対応するページに汚れている印をつけます。すなわち、PG_dirty フラグを設定します。 UNIX システムでは、汚れたページのブロック型デバイスへの書き込みを遅延することができます。この方

    Linux I/O のお話 write 編 - naoyaのはてなダイアリー
  • inetd の仕組みを見てみる - naoyaのはてなダイアリー

    inetd や xinetd (以下 inetd) はインターネットサービスをデーモン化するのに共通している処理を担い、ほとんどの時間をアイドル状態で過ごすその手のサービスに必要なリソースを節約する役割を果たします。 inetd のひとつ面白いところは、inetd でサービス化したいプログラムの標準入力/標準出力がクライアントソケットの入出力に接続されるところです。例えば daytime 相当のサービスを自分で作ろうと思った場合 #!/usr/local/bin/perl # daytime.pl use strict; use warnings; use DateTime; use IO::Handle; STDOUT->autoflush(1); STDOUT->printf( "%s\n", DateTime->now(time_zone => 'Asia/Tokyo') ); と標

    inetd の仕組みを見てみる - naoyaのはてなダイアリー
  • naoyaのはてなダイアリー - sched_setaffinity(2) を使って任意のプログラムを任意のCPU上で動かす

    Linux 2.6 には sched_setaffinity(2) というシステムコールがあり、これを利用して任意のスレッドを(マルチCPU環境下で)特定の CPU で実行させることができます。http://www-06.ibm.com/jp/developerworks/linux/051028/j_l-affinity.shtml によるとリアルタイムプロセスでマネージャとなるスレッドをこのシステムコールで特定の CPU に固定する...といった応用が考えられるそうです。 へえ、と思ったのでちょっと遊んでみました。LD_PRELOAD を使って任意のプログラムを任意の CPU に固定して動かしてみます。GCC の __attribute__)((constructor))( で sched_setaffinitiy(2) を呼びます。(参考: http://0xcc.net/blog/

    naoyaのはてなダイアリー - sched_setaffinity(2) を使って任意のプログラムを任意のCPU上で動かす
  • Linux カーネルのコンテキストスイッチ処理を読み解く - naoyaのはてなダイアリー

    Linux カーネルのプロセススケジューラの核である kernel/sched.c の schedule() を読み進めていくと、タスク切り替え(実行コンテキスト切り替え)はその名も context_switch() という関数に集約されていることが分かります。2.6.20 の kernel/sched.c だと以下のコードです。 1839 static inline struct task_struct * 1840 context_switch(struct rq *rq, struct task_struct *prev, 1841 struct task_struct *next) 1842 { 1843 struct mm_struct *mm = next->mm; 1844 struct mm_struct *oldmm = prev->active_mm; 1845 184

    Linux カーネルのコンテキストスイッチ処理を読み解く - naoyaのはてなダイアリー
  • naoyaのはてなダイアリー - Linuxのページキャッシュ

    世間では PHP が、Perl が、と盛り上がっているようですが空気を読まずまたカーネルの話です。今回はページキャッシュについて。 /dev/shm に参照系DBを持っていくと I/O 負荷が激減した件(当たり前だけど) - drk7jp で、ディスク上にあったファイルを /dev/shm (tmpfs) に移したら I/O 待ちがなくなって負荷がさがった、ということなんですがおそらくこれは tmpfs に置く必要はないかなと思います。Linux (に限らず他の OS もそうですが) にはディスクの内容を一度読んだらそれはカーネルがキャッシュして、二度目以降はメモリから読む機構 = ページキャッシュがあります。tmpfs にデータを載せることができた、ということは物理メモリの容量に収まるだけのデータサイズかと思うので、放っておけば該当のファイルの内容すべてがメモリ上にキャッシュされて io

    naoyaのはてなダイアリー - Linuxのページキャッシュ
  • マルチコア時代のロードアベレージの見方 - naoyaのはてなダイアリー

    ちょっと煽り気味のタイトルですが、CPU がマルチコアになり 2個、4個と増えていく中 Linux の負荷の指針になるロードアベレージをどう読むべきか、という話です。気になったところを少し調べたのでそのまとめを。 http://d.hatena.ne.jp/naoya/20070222/1172116665 でも書いたとおり、Linux のロードアベレージは「ロードアベレージは過去1分、5分、15分の間の実行待ちプロセス数の平均数 = 実行したくても他のプロセスが実行中で実行できないプロセスが平均で何個ぐらい存在してるか」を示す値です。ボトルネックが CPU、メモリ、ディスク等々どこにあるかは関係なく、仕事の実行までにどれぐらい待たされているかを示す値なので、システムのスループットを計測する指標の入り口になる値です。 このロードアベレージですが、実装を見るとランキュー(待ち行列)に溜まった

    マルチコア時代のロードアベレージの見方 - naoyaのはてなダイアリー
  • prefork サーバーと thundering herd 問題 - naoyaのはてなダイアリー

    Catalyst を POE で動かす Engine の Catalyst::Engine::HTTP::POE という実装が CPAN にあります。"Single-threaded multi-tasking Catalyst engine " だそうです。"Single-threaded" と言いつつも実装を覗いてみると環境変数 CATALYST_POE_MAX_PROC を 1 よりも大きく設定することで prefork する実装になってます。POEシングルスレッドではアプリケーション内で発生するブロックを避けることが難しいのでそのための実装じゃないかなと思います。 ところでこの Catalyst POE エンジン、prefork の実装はどのように行っているかというと POE から prefork と名の付いたイベントが発生するとおもむろに子プロセスを生成する、というのもの。複数の

    prefork サーバーと thundering herd 問題 - naoyaのはてなダイアリー
  • $HOME/binにあるスクリプトを晒してみる - Humanity

    前は$HOME/.zshrcとかに書いてたんだけど、bashでも使えるようにシェルスクリプトにしてみた。 cygwinも使うので、なるべくcygwinでも問題なく動くようになってるはず・・・ あと説明めんどいので一行だけ。 catjp 日語で表示する。 #!/bin/sh if [ $(uname -o) = "Cygwin" ]; then encoding="windows" else encoding="unix" fi while getopts e: opt; do case $opt in "e" ) encoding="$OPTARG" ;; * ) usage ; exit 0 ;; esac done cat $* | nkf --$encoding cpan-inst cpanモジュールをいちいちエンターキー押さずにインストール #!/bin/sh for i in

    $HOME/binにあるスクリプトを晒してみる - Humanity
  • naoyaのはてなダイアリー - tmpfs は本当に容量が動的なのか

    Linux には tmpfs という便利なファイルシステムがあります。 $ mount -t tmpfs -o size=64m tmpfs /dev/shm $ mount -t tmpfs -o size=64m /dev/shm /var/tmpとすると、/var/tmp がディスク上ではなくメモリ上に作られたファイルシステムとして mount されます。なので、/var/tmp は I/O 時にディスクI/Oが一切発生しない高速なディスクとして使えると。いわゆる RAM ディスク。(もちろんサーバーの電源を落とすと保存したファイルは消えます。) この tmpfs はなかなかに便利で、キャッシュとかそういうものでディスクにおいてたものここ置くと、ディスク I/O がカットできて超高速になります。はてなでは MySQL のスレーブの MyISAM のファイルを tmpfs において、オ

    naoyaのはてなダイアリー - tmpfs は本当に容量が動的なのか
  • 一般ユーザ権限で root 所持のファイルを編集するときは sudoedit を使おう - amari3の日記

    root 権限を渡すことはできないけど、一部 root 所持のファイルを編集する権限を与えたいときがあると思う。具体的には以下の様なファイルが該当すると思う。 apache のコンフィグファイル メールエイリアス *1 これらを実現するためには、sudo の設定をして、編集する権限を与えると思うのだが、以下のやり方を許可すると root 権限が奪取されてしまう可能性があるので、やってはいけないです。 [amari3@vm1]% sudo /usr/bin/vi /etc/apache2/apache2.conf外注先等にこのやり方で編集権限を与えると、大きなセキュリティホールとなるので気をつけましょう。 しかしながら、root 所持のファイルを編集したいという要件は多々あると思うので、これから紹介する sudoedit*2 というコマンドを使うことで、root 権限が奪取されることを防ぐこ

    一般ユーザ権限で root 所持のファイルを編集するときは sudoedit を使おう - amari3の日記
  • アジアのペンギン: アセンブラの勉強方法

    ダンプを解析するときなどはアセンブラを理解していないといけません。勉強しようと思っても最初は意味不明でやりづらいのですが、簡単でわかりやすい方法があります。実務的にはこれで十分だと思いますのでご紹介します。 この方法ではLinuxマシンを用意すればいいだけです。(を探したり、購入する必要もなし) アセンブラを理解するためにはCPUのレジスタなどを理解する必要があります。私が実際にダンプを解析するときに見るのはEIP、ESPぐらいです。アセンブラからソースコードを解析する場合は少しアセンブラ命令の意味を理解していれば、レジスタは汎用的に使用されるため特別な知識はあまり必要ありません。 まずは下記のようなソースコードを作成して、コンパイルします。( Fedora Core 5 32bit の場合 ) # cat assemble.c #include <stdio.h> int globa

  • Assembly Programming Linux

    はじめに. アセンブラを使って Linux のプログラミングで遊んでみます.アセンブラには NASM を使用して,カーネルを直接利用することにします. いまさらアセンブラでプログラムを作成することは,時代錯誤と感じる人も 多いかもしれません.「アセンブラでプログラミングなんて職人芸でしょう」 と思うかもしれません. 20年前では趣味のプログラミングは BASIC か アセンブラしか選択肢がありません でしたが,今ではPerl, Ruby からアセンブラまでの間に非常に多くの言語があって, アセンブラは普通では不要な最下層の知識となっていると思います. 10BaseT のツイストペアケーブルのインピーダンスを気にする人はほとんどいない ようなものでしょうか? アセンブリ言語の学習で最も困難なのは,最近では書籍が見つからないこと かもしれません. …と書いていましたが、また増えてきているようで