初心者もOK! FreeBSD質問スレッド その103
■ このスレッドは過去ログ倉庫に格納されています
0001名無しさん@お腹いっぱい。
2009/08/02(日) 15:10:20事前にハンドブック閲覧や過去ログ検索等の自助努力をすることが望ましい。
再現性情報(ハードウェア・ソフトウェア・エラーメッセージ)の記載は必須。
sysutils/sysinfoなんていれておくといいかもよ。
The FreeBSD Project
http://www.freebsd.org/ja/
FreeBSD ハンドブック
http://www.freebsd.org/doc/ja/books/handbook/
過去ログ
http://www9.atwiki.jp/freebsd/
前スレ
初心者もOK! FreeBSD質問スレッド その102
http://pc12.2ch.net/test/read.cgi/unix/1243461056/
0291名無しさん@お腹いっぱい。
2009/08/13(木) 23:45:10MT時代にstatic変数とか、すばらしい実装ですな
0292名無しさん@お腹いっぱい。
2009/08/13(木) 23:45:35>>288
ファイルオーナーが単一ユーザだと再現しないので、+エントリの検索は無関係。
# for i in `jot 2000 10000`;do echo $i;pw useradd $i -s /usr/sbin/nologin -d /nonexistent -n u$i;touch $i $i;done
# time ls -l > /dev/null
7.99 real 2.76 user 4.47 sys
# time ls -ln > /dev/null
0.05 real 0.02 user 0.02 sys
0293名無しさん@お腹いっぱい。
2009/08/13(木) 23:47:45ファイルオーナーが単一ユーザの場合、
今度は lsコマンド側でuidのマッピングがキャッシュされてるから速くなるんだよ。
よって、+エントリの検索は関係ある。
0294名無しさん@お腹いっぱい。
2009/08/13(木) 23:51:52ファイルオーナーが単一ユーザだと、
そもそも getpwuid() が1回しか呼ばれないから、速いのは当たり前。
全然的外れ。
0295名無しさん@お腹いっぱい。
2009/08/14(金) 00:00:52済んだ話だろうが。失せろ。、
0296名無しさん@お腹いっぱい。
2009/08/14(金) 00:08:10trussかけてみた。キミ達の憶測は外れ。.dbを読むpreadの呼び出し回数が異常に多い。
$ grep pread /tmp/turss.log |wc
4066001 16264004 256454063
>>295
黙れ。口だけ番長は引っ込んでろ。
0297名無しさん@お腹いっぱい。
2009/08/14(金) 00:10:42だったら、
nsswitch.confで passwd: files にした時に速くなる理由が説明できないが、、
0298名無しさん@お腹いっぱい。
2009/08/14(金) 00:39:30getpwuid()のキャッシュは直前の1つのみだ
0299名無しさん@お腹いっぱい。
2009/08/14(金) 00:53:23それではこの現象の説明がつかないのだよ。
0300名無しさん@お腹いっぱい。
2009/08/14(金) 00:59:040301名無しさん@お腹いっぱい。
2009/08/14(金) 01:33:300302名無しさん@お腹いっぱい。
2009/08/14(金) 03:09:48システムのメモリ容量は最低どれくらい積んでないとまずい?
少ない容量でも時間がかかるだけで、問題なく処理できるのかしら
NTP鯖など単純な鯖を作るときに、Buildの為だけに必要以上のメモリを与えるのも
勿体無いし、かと言って他のファイル鯖なんかに統合するのもどうよって感じで
0303名無しさん@お腹いっぱい。
2009/08/14(金) 03:21:220304名無しさん@お腹いっぱい。
2009/08/14(金) 03:40:04Thx
そんなものでいいのか
どちらかといえば、コンパイルのためのディスク容量の方が必要ってことか...
0305名無しさん@お腹いっぱい。
2009/08/14(金) 07:37:29nsswitch.confで passwd: compatの場合、
/etc/passwdの書式として、今では最終行に +:::::::::を書く書式だけしか
使われなくなっているけど、実は他にもある。
+hoge とか、+@netgroup とか。
この +@netgroup(という仕様が存在すること)が問題。
どういうネットグループが存在するかは、passwdの全行を読んでみないと
わからないため、結局あるユーザーのpasswdを引くためには、
全エントリーを読む必要が生じる。
(+@netgroupの書式が存在しないことを確認するためにもpasswdの全行を読む必要がある)
よって、passwd: compatの場合は pwd.dbの意味がなくなる。
passwd: compatが遅いのはこのせい。
0306名無しさん@お腹いっぱい。
2009/08/14(金) 07:55:20>>296の4066001回はpwd.dbをpreadした回数なので、それはダメ推理。
0307名無しさん@お腹いっぱい。
2009/08/14(金) 07:57:36pwd.dbをpreadしたうえでpasswdも(p)readするという駄目実装になっているんだよ。
で、pwd.dbのpread自体は高速なので、回数が多くてもこの場合の問題とは関係ない。
0308名無しさん@お腹いっぱい。
2009/08/14(金) 08:01:23ダメな奴だな。trussしてから言えよ。pwd.dbのpread回数だよ。
0309名無しさん@お腹いっぱい。
2009/08/14(金) 08:02:36じゃあ、pwd.dbだけを読んで、+@hoge とか +@boke とか
(hoge や bokeの名前は未知)が「存在しない」ことを確認できるか?
pwd.dbは、あくまで既知の名前を引く時しか役に立たないから。
0310名無しさん@お腹いっぱい。
2009/08/14(金) 08:06:28だから、検索キーを使わずに、pwd.dbの全エントリを毎回読み直してるんじゃないの?
シーケンシャルにpwd.dbを読むモードもあるでしょ。
全エントリを読む必要があるのは passwd: compatの場合のみ。
これで説明が付く。
passwd: filesの場合は、userをキーにして1回読むだけで済むから速い。
passwd: compatの場合は、+@net とかの関係で全エントリを読むから遅い。
0311名無しさん@お腹いっぱい。
2009/08/14(金) 08:37:55答え
0312名無しさん@お腹いっぱい。
2009/08/14(金) 09:07:36現実より、妄想が優先する人ですか? trussしてから出直しな。
0313名無しさん@お腹いっぱい。
2009/08/14(金) 09:15:10>>310 に答が出てるから、出直すも何もこれで議論解決だよ。
ついでに言うと、>>308 は trussで実験したはいいが、
「なぜ passwd: compatとfilesに違いが出るのか」については一切解明していない。
passwdかpwd.dbかの違いはあまり問題ではなくて、
エントリを「ひとつだけ読む」か「全部読む」かの違いなんだな。
その意味では、>>288 の時点で答えに近いところがすでに書かれていた。
0314名無しさん@お腹いっぱい。
2009/08/14(金) 09:35:51キミ達のように妄想書きなぐるだけじゃ無くて、確認しながら進めてるからな。
> passwd: compatの場合は、+@net とかの関係で全エントリを読むから遅い。
残念ながら、これは完全な答では無いんだ。compatでも速い場合がある。
0315名無しさん@お腹いっぱい。
2009/08/14(金) 09:45:23passwd_compat: dns とか言うなよ。passwd_compat: nisの話をしてるんだから。
0316名無しさん@お腹いっぱい。
2009/08/14(金) 09:59:40お前、10周位遅れている。邪魔だから引っ込んでろ。
passwd: compat
0317名無しさん@お腹いっぱい。
2009/08/14(金) 10:01:21passwd: compatの中に、
passwd_compat: nis と
passwd_compat: dns の
2種類の設定があるんだが。
0318名無しさん@お腹いっぱい。
2009/08/14(金) 10:03:390319名無しさん@お腹いっぱい。
2009/08/14(金) 10:04:06そりゃ、passwd: compatだろうが何だろうが、
passwdの行数自体が最初から少なければ速いよ。それは当たり前。
0320名無しさん@お腹いっぱい。
2009/08/14(金) 10:06:41自分が観察した一部分から妄想を構築してしまって
妄想と事実の区別がつかないタイプ。
0321名無しさん@お腹いっぱい。
2009/08/14(金) 10:06:49ls -l するファイルが同一ユーザーだったら速い、とか、
そういう当たり前過ぎることをわざわざ言おうとしてるのではないだろうか。
0322名無しさん@お腹いっぱい。
2009/08/14(金) 10:14:06妄想書きなぐってないで、自分で検証してから言え。クズ共
0323名無しさん@お腹いっぱい。
2009/08/14(金) 10:55:10nsswitch.confのデフォルトを passwd: filesの方に振るのが妥当じゃないか?
今現在、passwd: compatを *本当に* 使ってる人なんて居る?
NISユーザー自体が少ない上に compatのユーザーはほぼ 0 じゃないか?
0324名無しさん@お腹いっぱい。
2009/08/14(金) 13:24:01対応策?今のままでいい
0325名無しさん@お腹いっぱい。
2009/08/14(金) 17:02:240326名無しさん@お腹いっぱい。
2009/08/14(金) 17:05:250327名無しさん@お腹いっぱい。
2009/08/14(金) 18:09:530328名無しさん@お腹いっぱい。
2009/08/14(金) 18:14:590329名無しさん@お腹いっぱい。
2009/08/14(金) 19:46:22どうしたらいいですか?
0330名無しさん@お腹いっぱい。
2009/08/14(金) 20:08:44それかMac miniか
0331名無しさん@お腹いっぱい。
2009/08/14(金) 20:38:090332名無しさん@お腹いっぱい。
2009/08/14(金) 20:51:26この板へ書きこむってぇこたぁ頭じゃOS Xを欲しがってても
体はFreeBSDを欲しがってんだよ。
0333名無しさん@お腹いっぱい。
2009/08/14(金) 21:34:48すみません。今度から平積みしておきます。
0334名無しさん@お腹いっぱい。
2009/08/14(金) 21:56:010335名無しさん@お腹いっぱい。
2009/08/14(金) 22:25:010336名無しさん@お腹いっぱい。
2009/08/14(金) 22:32:05reader.cの関数advance_to_start()にバグがあり、
構文規則の定義の一番初めのルールの左辺の非終端記号の
最初の文字に'$'が使えない。
深刻…
0337名無しさん@お腹いっぱい。
2009/08/14(金) 22:45:58あとbisonじゃだめなん?
0338名無しさん@お腹いっぱい。
2009/08/14(金) 23:30:120339名無しさん@お腹いっぱい。
2009/08/15(土) 00:47:23修正よろ
0340名無しさん@お腹いっぱい。
2009/08/15(土) 01:09:130341名無しさん@お腹いっぱい。
2009/08/15(土) 06:10:39FreeBSD.でXorg.をboot.の時点で起動させたらですが…
やはり、FC4.が起動すると云う事でしょうか?
0342名無しさん@お腹いっぱい。
2009/08/15(土) 06:17:370343名無しさん@お腹いっぱい。
2009/08/15(土) 06:30:12それはソートしてるからだろ。
0344336
2009/08/15(土) 12:55:29こうゆう風に出来ないってこと。
===================
%%
$start: expr;
expr:
...
%%
==================
>>339
advance_to_start()のなかで'_'と比較してるところが2ヶ所あるんですが、
その一つを'$'との比較に変更すればいい。他の場所では最後に'$'との
比較が来るのでそれに合わせた方がいいでしょう。
0345336
2009/08/15(土) 13:13:550346名無しさん@お腹いっぱい。
2009/08/15(土) 13:15:55強制的に
fsck -y ; exit
みたいなコマンドを実行して、自動的にディスクチェックして起動するような事ってできますか?
0347名無しさん@お腹いっぱい。
2009/08/15(土) 13:38:360348名無しさん@お腹いっぱい。
2009/08/15(土) 13:41:300349名無しさん@お腹いっぱい。
2009/08/15(土) 13:51:190350名無しさん@お腹いっぱい。
2009/08/15(土) 14:06:100351名無しさん@お腹いっぱい。
2009/08/15(土) 14:15:45重すぎて吹いた。WinXP + Cygwinで我慢する事にした。
0352351
2009/08/15(土) 14:16:250353名無しさん@お腹いっぱい。
2009/08/15(土) 14:18:210354名無しさん@お腹いっぱい。
2009/08/15(土) 14:35:16HDD挿すだけで何もせずにその瞬間領域が拡張されるんでしょ?
しかも、書き換えの時、一時領域に書き込んで、書き込みが完了してからインデックスから指す位置を変更するから
絶対ファイルが壊れないんだよね?
めっさ便利だと思うが。
0355名無しさん@お腹いっぱい。
2009/08/15(土) 14:43:36拡張されるって、一体どのポイントが拡張されるんだよw
/varを拡張したいとか/usrを拡張したいとかあるのに
いきなり、決め打ちで拡張されるってか?
多少なりとも設定はあるぞw
0356名無しさん@お腹いっぱい。
2009/08/15(土) 15:03:260357名無しさん@お腹いっぱい。
2009/08/15(土) 15:05:50すげーよ。ZFS
0358名無しさん@お腹いっぱい。
2009/08/15(土) 15:06:01Sunにハードからシステムまで全部任せておけば
何も怖い事は無い。箱から出したらすぐ使えるし
HDDに障害が起きても、Sunから買ってきて差し替えるだけで全て上手く行く。
何も怖がる事は無いよ。だってSunだもの。
0359名無しさん@お腹いっぱい。
2009/08/15(土) 15:07:500360名無しさん@お腹いっぱい。
2009/08/15(土) 16:03:260361名無しさん@お腹いっぱい。
2009/08/15(土) 16:06:060362名無しさん@お腹いっぱい。
2009/08/15(土) 16:34:53AT&T UNIX由来じゃなくて、BSD版yaccかな。
いずれにしても他の*BSDにも同じバグがありそう。
0363名無しさん@お腹いっぱい。
2009/08/15(土) 16:36:18XP + Cygwinの方が重いだろw
0364名無しさん@お腹いっぱい。
2009/08/15(土) 16:51:37お前の言うことは間違っちゃいないが、単一の ZFS root にしとけば
その辺も楽になれるのかもしれん。
0365名無しさん@お腹いっぱい。
2009/08/15(土) 17:02:210366名無しさん@お腹いっぱい。
2009/08/15(土) 17:20:13とっくに可能
0367名無しさん@お腹いっぱい。
2009/08/15(土) 17:36:22ここではIn progressになっているが。
0368名無しさん@お腹いっぱい。
2009/08/15(土) 17:59:15コスプレ居酒屋のLittleBSDとFreeBSDとの関係を教えてください。
ググっても、公式ページ見てもBSDとの関係は書かれてなかったのです
0369名無しさん@お腹いっぱい。
2009/08/15(土) 18:15:09特に関係はないんじゃねぇの?
サーバもたしか犬だったしな
# 当初はデーモン娘もいたらしいが………
0370名無しさん@お腹いっぱい。
2009/08/15(土) 18:19:07http://svn.freebsd.org/viewvc/base?view=revision&revision=186243
これで大丈夫になったとか。去年の12月だ。
0372名無しさん@お腹いっぱい。
2009/08/15(土) 18:51:39/usr/src/usr.bin/yacc/
所謂 byacc って奴だね。yacc とハードリンクになって
る。AT&T 版と可能な限りコンパチにしてるけど、ドキュ
メント化されてない機能は知りませんというスタンスら
しい。
確かに '_' を二回チェックしてるのは凄くバグ臭いけ
ど、そこは 1994 年版から同じコードだ(w
http://www.freebsd.org/cgi/cvsweb.cgi/src/usr.bin/yacc/reader.c?rev=1.1;content-type=text%2Fplain
これ、何か根拠になる文書(POSIX?)が無いと受け付け
てくれないかもよ。
0373名無しさん@お腹いっぱい。
2009/08/15(土) 19:06:51> $start: expr;
そもそもこれ正しいの? なんか字句と構文がごっちゃに
なってない? 名前に $ が使えるようには読めないんだ
けど。
http://opengroup.org/onlinepubs/007908775/xcu/yacc.html
> Names are of arbitrary length, made up of
> letters, periods (.), underscores (_) and
> non-initial digits. Upper- and lower-case
> letters are distinct.
0374336
2009/08/15(土) 19:11:050375名無しさん@お腹いっぱい。
2009/08/15(土) 19:19:260376名無しさん@お腹いっぱい。
2009/08/15(土) 20:07:21それさておき、8でもZFSはなんだかなーなんだろ?
もうBSDでZFSは諦めて、本家でZFS使ったほうがいいんじゃないんか
0377名無しさん@お腹いっぱい。
2009/08/15(土) 20:33:590378名無しさん@お腹いっぱい。
2009/08/15(土) 20:58:09より少ないリソースで性能を発揮してくれるに越したことはない
0379336
2009/08/15(土) 21:07:28/usr/share/doc/psd/15.yacc/paper.ascii.gzに
$ACTと言うものを使った例がある。
$acceptと$endというのも-vを指定すると人間用の出力に出てくるらしい。
$acceptと$endは用法があるのか分からない。
0380名無しさん@お腹いっぱい。
2009/08/15(土) 21:45:51特に大きな問題は発生してないな。
便利さに慣れてしまったので、もうUFSには戻れない。
http://wiki.freebsd.org/ZFSTuningGuide
ここら辺を見てちゃんとメモリ量を設定してやれば、
EeePCとかでもちゃんとZFSが使えるぞ。
0381名無しさん@お腹いっぱい。
2009/08/15(土) 21:49:23そこにも >>373 と同じ命名規約があるね。元は AT&T
版か。因みにここも同じ文が元になってるっぽい。
http://docs.sun.com/app/docs/doc/805-5827/6j5gframt?l=ja&a=view
> 第 3 章 yacc - コンパイラコンパイラ
0382名無しさん@お腹いっぱい。
2009/08/15(土) 22:00:47一応、今の実装でもZFSからのbootはできるが、
RAIDZに対応していないのであまりメリットは無い。
# ちょっと前に誰かがRAIDZパッチを投げてたと思うけど、まだ取り込まれてない
他にも、/boot/zfs/zpool.cache が壊れたときの復旧がとても困難だったりするので、
ZFS bootをやるのは覚悟が必要。
/boot だけをUFSで残し、全体をZFS化するZFS rootなら実績も十分あるのでオススメ。
0383名無しさん@お腹いっぱい。
2009/08/15(土) 22:11:56ZFSのUFSにくらべていいところってなんなんだ?
0384名無しさん@お腹いっぱい。
2009/08/15(土) 22:18:18とりあえずこいつらがサポートしてなければ諦めた方が
いいわけだ(w
V6 の yacc
http://minnie.tuhs.org/UnixTree/V6/usr/source/yacc/source/
V7 の yacc
http://minnie.tuhs.org/UnixTree/V7/usr/src/cmd/yacc/
0385名無しさん@お腹いっぱい。
2009/08/15(土) 22:34:25Solarisで使っていた時の感想:
ディスクを追加したときファイルシステムの容量がコマンド一発で増やせる。
snapshotが便利この上ない。
RAIDZは良い事書いてあるけど、使用しなかったのでわからん。
0386名無しさん@お腹いっぱい。
2009/08/15(土) 22:37:54http://minnie.tuhs.org/UnixTree/V6/usr/source/yacc/source/y2.c.html
> else if( (c>='a'&&c<='z')||(c>='A'&&c<='Z')||c=='_'||c=='.'||c=='$'){
http://minnie.tuhs.org/UnixTree/V7/usr/src/cmd/yacc/y2.c.html
> else if( islower(c) || isupper(c) || c=='_' || c=='.' || c=='$' ){
どっちも内部的に状態として管理して出力時にオミット
するみたいだ。やっぱり BSD 版のバグっぽい?
$ grep isalpha reader.c
> if (isalpha(c))
> if (isalpha(c))
> if (!isalpha(c) && c != '_' && c != '$')
> if (isalpha(c) || c == '_' || c == '.' || c == '$')
> else if (c == '\n' || isalpha(c) || !isspace(c))
> if (isalpha(c) || c == '_' || c == '.' || c == '$')
> if (!isalpha(c) && c != '_' && c != '.' && c != '$')
> if (!isalpha(c) && c != '_' && c != '.' && c != '_') // 問題の行
> if (isalpha(c) || c == '_' || c == '$')
> if (isalpha(c) || c == '_' || c == '.' || c == '$')
> if (isalpha(c) || c == '_' || c == '.' || c == '$' || c == '\'' ||
0387名無しさん@お腹いっぱい。
2009/08/15(土) 22:41:31346の質問についてですが、別にファイルシステムエラーと特定できなくても良いんですが・・・
何らかのエラーが起こっても強制的に起動しちゃう事ってできますか?
そうすれば、起動後にスクリプトを使って強制的に毎回 fsck -y 掛けるとか、
dmesg解析して随時行う仕様にしたりできますし。
0388名無しさん@お腹いっぱい。
2009/08/15(土) 22:46:21するんで大抵のエラーならそのまま起動するはずだけど?
横着こいて全部 1 パーティションなんてことすると起
動しなくなることもあるだろうけど。
0389名無しさん@お腹いっぱい。
2009/08/15(土) 22:52:580390名無しさん@お腹いっぱい。
2009/08/15(土) 22:59:33少なくとも、/ がそれなりに読める程度のエラーなら、シングルユーザまでは上がってくると思うがな。
/ がそれなりにも読めない状態なら、上がりようもないが。
0391名無しさん@お腹いっぱい。
2009/08/15(土) 22:59:42if文をみると普通にバグではあるな
そしてそれが'$'を書き忘れているのかどうかは要確認というところか
■ このスレッドは過去ログ倉庫に格納されています