>>2850 しっぽ > PerlでTCPのSYNを一度だけ投げて任意の時間内にSYN ACKが返ってこなかったら その辺を管理するのは OS の TCP スタックなので、プログラム側 からはどうにもなりません。 > よくよく見てみたところ、リトライの間隔がTimeOutの設定に関係なく > 最初は3秒、次が6秒、12,24,48秒となっていて最後に96秒待った後 > エラーメッセージを出す動きをしていました。 これも、そういうものです。 Solaris だとタイムアウトまでの時間を変更できたしますが、その他の OS では変更できない可能性が高いです。 もし connect 時のタイムアウト処理をしたいという目的ならば、 ノンブロッキングソケットを使いましょう。 >>2847 mattu > パラメータが正常に送信されていないようなんです。 その判断が間違っているような気がします。そう判断するに至った 根拠が明示されていないので、ただのあてずっぽうですが。 |
ご回答ありがとうございます。 別にあてずっぽうではなく、サーバ側でデバックにて確認してみると、渡しているデータが入ってなかったのと、渡されたヘッダ・パラメータがファイルに出力されるようにしており、JAVAで作成したものでしたら正常に出力されるのですが、Cで作成したもので試してみるとヘッダの部分のみ出力されるのでそう思いました。デバック等にはVAJを使用しております。 言葉不足ですみませんでした。 |
>>2852 mattu - ボディの最後の \r\n は不要 (もし \r\n を付けるなら Content-Length は 10 であるべき。でも \r\n 付けていいのかな?) - リクエストに Content-Type ヘッダは不要 という点を直しても まだボディが渡らないようなら、その C のプログラムが おかしいんだと思います (てゆーか、Java でうまくいって C でうまくいかない なら、C の方を疑うべきでしょう)。 詳しくはこちらなど。http://www.studyinghttp.net/headers.html |
>>2845出来ました。ありがとうございます。 |
教えてください。 showmountコマンドは、OSのサポートバージョン等が制限されていますか。 showmountコマンドの実行制限が何かありましたら、教えてください。 |
ご回答ありがとうございます 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」のオプションであったりしますか? 宜しくお願いします。 |
>>2890 Bootick root 権限があるなら ps -ef eww で環境変数 PWD を見るとか、 /proc の下を覗いてみるとかですかねぇ。 root 権限がないなら無理ではないかと思います。 |
telnetやcgiを使って本IPをメモするソースがほしいのですが、どうしたらいいですか?それと出来れば設置方法も教えてほしいです。素人なのでまったく分かりません。PCに詳しい方、お願いします |
はじめまして。 先日 /dev/null が消えてしまい、少なからずシステムに影響が出てしまいました。 それまで安定稼動していたのに、何故突然消えてしまったのか原因がわかりません。サーバ上で特に作業はしていませんでした。 どなたか同じ現象に遭遇した方いらっしゃいませんか? |
はじめまして。 いつもお世話になっています。 Linuxにて「Proxy サーバ経由の SSL 通信」を行おうと考えております。 「ネットワークプログラミングの基礎知識」にSSL 通信の方法が 記載されていますが、Proxy 経由の方法が分からず、現在格闘中です。 Proxy サーバへの接続はできました(HTTP の通信は OK です)。 Linux & C言語の初心者で恐縮ですが、 これらの技術的なアドバイス・参考になるサイトなどがありましたら、 ご教授下さい。 よろしくお願いします。 |
>>2894 あきゆき 平文で、 CONNECT target.host.com:443 HTTP/1.0\r\n Host: target.host.com\r\n \r\n を送って、サーバから \r\n\r\n が来るまで読み込み (全データが到着するのを待つ)、その中に " 200 " が 含まれていれば接続成功。 その後は SSL でやりとりする、という方法で一応接続はできています。 (" 200 " が含まれていれば OK などという適当な方法以外の) まっとうな やり方は知りません |
>>2895 68user 早速のご返答、ありがとうございます。 ご指摘のように、"CONNECT 〜"を行い、サーバーから "HTTP/1.0 200 Connection established"という応答がきたので、 その後、下記の SSL の設定を行いました。 ---------- SSL_load_error_strings SSL_library_init SSL_CTX_new SSL_new SSL_set_fd SSL_connect←戻り値"0"が返されます。 ---------- SSL_connect で TLS/SSL handshake に失敗したので、 SSL_get_error 関数を実行すると "5"が返されました。 現在、これについて調査中ですが、原因が何か分かりますか? SSL のやりとりに問題がありますでしょうか? SSL のやりとりは、 「ネットワークプログラミングの基礎知識−SSL でアクセスしてみよう」の C言語のソースの「/* ここからが SSL */」以下と同様です。 (検証中のため、「SSL でアクセスしてみよう」と同じサイトにアクセスして、結果を得ようとしております) 何卒よろしくお願いします。 |
>>2896 あきゆき 先程の書込みで不足な情報を追加します。 SSL_get_error で返される値を記載します。 1.SSL_CTX_new(SSLv2_client_method()) →SSL_connect[返り値"0"]、SSL_get_error[返り値"6"] 2.SSL_CTX_new(SSLv3_client_method()) →SSL_connect[返り値"0"]、SSL_get_error[返り値"5"] 3.SSL_CTX_new(SSLv23_client_method()) →SSL_connect[返り値"0"]、SSL_get_error[返り値"5"] よろしくお願いします。 |
>>2897 あきゆき お手数をおかけしました。 「Proxy サーバ経由の SSL 通信」を行うことが出来ました。 Proxy サーバ経由で HTTPS サイトから下記の応答が返されました。 "You have successfully connected using SSL (SSLv2)." 先程の SSL_connect のエラー[返り値"0"]の原因は、 "CONNECT 〜"を送信後の Proxy からの応答待ちの個所でした。 ご迷惑をお掛けして申し訳ありませんでした。 ご返答頂きました 68user さん、誠にありがとうございました。 今後ともよろしくお願いします。 |
お世話になっています。場違いな質問だと思いますが質問させてください。 CVSでローカルでcommitすればサーバ上で自動的にupdateするようにしたく loginfoを編集したのですがうまくいきません。 質問が場違いと言ったのは、CVSサーバがUNIX系ではなくウインドウズ環境だからです。cvsntを使ってます。 いろいろ調べた結果loginfoに以下のように書けばよいとの事なんですが wincvsにてコミットするとエラーがでてしまいます。 diary (date; cat; (sleep 2; cd /home/hoge/diary; cvs -q update -d) &) >> $CVSROOT/CVSROOT/updatelog 2>&1 エラーはnot foundとCould Not Create Child Process (error 2)です。 /home/hoge/diaryや$CVSROOT/CVSROOT/updatelogな書き方がウインドウズでは適用できないと思い d:\diaryなどに書き換えても駄目でした。 具体的には loginfo: test2 (date; cat; (sleep 2; d: cd d:\cvs_test3; cvs -q update -d) &) >> d:\cvs\CVSROOT\updatelog 2>&1 (test2がモジュール名、cvs_test3がupdate先フォルダでいいんですよね?) エラー: Executable (date; cat; (sleep 2; d: cd d:\cvs_test3; cvs -q update -d) &) >> d:\cvs\CVSROOT\updatelog 2>&1 not found Could Not Create Child Process (error 2) ご存知の方、いらっしゃいましたらご伝授よろしくお願いします。 |
自己解決(?)しました。 cvsntを利用した場合、loginfoでの自動更新はできないようです。 WINサーバの場合、cygwinを使用する方法があるみたいなので その方法を試してみる事にします。 お騒がせしました。 |
はじめまして。お力を貸してください。 業務用に、ファイルをアップロードするPerl/CGIを作りました。 エラーもなく動作はしているのですが、巨大なファイルをアップロードするときに、かなりの時間がかかります。 具体的には167MBのファイルをアップロードするのに約40分かかりました。 同じ環境で、同じファイルをFTP(FTP.exe)を使用して転送すると、5分で処理が終了しました。 CGIで時間がかかる原因が、私のソースにあるのか、 CGIのバッファが関係しているのか、それとも他に原因があるのか、 原因の切り分けが出来ずに困っています。 通常、CGIで100MBのファイルをアップロードしようとすると どれくらいの時間で処理できるのでしょうか? また、どうすればFTPと同レベルの処理速度に出来るのでしょうか? ちなみに動作環境はUNIX、線は100BASE、Perl5。 アップロードするCGIにはCGI.pmやcgi-lib.pl等のモジュールは仕様していません。 (それが原因でしょうか?) サーバのログには以下のように出ています。 (1)[14:17:57] "GET /xxx/ファイル入力用.cgi?flg=1 HTTP/1.1" 200 3413 (2)[14:57:11] "POST /xxx/アップロード用.cgi HTTP/1.1" 200 841 アップロードを行う(2)に処理が移るまでに、40分かかっています。 ということは、データのバッファリングに40分かかっているということなのでしょうか? |
友人がRS/6000でTCP/IPのパケット情報をmili sec単位で取得しそれをレポートとして出力したいんですが何か方法はありますか? |
こんにちわ いつもお世話になってます。 grepコマンドである検索文字列と、 その次の行を検索すると言うことは、 出来ないでしょうか? たとえば、 ファイルの中身が ------------------- aaa\n(改行) bbb\n(改行) ccc\n(改行) aaa\n(改行) ddd\n(改行) eee\n(改行) ------------------- と言うファイルがあったときに、 aaa\n(改行) bbb\n(改行) aaa\n(改行) ddd\n(改行) という結果を返して貰うことは出来ないでしょうか? 宜しくお願いします。 |
>>2903 tomu http://x68000.startshop.co.jp/~68user/unix/pickup?grep をご覧ください。 |
Dさん 見逃してました numオプション ^^; ありがとうございました。 |
はじめまして。 はじめてで恐縮ですが、質問させてください。 sortコマンドでカンマ区切りのdatファイルを 1番目と7番目の項目をキーに昇順、 5番目と6番目の項目をキーに降順 という並べ替えをしたいのですが、可能でしょうか? よろしくご教授願います。 |
こんにちは。 HPを開いているのですが質問があります。 BBSの方にアクセス制限をかけたい人物がいるのですが どう、打ち込めばよいかわかりません。 BBSを借りている所に質問したのですが なかなか返事が返ってこないのでこちらに頼ろうと思い 来させて頂きました。m(__)m どうぞ宜しくお願い致します。 その人物のホスト名は↓ FLA1Aae071.kmm.mesh.ad.jp なんですが、*.kmm.mesh.ad.jpと打つと 全然似てない私の方まで制限がかかってしまいました。 どう打てば宜しいのでしょうか? すいませんが教えてください。m(__)m あと、HPに描いた絵などを無断に使用する人物を つきとめる事等はできますでしょうか? |
No.2906#MATSUさん お使いの言語はPerlですか? Perlメモ http://www.din.or.jp/~ohzaki/perl.htm#SortMulti に、複数項目でのソート方法が書いてありますね。 参考になりますでしょうか。 |
こんにちは。 初めて質問させていただきます。 Solalisのtarコマンドでファイルをtarファイルにまとめようとしたのですが、 "ディレクトリ階層が深くダンプできません" というエラーメッセージが出てうまくいきません。 コマンド:tar cvf tarファイル ./対象ディレクトリ 対処方法を知っている方がいたら、教えていただけませんでしょうか? よろしくお願いします。 |
こんにちは FreeBSDで鯖を立てながら Perlで簡単なCGIを作っております 質問があるのですが BBSなどでバイナリファイルのUPLoadは どのように送ればよいのでしょうか わかる方が居りましたらお答えをお願い申し上げます |
突然ですが、 以前このページで紹介していたUNIX関連の本を教えていただけないでしょうか。 |
>>2911 take 右上にある全文検索フォームで適当な単語を入れてみましょう。 「書籍 or 本 or 出版社 or 著者 or 訳者」てな感じで。 あとは http://bookshelves.tripod.co.jp/ とか。 |
こんにちは。突然ですが質問させて下さい。 プロセス番号0〜2の (swapper) /sbin/init -- (pagedaemon) プロセスの役割は何でしょうか? |
質問いたします。下記のコマンドの条件部分($NF ~ /'"$1"')の意味がいまいち理解できないので(「最後のフィールドの中から1フィールド目の値を含むもの」というところまでわかるのですが・・・)、ご教示ください。 ps -el | awk '($NF ~ /'"$1"'/) {print $4}' mypid =$$ |
今更ですが、わかるものだけ回答しておきます。 >>2901 かなっぺ > ということは、データのバッファリングに40分かかっていると > いうことなのでしょうか? web サーバが全データを受信し終わってから CGI プログラムを 起動しているのでしょう。本当にそうなのかどうかは、その 40分の 間に web サーバのプロセスのメモリ使用量がどう変化しているか 観察するといいでしょう。 >>2903 tomu > grepコマンドである検索文字列と、その次の行を検索すると言うことは、 > 出来ないでしょうか? GNU grep ならできますが、僕の試した限りでは Solaris 標準の grep でこれができませんでした。何かやり方はあるのでしょうか? grep で改行コードをひっかけられば解決なんですが。 >>2910 NT > BBSなどでバイナリファイルのUPLoadはどのように送ればよいのでしょうか テキストファイルのアップロードと全く同じでいけるはずです。 >>2913 (^^) > (swapper) > (pagedaemon) スワップ制御とページング制御をする (カーネル内の) プロセスです。 > /sbin/init -- http://X68000.startshop.co.jp/~68user/unix/pickup?init をどうぞ。 >>2914 G OS のバージョンと ps -el の結果とがないと、これの意図するところは わかりません。 > ps -el | awk '($NF ~ /'"$1"'/) {print $4}' mypid =$$ awk が解釈するのは '($NF ~ /' と '/) {print $4}' だけで、$1 の部分はシェルが 1つ目の引数に置換するはずです。 |
>>2915 68user 情報不足で申し訳ございませんでした。しかし、私の疑問は解決致しました。 $1はフィールドではなく、スクリプトの引数を示すということですね。 ありがとうございました。 |
下記のスクリプトはHP-UXの/etc/rc.configファイルなのですが,${CFG_FILE##*/}と${fname##*[.,~\#]}の解読ができません。 どうかご教示ください。よろしくお願い致します。 for CFG_FILE in /etc/rc.config.d/* /etc/TIMEZONE do fname=${CFG_FILE##*/} if [ -f $CFG_FILE -a "$fname" !="core" -a "${fname##*[.,~\#]}" = "$fname"] then . $CFG_FILE fi done |
今日簡単なタテケイの問題がありました。タブ区切りで ブック名 ファイル名 数値A 数値B 数値C ・・・ というファイルをブック名ごとにサマリーし、やはりタブ区切りで ブック名 Σ数値A Σ数値B Σ数値C ・・・ というファイルを作らなければならなかったのですが、 while(<STDIN>) { ($bname = $fname, $A, $B, $C) = split; $data{$bname}{A} += $A; $data{$bname}{B} += $B; $data{$bname}{C} += $C; } for $bname (sort keys %data) { print join, /\t/, $bname, $data{$bname}{A},$data{$bname}{B},$data{$bname}{C},"\n"; } とか書いたらどうしても数値が若干少なくなってしまいます。 数万行あって、ほとんどの行は合ってるんだけど 全体の数字が少ない、、。 しかも、カラム A と B は合ってるのに C だけ少ない。 よくよく見るとファイル名に空白が入ってて、 split /\t/ にしないといけなかったんでした。 しかも、ファイル名が空白のデータは特定のカラムにしか データがなかった。 ふつうこんな間違い方はしませんが、同時に複数の問題が 発生していて、すごくハマりました(泣) |
はじめまして。さっそくなんですが質問です。 掲示板CGIを改造してメール送信機能をつけたのですが、改行が反映されていなかったり、題名が文字化けしたりしてます。 ソースはhttp://www.starcity.ne.jp/~hide/0test/treebbs+.txtです。 元はhttp://www.starcity.ne.jp/~hide/0test/treebbs-.txtです。 #------------------メール送信機能-------------------------# open(MAIL,"| /usr/sbin/sendmail -t") || &error("送信できません。"); print MAIL <<"_MAIL_"; From: ars\@xx.xx To: hide_mkhs\@yahoo.co.jp MIME-Version: 1.0 Subject: A-train railway service X-Mailer: Sendmail Content-type: text/plain; charset=ISO-2022-JP Content-Transfer-Encoding: 7bit 投稿がありました。 名前:$name 題名:$subject メールアドレス:$mail ホームページ:$url メッセージ:$msg --------------------------------------- 投稿者情報 IP:$ip ホスト:$host --------------------------------------- A-train railway service(http://www.starcity.ne.jp/~ars/) _MAIL_ close(MAIL); #--------------------メール送信機能------------------------# こう書き加えたんですが… いま題名はA-train…ですが、日本語にすると文字化けしてしまい、来たメールは 投稿がありました。 名前:みー 題名:新規 メールアドレス:ars@starcity.ne.jp ホームページ:http://www.starcity.ne.jp/~ars/ メッセージ:<b>タグは‥?</b>どうでしょう? --------------------------------------- 投稿者情報 IP:218.133.200.111 ホスト:YahooBB218133200111.bbtec.net --------------------------------------- A-train railway service(http://www.starcity.ne.jp/~ars/) のように改行が反映されてなく、タグもみえみえです。しかも、レスの記号をあらわす">"は>となってしまいます。 どうすればいいのか教えてください。 |
>>2919 みー メールは HTML じゃなくてプレーンテキストなので、 タグが見え見えだったり改行がそのままだったりするんでしょう。 HTML 形式を維持するなら HTML メールをサポートしてるメーラーに HTML 形式のメールを送ればいいんじゃないでしょうか。 (その場合ヘッダはどうなるんでしょうね。 よくわかりません。よく広告とかで壁紙がついてきたりするから、 できることはわかっているのだが、、) 題名が文字化けなのは、ISO-2022-JP を正しく読み込んで ないからでしょう。ブラウザーが送ってくる文字はさまざまなので、 jcode.pl あたりで変換するとか。 |
こんにちは。 ちょっとわからないことが有ります。 ご存知の方は教えていただけますでしょうか。 cshで、 set str = "abc def" (←abcとdefの間は全角スペース) echo $stf とすると、 abc def (←abcとdefの間は半角スペース) と表示されてしまいます。 なんとかsetで設定した通りに(全角スペースをそのままに)出力したいのですが、 どのようにすれば良いでしょうか? |
>>2921(訂正) echo $stf ではなく echo $str でした。 |
>>2917 G > 下記のスクリプトはHP-UXの/etc/rc.configファイルなのですが, > ${CFG_FILE##*/}と${fname##*[.,~\#]}の解読ができません。 HP-UX の sh は知りませんが、FreeBSD の sh では ${parameter##word} 最長前置パターンの削除: まず word が展開され、その結果をパターン として扱います。パラメータ parameter の左から、パターンに一致する 最長の部分を削除した文字列に置換されます。 とあるので、多分同じでしょう。 > ${CFG_FILE##*/} basename(1) と同じでしょうね。 > ${fname##*[.,~\#]}" = "$fname" ファイル名に . , ~ # が含まれていないことをチェックしている のだと思います。 こういう場合は sh -x /etc/rc.config などとして、どういう ふうに解析されているのかを調べるというのも一つの手です。 >>2921 yuk > abc def (←abcとdefの間は半角スペース) > と表示されてしまいます。 そういう処理をする csh があるとは知らなかったので、OS 名を 教えてください。で、本題ですが echo "$str" でいけるんじゃ ないでしょうか。 |
2923> ご返答ありがとうございました。 sh -x コマンドは初めて知りました。 これから活用させていただきます。 |
あるプロセスのメモリ使用量を調べたいのですが、可能でしょうか? |
会社で UTF-8 と Big5(台湾)の変換ソフトが必要になったので、 ローカルに Perl 5.8 を入れてみました。 (ちょっとテストで失敗したんだけど、よくわかんないので 入れてしまつた ;;;) === big5 => UTF-8 === #! perl use encoding 'utf8', STDIN=>'big5'; while (<STDIN>) { print; } というのはうまくいったっぽいんですが、 === UTF-8 => big5 === #! perl use encoding 'big5', STDIN=>'utf8'; while (<STDIN>) { print; } というのは UTF-8 側に BOM(efbbbf)があると そこがそのまま出てきます。 use encoding 'big5', STDIN=>'utf8'; を使わないで Encode の変換関数を明示的に呼ぼうと思うんですが (で、BOM はもしあったら事前にカットする) うまくいきませんでした。つたない質問ですみませんが 何かわかりましたらご教示ください。 |
はじめまして。 c言語で書かれたプログラムを使って, .bash_profileのPATHを変更したいのですが, なかなかうまくいきません.どなたか教えていただけないでしょうか. ソースは以下のとうりです. #include<stdio.h> #include<stdlib.h> main(int argc, char *argv[]) { char buf[100]; sprintf(buf,"export PATH=/usr/local/bin:/bin:/usr/bin:/usr/X11R6/bin"); system(buf); exit(1); } コンパイルは通って,実行時にエラーは出ませんでした. bufに文字列はしっかり送られていました. export PATH=/usr/local/bin:/bin:/usr/bin:/usr/X11R6/bin とターミナル上で 打つと,しっかりPATHは変更されました. よろしくお願いします. |
例えば/aaa/bbb/cccというPATHがあったとして、aaaの部分だけ抜き取る簡単な方法はありませんでしょうか? /HP-UX |
はじめまして。こんばんは。UNIXについて質問があります。 与えられた引数を、そのままエコーバックするシェルスクリプトを作成しいのですが、どうしたらいいかわかりません。 アドバイスを頂けたら幸いです。よろしくお願いします。 |
>>2926 ふくし すいませんが、わかりません。 # 僕の知識は perl-5.00503 で止まっているので…。 >>2927 kiki system は内部で fork して、子プロセスが sh を実行します。 > sprintf(buf,"export PATH=/usr/local/bin:/bin:/usr/bin:/usr/X11R6/bin"); > system(buf); によって、子プロセスが実行する sh の環境変数は変更されますが、sh は すぐに終了してしまうので親プロセス (正確には親の親プロセス)に環境変数は 渡りません。 ではどうすればよいか、という話になりますが、 > .bash_profileのPATHを変更したいのですが, なぜそれをやりたいのか、ここで本当にやりたいのは何かを考えてみると 対策も見えてくるかもしれません。 >>2928 G > 例えば/aaa/bbb/cccというPATHがあったとして、aaaの部分だけ抜き取る > 簡単な方法はありませんでしょうか? こんな感じでしょうか。 % echo /aaa/bbb/ccc | sed 's|\(/[^/]*\).*|\1|' /aaa >>2929 NAGISA > 与えられた引数を、そのままエコーバックするシェルスクリプト そういう場合は「エコーバック」とは言わないような気がしますが、 #!/bin/sh echo $@ とか、 #!/bin/sh for i in $@; do echo $i done とか。 |
>>2925 なお@HP-UX11 > あるプロセスのメモリ使用量を調べたいのですが、可能でしょうか? ps コマンドなぞどうでしょうね。 |
>>2931 68userさん お返事ありがとうございます.kikiです. > .bash_profileのPATHを変更したいのですが, セキュリティに関する勉強でsuコマンドになり済ますトロイ について勉強していまして,実際に自分のPCで実験しています. suコマンドを使うユーザのアカウントを入手してあるという場合 を想定して,自分の一般ユーザ権限から自分の管理者権限のパス ワードを盗むという実験です.手順は 1.あるディレクトリにトロイをおいて 2.PATH変更,トロイ置場を先に検索するようにする. 3.コマンドsuでsuトロイ起動.盗んだパスワードをファイルに 書き込んで,トロイは自分を削除する. 4.suコマンドをもう一度実行,本物のsuコマンドが起動 です.3.の手順までは問題なく進みましたが,4.を実行すると bash: /suトロイ置場/suトロイ : そのようなファイルやディレクトリはない といわれてしまいました. suトロイは消えていたので,本物のsuを探しに行ってくれるはずなのですが, どうやら本物のsuを探しにいってくれないようなのです. もちろんPATHは本物のsuにも通っています. そこで,suトロイの中でPATHを変更しようと思ったのです. |
>>2930 68user いつもありがとうございます。 ただ感謝と尊敬の念でいっぱいです。 また、宜しくお願いします。 |
>2930 さん、ありがとうございます。 5.6 にせよ、5.8 にせよ、まだ使いこなせてませんが、 結構面白いっぽいですよ。 (インストールで失敗してるぼくの言うことじゃないが ;;; |
>>2932 kiki シェルを置き換えたのか、~/.bash_profile を書き換えて 自作 su を起動するようにしたのかよくわかりませんが、 > 2.PATH変更,トロイ置場を先に検索するようにする. ができているなら、後は /usr/bin/su を起動すればいいだけ だと思います。そこで PATH が出てくる理由がよくわかりません。 >>2934 ふくし > 5.6 にせよ、5.8 にせよ、まだ使いこなせてませんが、 > 結構面白いっぽいですよ。 うっかりプログラミング Perl 第3版 (perl-5.6 用) なぞ買って しまいましたが、ぜひ利用したいのは our ですね。次点はちょっと 安全になった open。 それ以外はまーいいやって感じです。 ときに our って C でいうところの int get_num(){ static int num=1; return num++; } main(int argc, char *argv[]) { printf("num=%d\n", get_num()); printf("num=%d\n", get_num()); printf("num=%d\n", get_num()); printf("num=%d\n", get_num()); printf("num=%d\n", get_num()); } のような static だと思い込んでいたんですが、今 本を読み直してみると なんか違うような気も。 あと、キー固定のハッシュ (キーをタイプミスするとエラー扱い)、 順番を保持するハッシュ (セットした順に keys が返ってくる) って 導入されてないんでしたっけ。どこかで聞いた覚えがあるんですが、 見つけられない。 # キー固定のハッシュは Class::Struct を使えばいいのかな。 |
>>2935 68user > あと、キー固定のハッシュ (キーをタイプミスするとエラー扱い)、 > 順番を保持するハッシュ (セットした順に keys が返ってくる) って > 導入されてないんでしたっけ。どこかで聞いた覚えがあるんですが、 > 見つけられない。 みびょーに違う話のような気もしますが、perl-5.005_03 でも $john=[{age=>1, eyes=>2, weight=>3}, 47, "brown", 186]; print "$john->{eyes}\n"; print "$john->[2]\n"; てな書き方ができるんですねぇ。これは知らなかった。 |
すいません、今度は Perl 5.005_03 の話です ;;; 経理システムで、 ・単価はドル建てだが、セント未満の端数がありうる (1個につき 0.001 ドルとか) ・個数は「個」だが、1個未満の端数がありうる (0.1 個とか) という条件で、単価x個数=売上を、 小数点以下第3位で切り捨て(小数点以下第2位まで)で求めよ、 という問題で 「100倍して int して100で割る」ということをしていました。 #! perl $tanka = 10000.88; # ドル $kosuu = 1; # 個 $uriage100 = $tanka * $kosuu * 100; # 売上の 100 倍 print "uriage x 100 = $uriage100\n"; $uriage = int($uriage100)/100; print "uriage = $uriage\n"; しかしこうすると、int(1000088) は 10000088 になるので、 uriage x 100 = 1000088 uriage = 10000.87 となります。もっとも手軽な回避方法はなんでしょうか。 もしお分かりでしたらご教示ください。 |
cshrcファイルの内容について皆さんにお聞きしたいです。 source .cshrcコマンドを出すときにUnmatchedといわれていますけど、 どこに問題があるかは良く分かりません。 cshrcの内容は以下のようになります************* # .cshrc # User specific aliases and functions # alias rm 'rm -i' alias ls 'ls --color' alias cp 'cp -i' alias mv 'mv -i' #setenv PATH "/usr/sbin:/sbin:$PATH" setenv NCARG_ROOT "/usr/local/ncarg" setenv PATH "/usr/sbin:/bin:$NCARG_ROOT/bin :/home/hongbin/fdgrib1.0/src/pre/fdgrib:/home/hongbin/rams4.3 :/home/hongbin/rams4.3/chq1/plvrams:$PATH" #setenv LD_LIBRARY_PAYH "/usr/FFC/lib" #setenv MANPATH "/usr/FFC/man:$NCARG_ROOT/man" setenv PGI "/usr/pgi" set path = ( $PGI/linux86/bin $path ) if($?MANPATH ==1) then setenv MANPATH $PGI/man:$MANPATH else setenv MANPATH $PHI/man endif #setenv MANPATH "$MANPATH":$PGI/man setenv LM_LICENSE_FILE "$PGI/license.dat" setenv MANPATH "$PGI/man:$NCARG_ROOT/man" set prompt='[%n@%m %c]#' ***************** どこが間違っているでしょうか。 よろしくお願いします。 |
>>2937 ふくし sprintfは? |
>>2938 初心者 この書き方は出来るのかな??複数行にわたるクオート setenv PATH "/usr/sbin:/bin:$NCARG_ROOT/bin :/home/hongbin/fdgrib1.0/src/pre/fdgrib:/home/hongbin/rams4.3 :/home/hongbin/rams4.3/chq1/plvrams:$PATH" |
>>2937 ふくし 勘定系ってやっぱり BCD だったりするんだろうかと思いつつ、 こういうときの常套手段を知らないので、しばし傍観。 >>2938 初心者 csh -fv .cshrc しましょう。あるいは、1行ずつ手でタイプ (あるいはマウスでコピペ) しましょう。どこに問題があるのか わかります。 |
>>2940 名無し さん、ありがとうございます。 sprintf は四捨五入なんですね。 ということはあらかじめ 0.005 を引いておけばよい? −−−−−−−−−−プログラム−−−−−−−−−−−−−−>8 #! perl while (<DATA>) { chomp; $tanka = $_; # ドル print "tanka = $tanka "; $tanka -= 0.005; # 切り捨てたいから $kosuu = 1; # 個 $uriage100 = $tanka * $kosuu * 100; # 売上の 100 倍 $uriage = $uriage100 / 100; $uriage = sprintf "%.2f", $uriage; print "uriage = $uriage\n"; } −−−−−−−−−−プログラム終わり−−−−−−−−−−−>8 実行結果。 > keisan tanka = 10000.88 uriage = 10000.88 tanka = 10000.881 uriage = 10000.88 tanka = 10000.882 uriage = 10000.88 tanka = 10000.883 uriage = 10000.88 tanka = 10000.884 uriage = 10000.88 tanka = 10000.885 uriage = 10000.88 tanka = 10000.886 uriage = 10000.88 tanka = 10000.887 uriage = 10000.88 tanka = 10000.888 uriage = 10000.88 tanka = 10000.889 uriage = 10000.88 なんかできてるっぽい、、? __DATA__ 10000.88 10000.881 10000.882 10000.883 10000.884 10000.885 10000.886 10000.887 10000.888 10000.889 |
>>2942 ふくし これなんかどうでしょうね。 http://www.harukaze.net/~mishima/perl/faq/newbiefaqpgm.html#5 > $uriage = $uriage100 / 100; 最後に 100 で割るのがなんかおそろしいなぁ。 値によっては循環小数になったりしないのかな。循環小数になっても %.2f してるから OK? |
すいません、お騒がせしております ;;; 100 で掛けたり、割ったりしているのは、 int を使いたかったからで、 sprintf を使っている以上、必要ないですね。 (切り捨ての場合) while (<DATA>) { chomp; $tanka = $_; # ドル print "tanka = $tanka "; $tanka -= 0.005; # 切り捨てたいから $kosuu = 1; # 個 $uriage = sprintf "%.2f", $tanka * $kosuu; print "uriage = $uriage\n"; } 四捨五入の場合は 0.005 を引くのをやめるとか。 |
だめでした ;;; sprintf "%.2f", $a; に、$a に 10000.005 を渡すと、10000.00 になります。 (環境に依存しまくるかな。FreeBSD 2.2.8_Release、Perl 5.005_03) しょうがないので . で split して、、いろいろしようと思います ;;; ちなみに 68User さん、BCD というのはモジュールありますか? CPAN で検索したら EBCDIC_convert なんとかというのしか 見つかりませんでした ;;; |