06
--
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
--
>>
<<
--
calendar_bottom
RSS | ATOM | ADMIN

badulog

日々の覚書と雑記
ENTRY TOP
スポンサーサイト

一定期間更新がないため広告を表示しています

スポンサードリンク | - | - | - | - |
ENTRY BOTTOM ENTRY TOP
[linux]fork後のCopyOnWrite共有

/proc/[pid]/smaps (Linux 2.6.14 以降)
このファイルは、そのプロセスの各マッピングのメモリ消費量を表示する。 マッピングのそれぞれについて、以下のような内容が表示される。
08048000-080bc000 r-xp 00000000 03:02 13130      /bin/bash
Size: 464 kB
Rss: 424 kB
Shared_Clean: 424 kB
Shared_Dirty: 0 kB
Private_Clean: 0 kB
Private_Dirty: 0 kB

最初の行には、 /proc/[pid]/maps で表示されるマッピングと同じ情報が表示される。 残りの行には、マッピングのサイズ、現在 RAM 上に存在するマッピングの量、 マッピング内の共有ページのうちクリーンなページ数、ダーティなページ数、 マッピング内のプライベートページのうちクリーンなページ数、 ダーティなページ数、を示す。

このファイルが存在するのは、カーネルのコンフィギュレーション・オプション CONFIG_MMU を有効にした場合だけである。

↑Man pageof PROC

fork後、CopyOnWriteでcopy前の共有時点ではSharedになって、
書きこまれて実際にcopyされるとPrivateになる模様。

参考)
http://d.hatena.ne.jp/naoya/20080212/1202830671


baduizm | linux | - | - | - |
ENTRY BOTTOM ENTRY TOP
[linux] ログアウトしてもコマンド続行 - nohup
アドレスいっぱい付与しているマシンに、リモートでログインしている時に、
  /etc/init.d/network restart
すると、
今、自分がログインしているアドレスが削除されて、再度付与されるまでに
時間がかかる。

その間に、sshセッションが切れて network restartしているプロセスも途中で終了している模様。
(ログインしているインタフェースの順番によっては、
 ssh(クライアント??)のタイマ内にセッション復活することで
 network restartが最後まで走ることもある)

おしりに&つけても、ちょっとマシになる程度だったので、
色々調べて・・nohup

 nohup /etc/init.d/network restart

これでsshセッションが切れても、network restart自体は最後まで走ってくれて、
再びログイン可能になる。



baduizm | linux | - | - | - |
ENTRY BOTTOM ENTRY TOP
[linux] ubuntuでhappy hacking
virtual boxでubuntu on Vistaって環境。
どうも"}"が打てなかったのでキーボード設定。

システム->キーボードから
「Fujitsu」を選択。
んでから"happy hacking for mac"を選ぶと割とうまくいった。

baduizm | linux | - | - | - |
ENTRY BOTTOM ENTRY TOP
[linux] オープン可能なファイル数
TCPコネクションの数の限界とか調べる上で,
すなわちファイルディスクリプタの限界

■まずシステム全体の話
[/proc/sys/fs/file-max]
   オープン可能なファイル数の上限。値の変更を行うことも可能。

[/proc/sys/fs/file-nr]
  次の3つの情報を確認することが可能です。
   1. オープンされているファイル数
   2.「確保はされているけれど, 今使われていないぶん」
    3. オープン可能なファイル数の上限(/proc/sys/fs/file-max と同じ値)

ref)
http://search.luky.org/linux-users.8/msg01382.html


■プロセスごとは
ulimitだな.-n


-a 設定されている各種の制限を表示する
-c プロセスがファイルへコア・ダンプする容量を最大Nブロックに制限する
-d プロセスのデータ領域のサイズを最大Nキロ・バイトに制限する
-f 出力ファイルのサイズを最大Nブロックに制限する
-l メモリーにロックできるサイズを最大Nキロ・バイトに制限する
-m メモリーの使用量を最大Nキロ・バイトに制限する
-n ファイル・ディスクリプタの数を最大N個に制限する
-p パイプのサイズを最大N×512バイトに制限する
-s スタック・サイズを最大Nキロ・バイトに制限する
-t CPU時間を最大N秒に制限する
-u ユーザー1人が起動できるプロセス数を最大N個に制限する
-v シェルが利用できる仮想メモリーを最大Nキロ・バイトに制限する
-H いったん設定した制限を解除できなくする
-S -Hで制限した最大値以内の値を設定する
-t コマンドの型を表示する
baduizm | linux | - | - | - |
ENTRY BOTTOM ENTRY TOP
[linux]ページキャッシュとバッファキャッシュ再考
ページキャッシュとバッファキャッシュについてもう一度考えてみる.
前の記事
http://baduizm.jugem.jp/?eid=83


全体的に間違ってる気がするので、削除。


今のところ、以下のような説があるけど何が正解かは不明。
(a) 単純にi-nodeとかdentryなどメタデータのキャッシュがバッファで、ファイルのキャッシュがページキャッシュ
(b) ブロックデバイスファイルを扱うときに使うのがバッファ。
(c) ユーザ側がページで、デバイス側がバッファ。


■全体的なお話
(1)構造的には
+--------------+
| system call |
+--------------+
| page cache |
+--------------+
| buffer cache |
+--------------+
| disk |
+--------------+

(2) 昔は
上記のような感じでなく,並列なイメージで
readはページキャッシュ,writeはバッファキャッシュだったらしい.
今は,r/wともページキャッシュ→バッファキャッシュ.

(3) イメージとしては
1. ページキャッシュ探しに行く.ヒットすれば終了.
2. バッファキャッシュ探しに行く.ヒットすれば終了.
(これは誰が主語か?これで見つけたらページキャッシュにも残るはず)
3. なかったらディスクIOが発生してバッファキャッシュに引き上げるのかな.

(4) 両方とも
実体はハッシュで実装されてる

■ ページキャッシュって
(1) free,topで言うと"cache"で表示される
(2) いわゆるキャッシュのイメージどおりで理解しやすい
(3) ファイル丸ごとでなく,ページ単位でキャッシュする.
ページ = 仮想メモリの最小単位 = カーネルがメモリを扱う時の最小単位
(4) (ページキャッシュは,というかページは)i-nodeとファイルオフセットでアクセス

■ バッファキャッシュって
(1) free,topで言うと"buffer"で表示される
(2) なんか良くわからん
(3) バッファは固定サイズ(たとえば、512 バイト)
(4) デバイス識別子とブロック番号でindexされる
目的はデータブロックを素早く見つけ出すため





baduizm | linux | - | - | - |
ENTRY BOTTOM ENTRY TOP
[linux] X環境のキーバインド変更
man xmodmap もしくは、ここ

一時的に変更するだけなら、コマンド "xmodmap" を使用する。
X の起動時に反映させるためには、"~/.xmodmaprc" というファイルに設定を書く。
ファイルの名前は何でもよい。コメント行は"!"で始める。

で、my設定は
remove Lock = Caps_Lock
remove Control = Control_L
keysym Control_L = Caps_Lock
keysym Caps_Lock = Control_L
add Lock = Caps_Lock
add Control = Control_L


で、あとは~/.xsession や ~/.xinitrc の中に
xmodmap $HOME/.Xmodmap

としておけば毎回有効に。

# 自分の.xinitrcとか.xsessionに設定見付からず。。どこに設定したっけ。。


(追記)
見付けた。
[root@localhost xinit]# grep modmap /etc/X11/xinit/xinitrc
usermodmap=$HOME/.Xmodmap
sysmodmap=/etc/X11/Xmodmap
# xkb and xmodmap don't play nice together
if [ -f "$sysmodmap" ]; then
xmodmap "$sysmodmap"
if [ -f "$usermodmap" ]; then
xmodmap "$usermodmap"

baduizm | linux | - | - | - |
ENTRY BOTTOM ENTRY TOP
makewhatisとかmanとか
makewhatisはwhatisデータベースを作る。
whatisデータベースを更新できるようにcronに設定されていたりする。
$ cat /etc/cron.daily/00-makewhatis.cron
#!/bin/bash
(略)
makewhatis -u -w
(略)


-u はデータベースを新しいページの情報で更新する。
-w はmanpath を `man --path` で得られる値にする。
manpathというのはmakewhatisの引数で(↑だと省略されている)
manページのありかだったりする。

man --pathでmanコマンドが引っ張ってくる値は/etc/man.configから
持ってきたりするのだろうが、これはまた別の話。

で、whatisデータベースの引き方は2通りある。
(1) whatis : コマンド名指定で検索
# whatis signal
signal (2) - ANSI C signal handling
signal (7) - list of available signals


(2) apropos: キーワード指定で検索
# apropos signal
QMovie [qmovie] (3qt) - Incremental loading of animations or images, signalling as it progresses
QSignal [qsignal] (3qt) - Can be used to send signals for classes that don't inherit QObject
・・・(略)

man -kに似てる。





baduizm | linux | - | - | - |
ENTRY BOTTOM ENTRY TOP
[linux] pamの設定の書き方

pamのコンフィグの書き方。
基本的に上から順番に実行されるようで、抑えておくべきはタイプとコントロールフラグ。

■ タイプ
そのエントリが、どのタイミングで利用されるか。
「auth」、「account」、「password」、「session」の4種類あり。

(a) auth
認証を許可するかどうか。ログイン等パスワード入力でユーザ認証を行う際など。
(b) account
パスワードの有効期限などauth以外の方法での認証。
authの続きで実行される。
(c) password
パスワード設定、変更などに使うモジュール。
(d) session
認証前、認証後に実行されるモジュール。ログインしたよっていうログ吐くとか。


■ コンロトールフラグ
上から設定なめなめするわけだが、このコントロールフラグによって、
その認証の成否後どのように振舞うかを決める。
「requisite」、「required」、「sufficient」、「optional」の4種類ある。

(a) requisit
成功したら続けて同じタイプのモジュールを実行。
失敗したら即刻、認証を拒否。
(b) required
成功したら続けて同じタイプのモジュールを実行。
失敗しても、同じタイプのモジュールを実行してからユーザに通知。
何故認証に失敗したかを隠蔽できるので、こちらが好ましい。
(c) sufficient
成功したら、それだけで認証OK。それ以降のモジュールは必要なし。
失敗したら、無視して、同じタイプのモジュールを続けて実行。
ただし、実態は失敗後のモジュールは認証拒否するものが並んでいるケースが多いらしい。
(d) optional
「optional」タイプのモジュールで全て許可あるいは拒否された場合にのみ意味を持つもの




baduizm | linux | - | - | - |
ENTRY BOTTOM ENTRY TOP
cpioコマンド
cpioコマンドの使い方

■ -o: コピーアウトモード(アーカイブを作成し、標準出力に出力する)
find . | cpio -oa > /tmp/backup.cpio

入力はファイル名。出力はcpioアーカイブ。
ちなみにaオプションをつけることで、タイムスタンプが再設定され、
cpioコマンド実行時のタイムスタンプになる。

■ -i: コピーインモード(アーカイブからファイルを復元する)
cpio -idm < bbb.cpio

入力はアーカイブ。
-d オプションでディレクトリ展開
-m オプションでタイムスタンプをコピー元の時刻にする。


ということで、aをつけて作成、mをつけて展開することでアーカイブ作成時点のタイムスタンプになるはずだが、そうも行かない。。。
aオプションが思ってるように行かないのだ。。



baduizm | linux | - | - | - |
ENTRY BOTTOM ENTRY TOP
TCPWrapper


■ TCPWrapperとは
その名の通りTCPのラッパ。
目的はセキュリティ強化、アクセス制御、管理、ログ取りとか。
使われ方は2通り
(1) デーモン
tcpdとして常駐。inetdのセキュリティが良くなかったので、
inetd + tcpd という形で使いセキュリティを強化するのがそもそも目的だったよう。
ただ、今はxinetdが普及していて、xinetdはアクセス制限とかが出来るので、
この意味合いは薄れている模様。

(2) ライブラリ
libwrap.soってライブラリ。アクセス制御を提供。まだまだ使われている。
例えばssh。
[xxxx@host xxxxx]$ ldd /usr/sbin/sshd
libwrap.so.0 => /usr/lib/libwrap.so.0 (0x003ae000)
(以下、略)


■ TCPWrapperの設定ファイル
(a) /etc/hosts.allow : 接続を許可するリスト
(b) /etc/hosts.deny : 接続を拒否するリスト
書式はいろんな所に載ってます。

■ TCPWrapperのアクセス制御の流れ
(1) 「/etc/hosts.allow」と一致する接続を許可
(2) 上記1とは一致せず、「/etc/hosts.deny」の記述と一致する接続を拒否
(3)「/etc/hosts.allow」と「/etc/hosts.deny」の記述と一致しないものはすべて許可

何も設定がないと基本は許可らしい。

■ リンク
こことか、ここ



baduizm | linux | - | - | - |
ENTRY BOTTOM