ご回答ありがとうございます Cで作るHTTPクライアントの件ですが、やはりボディが渡りません。 ソースの方を確認しましたが、おかしいと思われる箇所は見つかりませんでした。 環境が原因で渡らないというのはあるんでしょうか? 現在はUNIX上でコンパイル・実行をしてWin2000上のVAJにつないでいるんですが、関係あるのでしょうか? また、ボディの書き方で何か注意しとくべきことありますでしょうか? よろしくお願いします。 |
>>2856 mattu > ボディの書き方で何か注意しとくべきことありますでしょうか? 結局何をどうしたのかわからないので、何とも言えません。 - VAJ をやめて別のサーバ (Apache など) にしてみる - パケットをモニタして、java 版と C 版の違いを調べる あたりをやれば何かわかるんじゃないでしょうか。 >>2856 mattu >>2855 シド とりあえず http://www.hyuki.com/writing/techask.html を読んでみてください。 |
>>2851 68user ご回答ありがとうございます そんな気はしてたのですが、やっぱりそうですか ただ、TimeOut => 10 の所は何に反映されるのかってのがちょっと気になりました。 確か<$socket>やsysreadで読んだときに読むべきデータがないと TimeOutの時間を過ぎても返ってこなかったと思いますので… >ノンブロッキングソケットを使いましょう。 これってつまりは「読むべきデータが無いときに待たない」って 事ですよね。Perlでは使えますでしょうか?? 確立時の話じゃないですけど、Cのrecvなんかは待たないので 便利だったり不便だったりといった感じではあったのですが… |
>>2850 しっぽ > PerlでTCPのSYNを一度だけ投げて任意の時間内にSYN ACKが返ってこなかったら > タイムアウト処理を、と言ったことをしたいのですが この目的を聞かせてください。connect で数分待ってしまうのがイヤだから なんとかしたい、ということだと受け取ったのですが、 > Cのrecvなんかは ということは、read/write のタイムアウト管理 {が or も} 目的なのですか? |
>>2850 しっぽ IO::Socket::INETなんて高級な物を何故そこで使うのかがわかりませんが、 http://www.cotse.com/sw/portscan/halfscan.c のプログラムと同等のことをPerlからやりたいなら、 http://search.cpan.org/doc/SKOLYCHEV/Net-RawIP-0.09d/RawIP.pm でなんとかできませんか? libpcapのラッパーなのでそれがmakeに要る ようです。 タイムアウトは、 >なお、PerlのVersionはThis is perl, v5.6.1 built for i386-linux-thread-multi です とのことですから、threadを使ってなんとかできそうですが Perlのthreadなんて使ったこと無いのでどうなのか知りません。 Rubyなら http://www.goto.info.waseda.ac.jp/~fukusima/ruby/pcap-j.html なんてのもありますがこっちは目的の機能は無いようにみえます。 |
未だRedhatで名前解決できず、気が向いては眺め、弱っています。 Redhat7.1.94(雑誌に付属)を再インストールしてみましたが、 症状は変わりませんでした。 >>2814 68user [netstat -s]は、どういった項目をどのような観点から観察したらよいでしょうか? 使ったことも知識も無いので、よかったら今後のためにもアドバイスください。 >>2779 has いまさら経緯の説明をはじめるのも遅すぎかとは思うのですが、 そもそもこういった状態になったのは、LANからインターネットへの回線が ISDNからADSLに変わり、それと同時に各ユーザマシンに割り当てられるIPが グローバルIPからプライベートIPに変わってからでした。 それまではRedhatからでも名前解決に時間がかかりながらも なんとかアクセスできていました。 # Win2kとのデュアルブートなんですが、ADSLになる以前からも、 # Win2kは素早く名前解決できてRedhatで時間がかかるという差が # あったことが、既におかしかったのかもしれません… とりあえず現在の状況はこんな感じでうまくいっていません。 以上ご報告まで。 |
はじめまして。 HP-UX11のインストールをされた方がいらしたら幸いです。 質問があります。 locale -a で表示されていないロケールを、OSインストール後に、個別でインストールできるでしょうか?OSの入れなおししか、方法は無いでしょうか? # setenv LANG japanese を設定しても、Warningが出てしまいます。何とか個別でインストールしたいのですが・・・ 乱文ですみません。よろしくお願いします。 |
はじめまして 現在Solaris2.6 + iPlanet4.0 でWebサーバを利用しています。 先日CGIを使いたいとの要望がありiPlanetに対してCGIの設定を行った のですが、"Method Not Allow"というエラーがブラウザに表示され、 CGIを実行することができません。 原因がわかる方、ご教授願えないでしょうか。 iPlanetに対して行った設定は下記のようなものです。 <やりたいこと> 〜/cgi/ ディレクトリに設置したcgiファイルを実行したい 1.サーバマネージャで[Program]→[CGI Directory]を選択し、上記ディレクトリをURLにマッピング 2.サーバマネージャで[Program]→[CGI File Type]で上記ディレクトリを選択し、ON状態に設定 3.利用するCGIファイルのパーミッションに777を設定。とりあえず動かすのが目的なのでフルアクセスを許可してみました(^^; |
>>2861 has えー、混乱してきたのんでまとめると、 /etc/host.conf order hosts,bind /etc/resolv.conf nameserver 192.168.0.1 名前解決ができない。 netscape や perl -e "use Socket;print inet_ntoa(inet_aton('www.jp.freebsd.org'))" は NG。 nslookup, host, dig は OK。 → gethostbyname 系がダメっぽい。 dig は OK? NG? tcpdump の結果 netscape も perl も query 投げていないようだ。 strace dig の結果 socket(PF_INET, SOCK_STREAM, IPPROTO_IP) = 3 socket(PF_INET6, SOCK_STREAM, 0) = -1 ENOSYS (Function not implemented) socket(PF_INET6, SOCK_STREAM, 0) = -1 ENOSYS (Function not implemented) socket(PF_INET6, SOCK_STREAM, 0) = -1 EAFNOSUPPORT (Address family not supported by protocol) connect はしていないようだ (by has) → これは dig は名前解決できないという意味? nslookup と host が OK で、 dig が NG ならば、ちょっと理解できません。UDP は「connect して send」 「connect して send」の両方のやり方がありますが、dig は「conenct して send」するはず (てゆーか大抵の DNS クライアントは connect すると 思う)。 strace perl の結果 socket(PF_UNIX, SOCK_STREAM, 0) = 3 connect(3, {sin_family=AF_UNIX, path="/var/run/.nscd_socket"}, 110) = -1 ENOENT (No such file or directory) socket(PF_INET, SOCK_DGRAM, IPPROTO_IP) = 3 connect(3, {sin_family=AF_INET, sin_port=htons(53), sin_addr=inet_addr("192.168.0.1")}}, 28) = 0 socket(PF_INET, SOCK_DGRAM, IPPROTO_IP) = 3 connect(3, {sin_family=AF_INET, sin_port=htons(53), sin_addr=inet_addr("192.168.0.1")}}, 28) = 0 → perl (から呼ばれる libc の resolver) は正常動作していると思う。これで パケットが飛ばないなら、OS の TCP/IP スタックが腐ってるとしか…。でも nslookup や host は OK というなら違うのかなぁ。nslookup や host を strace するとどうなるんでしょう。 > [netstat -s]は、どういった項目をどのような観点から観察したらよいでしょうか? えー、UDP を投げた後 ICMP (かな?) が返ってくるサマを見て、何か わかるかなーと思いましたが、今考えるとおそらく netstat -s では 原因まではわからないでしょうね。netstat -s については、2〜3ヵ月 以内の UNIX USER に詳しく説明されていましたので (Solaris,FreeBSD, Linux の netstat -s の違いも含め)、興味があればそちらを。 あと、本当にお困りなら linux.or.jp あたりのメーリングリストで 質問した方が早いと思うですよ (もちろん解決しなくてもいいなら こっちで続けても構いません)。 |
>>2862 HP-UXSE > locale -a で表示されていないロケールを、OSインストール後に、 > 個別でインストールできるでしょうか? HP-UX は使ったことがないのでわかりません。僕は Solaris で同じ ことをする正しい方法を知りたい。 # 昔 ja_JP.eucJP ロケールが入ってなかった Solaris に、他の # Solaris マシンから/usr/share/locale/ja_JP.eucJP (だったかな?) # をごっそり持ってきて動かしたことがある。 >>2863 とも 残念ながら iPlanet も使ったことありませんのですよ。 |
>>2861 has そうそう、/etc/nsswitch.conf は hosts: files dns てな感じになってますか? |
>>2859 & 2860 レスありがとうございます >この目的を聞かせてください。connect で数分待ってしまうのがイヤだから >なんとかしたい、ということだと受け取ったのですが、 サーバーのサービスの監視が目的です。L4SW(サーバーロードバランサー)なんかだと 5秒間隔のSYNに3回連続で応答しなければ死んだと見なすなんてヘルスチェックを 良くやるのですが…、3分にもわたって6回連続で応答しない場合のみ死んだと見なす ってのはちょっと嬉しくないです #これ書いててL4SWが余ってるからそれでやっても良いことに気づいた…(^^; Writeのタイムアウトの方法は知りませんが、readのタイムアウトは以前 $selector->can_read あたりをやってみて上手くできていたような気がします >IO::Socket::INETなんて高級な物を何故そこで使うのかがわかりませんが、 低水準な物の存在を知らなかったので… Net::RawIP ってのは名前からして使えそうな気がします。ぐぐるで調べて 何件か出てきたので見てるところですが、ただ今のところ送るのはともかく その後どうやって受信したら良いかが良くわかってなかったりします まあAttackingに使うには良いのかも知れませんが |
>>2867 しっぽ であれば、ずっと connect しっぱなしで定期的にデータを 送り、返答がなければ異常とみなすのはどうでしょうか? で、connect のタイムアウトですが、IO::Socket のソースをちらっと 見て $SIG{ALRM} やら alarm やら書いてあったので、connect 時にも タイムアウトが働くはず…と思っていたのですが、実際に試してみると タイムアウトになりませんでした。なので、 $SIG{ALRM}=sub { print "SIGALRM!\n"; }; alarm(10); $socket = new IO::Socket::INET (...); alarm(0); こんな感じで。 |
>>2868 68user ちなみに connect 中に SIGALRM が飛んでくると $! (errno) には Interrupted system call が入ります。でも、IO::Socket は内部で $! が潰されてしまう ようですね。 そういう意味でも、KL さんのおっしゃるとおり高級なものを 使うのは避けた方がよいかも。 |
>>2867 しっぽ >何件か出てきたので見てるところですが、ただ今のところ送るのはともかく >その後どうやって受信したら良いかが良くわかってなかったりします sendメソッドがありますがrecvが無いですね。 前記の通りRawIPはlibpcapのラッパーなので、libpcapへのインターフェイス がPerlに露出されてます。キャプチャせよということでしょう。 http://search.cpan.org/doc/SKOLYCHEV/Net-RawIP-0.09d/RawIP/libpcap.pod halfscan.cを(Perlなり他の手段を経由するなりして)raw socketの使えるシェル から使えば一番手短に済んで良いと思いますけども。 Perlでなければならない理由が何かあるのでしょうか。また、監視対象のサービ スも何か分からないので、halfscan.cが一番汎用で楽です。 >まあAttackingに使うには良いのかも知れませんが どこがどのように良いのでしょう? >>2868 68user 「connectしっぱなしで対象サービスを監視しているサービスが 正常に動いているか」を監視するサービスが必要で、さらにその サービスを監視するサービスが...というのを考えつきました 笑 この循環を止めるには、せいぜいhalfscan.cを、切れない回線の 向こうにある落ちないOSから定期実行するか、もしくはしっぽさん の仰られるような信頼性の高い機械を使うしかないのでは。 |
>>2864 68user > 名前解決ができない。 nslookup,host,digは動作OKです。 > → これは dig は名前解決できないという意味? nslookup と host が OK で、 > dig が NG ならば、ちょっと理解できません。 strace digについては、dig自体は正常に動作し名前解決しているが、 ご指摘のsend()のコールが見つからないという意味です。 かわりにwrite()のコールがあるので、sendではなくwriteを使っているのでは と想像していますが、straceで表示されるwriteで送っている文字列(?)は 内容が意味不明で、writeがsendの代わりに使っていると断言する自信は ありません(dnsライブラリのソースや解説を見たわけではないので)。 実際には次のようになります。 % strace dig www.jp.freebsd.org >& strace-dig.txt % grep 'write(' strace-dig.txt write(4, "\t\0\0\0\5\0\0\0\2\0\377\277\266\3066\1\0\240\5\10\340"..., 148) = 148 write(4, "\200-(@\0\0\0\0\0\372\377\277\200T$@\10P<@\3@\0\200\0\0"..., 148) = 148 write(4, "\200-(@\0\0\0\0\20\372\377\277\220q$@XP<@\3@\0\200\0\0"..., 148) = 148 write(4, "\200-(@\0\0\0\0\0\372\377\277 \365$@\350\"\6\10\3@\0\200"..., 148) = 148 write(4, "\200-(@\1\0\0\0\2\4\0\0Ho\26@\320\371\377\2771\220\0@\334"..., 148) = 148 write(6, "\377\377\377\377", 4) = 4 write(4, "\200-(@\1\0\0\0\4\f\0\0\30V(@\260\214\'@\240\224;@\310"..., 148) = 148 write(4, "\200-(@\1\0\0\0\3\10\0\0\376\274\'@\340\"\6\10\260\230"..., 148) = 148 write(4, "\200-(@\2\0\0\0\0\0\0\0*\22:@t\241;@@0<@8\372\377\277\372"..., 148) = 148 > → perl (から呼ばれる libc の resolver) は正常動作していると思う。 確かに正常動作しているように見えます(想像ですが)。 ここで気づいたことがあるのですが、dnsを直接操作するコマンドと gethostbynameを呼んでいると思われるコマンドで互いのstraceの結果を見比べると、 dns処理のためにオープンしているライブラリが異なっているようです。 またネットを検索していて気づいたのですが、glib2.1.??あたりにバグが あるらしいです(情報自体は古いですが)。 もしかしたらバグのあるバージョンかもしれないので調べてみます (今回の名前解決とは関係のないバグかもしれませんが…)。 > netstat -s については、2〜3ヵ月以内の UNIX USER に詳しく説明されていましたので 見つけたら是非読んでみようと思います(書泉行き?)。 > あと、本当にお困りなら linux.or.jp あたりのメーリングリストで > 質問した方が早いと思うですよ (もちろん解決しなくてもいいなら > こっちで続けても構いません)。 解決しなくていいわけではないですが、まだねばりたいです。 いつまでも同じ話題でいいかげん飽きている、という気もしますが、 もう少しお付き合いくだせい。 |
>>2866 68user > そうそう、/etc/nsswitch.conf は > hosts: files dns > てな感じになってますか? ご指摘の記述は存在しました。 |
初めまして。たまにこのホームページにお邪魔させて頂いてます。 FreeBSDのFileSystemについて質問があります。 早速ですが、質問させていただきます。 iノード番号から、struct inodeまたはstruct dinodeを取得する関数(system call)があれば、その関数名を知りたいのですが。 どなたか、ご存知の方はいらっしゃいませんでしょうか? |
初めまして。すばらしいサイトですね! 私はまだunix初心者なので、貴サイトにはお世話になっております。 Mewについて調べたところ、 http://www.mew.org/index-j.html へのリンクが切れてました。 今は http://www.mew.org/index.html.ja もしくは http://www.mew.org/ で行けると思います。 これからも頑張ってください。 |
>>2873 kaworu > iノード番号から、struct inodeまたはstruct dinodeを > 取得する関数(system call)があれば たぶんないです。 struct inode や struct dinode は UFS にしか存在しないので、 UFS, NFS, DOS ,ext3, VFAT, FAT32 など、複数のファイルシステムを サポートしなければならないシステムコールとしては存在しないです。 もしやるなら /dev/da0c などのデバイスを直接オープンすること になると思いますが、clri, fsck, fsdb などのソースが参考に なるかもしれません。 >>2871 has > dns処理のためにオープンしているライブラリが異なっているようです。 とりあえず ldd でどのライブラリを使っているか見たり、nm や objdump でどの関数を使っているか調べてみるとよいかもしれません。 |
>>2875 68user > struct inode や struct dinode は UFS にしか存在しないので、 ああ、いきなり嘘を書いてしまった。 struct inode はメモリ内 inode なので、全ファイルシステムで 利用可能ですね。 |
はじめまして!!UNIX初心者なのですが、こちらには本当にお世話になっております。 素晴らしいサイトだと思います。 数あるコマンドリファレンス本がほとんど無用になりました。 でも先週、なぜかまったくアクセスできなくなってしまい、大変つらい思いをしました。 こんな聞き方失礼でしょうが、こちら、閉鎖されてしまう予定とかないですよね? もしなくなってしまったらとてつもなく悲しいです。業務にも支障が出てしまいます(悲しくて(笑)) もし一括ダウンロード等の仕組みがあったらぜひバックアップしておきたいくらいです。 ぜひぜひ永続を願わんことを・・・管理人様の労力を無視した勝手な発言で申し訳ありませんが。 |
はじめまして。いつもいつもUNIXの勉強でお世話になっています。 本当に素晴らしいサイトですね。 私もダウンロード等で保存しておきたいぐらいです。 市販の参考書よりもわかりやすく、とても参考になります。 これからもよろしくお願いします。 |
はじめまして。UNIX初心者なのが、いつもお世話になってます。 今、会社でHP−UNIX10.20を使用しています。(勉強中) DATテープにデータをバックアップするのにfbackupコマンドを使用しています。このfbackupでバックアップした内容を確認するコマンドって何ですか?ちなみにtar cvでバックアップした内容の確認はtar tvで確認できますよね?以上、ご存知の方教えてください。 |
>>2877 カトウ > でも先週、なぜかまったくアクセスできなくなってしまい、 > 大変つらい思いをしました。 8/2 あたりから 10日ほどマシンが落ちてました。マシンがリモートに あるため対応が遅くなり失礼しました。 > こちら、閉鎖されてしまう予定とかないですよね? 現時点では閉鎖予定はないですが、なにぶんにもタダで借りさせていただいて るものですから、マシンがクラッシュしたらどうなるかわかりません。そしたら どこかでサーバ探すでしょうが、それもいつになるかわかりませんし、移転の お知らせはできないかもしれません。 それまでに頑張って man と google だけで問題解決できるようになって ください。 >>2879 hiro man fbackup を読みましょう。 http://www.calpoly.edu/cgi-bin/man-cgi?fbackup 読むのが面倒なら、SEE ALSO の項目だけ見て、それっぽいコマンドを 試しましょう。僕は HP-UX を使ったことがないので、どれがそのコマンド なのかはわかりません。 |
シゲと申します。 今、red hat 7.1でパッケージソフト開発を行っています。 複数のプロセスが立ち上がるもので、それぞれのメモリー使用量を確認を行っています。 meminfoにより合計のメモリ使用量を測ると13Mぐらいしかないのに、それぞれのプロセスの /proc/(プロセス番号)/status のVmSizeを合計すると、150Mぐらいになってしまいます。 150Mは間違いなく間違っていると思います。 単プロセスのメモリ使用量ってほかに計り方がないのでしょうか? ご教授お願いします。 |
>>2881 シゲ 例えば、ls を同時に 2 プロセス実行していても、メモリ上に配置される /bin/ls の テキスト領域 (命令文の領域) は 1 つしかありません。同様に libc などのライブラリの テキスト領域も共有されます。そこらへんで食い違いが出ているのではないかと思います。 > 単プロセスのメモリ使用量ってほかに計り方がないのでしょうか? どーなんでしょうねー。status の Vm* を足したり引いたりしたら 計算できそうな気もしますが、正確なところはわかりません。 まぁ、ここらへんのテキスト領域をどう計算したいのかにもよると思います。 |
ご教授有難うございます。 帰りの電車の中で考えていたら、ひらめきました。 全プロセス立ち上げ時の,/proc/meminfoの全使用メモリ量から、測定したいプロセスをkillしたときの/proc/meminfoの全使用メモリ量を引けば良い気がしました。 しかし、考えてみれば68userさんのおっしゃるとおり、共有メモリが存在するから、正確な結果ではありませんね・・・。 こまったな・・・。 |
>>2883 シケ゛ 結局は用途次第なわけですが、普通の環境であれば daemon 類が libc を 使っているでしょうから、そこらへんは無視していいでしょう。 あとは、横軸: プロセス数、縦軸: メモリ使用量なグラフでも書いて、 「n クライアント、m リクエスト/sec だと XX MB 程度必要」 とか書いておけばいいんじゃないでしょうか。 # 手抜き? |
はじめまして。 いつもこちらのサイトにお世話になっています。 パスの設定のされていないコマンドにパスを設定するには どうすればよいのでしょうか(絶対パスでは実行できます) 初歩的な質問で恐縮ですがお教えいただけませんでしょうか。 よろしくお願いいたします。 |
>>2885 ホームズ % hoge hoge: Command not found. % /foo/bar/hoge (実行できる) という状況で、hoge とだけタイプすれば実行できるようにするには どうしたらよいか、ということですか? 環境変数を使うのが一番簡単でしょう。 % setenv PATH ${PATH}:/foo/bar (csh・tcsh 系) $ PATH=${PATH}:/foo/bar; export PATH (sh・bash 系) csh・tcsh 系なら set path=($path /foo/bar) でもいいです。 |
お返事ありがとうございます。 68userさんの言われたとおり設定したらできました。 どうもありがとうございました。 |
初めまして、よろしくおねがいします。 お聞きしたいことがあります。 tar xvzf .tgz して、うまく展開したのですが、 もう一度 練習で、やってみようと思うと、 Only one compression option permitted とでてしまいます。 一回しかできないという意味なのでしょうか? 一回、 .tgzを消して試しましたが、同じでした。 初歩的かもわかりませんがよろしくお願いします。 |
>>2888 26歳 > Only one compression option permitted 一つの圧縮オプションしか許されていない。 =複数の圧縮オプションを指定することはできない。 というわけで、Z・z・y・j などの圧縮形式を指定するオプションを、 複数個指定したのでしょう。 例えば tar zxvzf とか、tar xvZzf とか。 |
はじめまして、こんにちは。 環境:Redhat7.3 ログインしているユーザが、現在何処のディレクトリにいるか っていうのを調べることは可能でしょうか? 「who」のオプションであったりしますか? 宜しくお願いします。 |