mod_dbd_mysql

/configure \ --prefix=/usr/local/httpd-2.2.11 \ --enable-modules=most \ --enable-mods-shared=most \ --with-mysql=/opt/local/mysql5 \ --with-included-apr \ --enable-dbd=shared 落とし穴 MySQLクライアントがスレッドセーフ(libmysqlclient_r)であ…

mlockall()呼び出して、メモリ空間をロック、ページアウトしないようにする

http://www.linux.or.jp/JM/html/LDP_man-pages/man2/mlock.2.html http://www.linux.or.jp/JM/html/LDP_man-pages/man2/mlock.2.html #!/usr/bin/perl use strict; use warnings; use Inline C => 'DATA'; c_mlockall(); sleep 100; __END__ __C__ #include <sys/mman.h></sys/mman.h>…

sys_chroot

プロセス単位で有効 current->fs->root, current->fs->rootmntを指定したディレクトリのもので書き変えるだけ chrootしたプロセスからは rootよりも上位のファイルは見えない( rootより上位のパスを指定してもカーネルはパスを解決しない? user_walk ?) ハー…

dentryの生成と初期化を追う

ファイルシステムはext3 どこのレイヤーを処理してるのかを見失わないように dentry inodeオブジェクト super_block ext3_* struct inode_operations ext3_dir_inode_operations = { /* ... */ .lookup = ext3_lookup, /* ... */ } lookup ... dentry操作の…

loadavg_read_proc

ロードアベレージの算出方法 runqueue TASK_RUNNING, TASK_UNINTERRUPTIBLE procfs タイマ割り込み ticks , HZ 63 /* 64 * These are the constant used to fake the fixed-point load-average 65 * counting. Some notes: // faction .. 分数、割合 66 * - …

kernel module , seq_file , テンプレ

シェルをテンプレートにするのもナンだけど。 #!/bin/sh MODULE=mymodule AUTHOR=hoge cat <<EOF #include <linux/errno.h> #include <linux/init.h> #include <linux/module.h> #include <linux/proc_fs.h> #include <linux/seq_file.h> #include <linux/version.h> static void *${MODULE}_seq_start(struct seq_file *s, loff_t *pos) { if(*p…</linux/version.h></linux/seq_file.h></linux/proc_fs.h></linux/module.h></linux/init.h></eof>

[linux] proftpd

lsで表示 => ユーザー名扱うところまで // ログインしてls static int listfile(cmd_rec *cmd, pool *p, const char *name) { /* ... */ if (!opt_n) { /* Format nameline using user/group names. */ snprintf(nameline, sizeof(nameline)-1, "%s %3d %-8s…

ext2_new_inode

新規inode作成、VFSinodeにして返す 新規inodeのブロック番号とビット位置を決定するあたりが肝 linux/include/linux/ext2_fs_sb.h オンメモリなinode,superblockとか ext2層 ext2_new_inode(inode,mode) VFS inode( on メモリ )をアロケートする new_inode(…

/proc/mountsの扱い

pid_entry? inodeの関わり方 らへんをatode // プロセスにぶら下がってる情報なんかな? 111 static struct pid_entry tgid_base_stuff[] = { 112 E(PROC_TGID_TASK, "task", S_IFDIR|S_IRUGO|S_IXUGO), 113 E(PROC_TGID_FD, "fd", S_IFDIR|S_IRUSR|S_IXUSR),…

[apache] apacheがREMOTE_ADDR / REMOTE_HOST設定するところ肝: (request_rec *)r->(conn_rec *)connection->remote_ip server/util_script.c 119 AP_DECLARE(void) ap_add_common_vars(request_rec *r) 120 { 121 apr_table_t *e; 122 server_rec *s = r->s…

.htaccessの読み込みとHTTP_FORBIDDEN

リクエストのあったファイルのあるディレウクトリ、および上位ディレクトリで .htaccessが読み取れないとHTTP_FORBIDDENになる。 なのでDocumentRootで chmod 000 .htaccess やら mkdir .htaccessするとサイトごとアボーンする chmod 000つーか、httpdのアク…

mount/umountをもっと詳しく見る ( MNT_DETACHと絡めて )

mount / umount 「mountされているか、いないか」は dentry->d_mountedのカウンタを見る umount -l ( lazy umount )の MNT_DETACHが特別何かフラグを立てたりする訳ではない ファイルシシステムの切り離し、参照カウンタをデクリメントするだけ sys_umount()…

sys_umountを追う

asmlinkage long sys_umount(char __user * name, int flags) /* * Now umount can handle mount points as well as block devices. * This is important for filesystems which use unnamed block devices. * * We now support a flag for forced unmount l…

ページキャッシュの探索部分

radix tree //// mm/filemap.c /* * a rather lightweight function, finding and getting a reference to a * hashed page atomically. */ struct page * find_get_page(struct address_space *mapping, unsigned long offset) { struct page *page; spin_l…

sys_rmdir()

atode motto kuwasiku asmlinkage long sys_rmdir(const char __user * pathname) { int error = 0; char * name; struct dentry *dentry; struct nameidata nd; // path_lookup()で検索結果が入る name = getname(pathname); if(IS_ERR(name)) return PTR_E…

apacheの2GBの壁の件をソースで追う

off_t open(2)/O_LARGEFILE -D_FILE_OFFSET_BITS=64 EOVERFLOW ... サイズのオーバーフロー あたりが肝 man 2 open O_LARGEFILE (LFS) off_t ではサイズを表せない (だだし off64_t ではサイズを表せる) ファイルをオープン可能にする。 この定義を有効にす…

WPHPを動かすまで

WPHP http://pythonpaste.org/wphp/ FasctCGI server modeをサポートするphpバイナリが必要 # # http://pypi.python.org/pypi/setuptools#cygwin-mac-os-x-linux-other # $ lwp-download http://pypi.python.org/packages/2.5/s/setuptools/setuptools-0.6c9…

OpenSSHのlogin動作

sshでログインした後、シェルが起動するまでの一連の動作について起動する際に、以下のファイルの存在が挙動に影響する /etc/motd ~/.hushlogin /etc/nologin ~/.ssh/environment ... オプションの PermitUserEnvironment もチェックする ~/.ssh/rc // /etc/…

OpenSSHのchrootの動作

opensshが接続を受け付けて、chrootする際の挙動に関するメモ session.cを見る do_setusercontext(struct passwd *pw) chrootの一番の肝は safely_chroot() if (getuid() == 0 || geteuid() == 0) ... 実行ユーザーがrootであることのチェック if (setlogin(…

ハードリンクの最大数

ハードリンクの最大数はどこで決定されるか? mkdir: ディレクトリ `31997' を作成できません: リンクが多すぎます inodeのi_nlink(ハードリンクの数)が親ディレクトリへのリンクの最大値である {LINK_MAX} を超えてしまう場合 31996まではいけた => ext3だ…

grep

mixiに転がってた奴。grepでいらん文字を省く 3 | 4 | my @alphabet = grep {! /^[LIli10oO]$/} ('a' .. 'z', '0' .. '9', 'A' .. 'Z'); 5 | sub make_password{ 6 | return join '', map { $alphabet[@alphabet * rand] } 1 .. 8; 7 | }

tarとgzip

tarは内部でexeclpしてgzipを呼び出す //src/tar.c // コマンドラインオプションの解析 875 struct option long_options[] = 876 { // ... 903 {"gzip", no_argument, NULL, 'z'}, 904 {"help", no_argument, &show_help, 1}, //src/tar.c ... ここでフラグ…

path_lookupについて

パス解決時に、ファイルシステムのマウントポイントはどのように解決されるのかを追う // fs/namei.c 928 int fastcall path_lookup(const char *name, unsigned int flags, struct nameidata *nd) 929 { 930 int retval; 931 932 nd->last_type = LAST_ROOT…

mount --bind/--rbindについて

mount --bind/--rbind で が呼ばれてマウントされるまでを追う 内部のシステムコールはsys_mount MS_BIND/MS_RECフラグ path_lookup() パスの解決 nameidata型 ... パスのルックアップ処理で使われるデータ型 http://hira.main.jp/wiki/index.php?nameidata%…

mysql_config

mysqlのインストール設定を追うのに便利 --includeとするとそこだけ抜き出せる( Makefileの中で利用したりできる [root@users00 mod_vhost_mysql2-0.10]# mysql_config --include -I/usr/include/mysql [root@users00 mod_vhost_mysql2-0.10]# mysql_config …

他の会社のssh上京

ssh

http://www.xbit.jp/faq/15_288_ja.html

opensshのインストール

ssh

wget http://anga.funkfeuer.at/ftp/pub/OpenBSD/OpenSSH/portable/openssh-5.1p1.tar.gz vi /usr/local/etc/sshd_config

mount --bind + chroot

# + mount --bind olddir newdir # /tmp/chroot以下に/と同じ環境が作られる % sudo mount --bind / /tmp/chroot % sudo chroot /tmp/chroot /bin/bash ただし [root@localhost /]# ps Error, do this: mount -t proc none /proc [root@localhost /]# top to…

*1234512371*[sql] inner join / right join / left join

図解 http://www.codinghorror.com/blog/archives/000976.html right ... onでマッチする値が無くても右テーブルの列を保持する left ... onでマッチする値が無くても右テーブルの列を保持する joinだけだとcross join (直積)?

制約 + check

値の範囲をチェックして有効かどうかを判断してくれる http://okwave.jp/qa3904216.html # 5.0 # 注1: 現在のところ、整合性(CHECK)制約はサポートされていません。 MySQLは5.1から有効? 文法があってるけど、機能としてはちゃんと動いてくれてないぽい drop…