はじめまして。石田と申します。 ★件名★「UNIXの部屋」公開ありがとうございます。 *現在、私はlinux(Unix)のシェルプログラミングを勉強中です。 *ところが、manコマンドでは全然分からないので、 GoogleやMLアーカイブ検索して調べていましたが、 *こちらのUNIXの部屋は非常に分かりやすく参考になります。 *分かりやすいポイントは、 1)パラメータの意味が日本語で分かりやすく書いてある 2)具体例がメッセージなど併せて書いてある。 ところが非常に分かりやすいです。 *私が今作っているスクリプトは 1)redhatのupdateのFTPサイトと自分のpcの rpmパッケージリストを持って来て、マッチングして、 2)不足分のファイル一覧を作成 この中から必要なファイルをFTPでダウンロード *とにかく、パッケージのアップデートは手間がかかるので、 なるべく自動化しようと思っています。 * これからも「UNIXの部屋」がんばってください。 |
>>2699 KL > よく拝見すると"Perl"とは入ってないですね 笑 もちろん Perl は UNIX であります (^^ >>2700 パルテノ > 続きから再開できるレジューム機能 HTTP にはレジュームのような高級な機能はありません。二回目以降の 接続時に、単にデータの開始バイトを指定しているだけです。 接続が切れた場合は、ローカルに落したファイルサイズを見て、 たとえば 1000バイトまでダウンロードできているなら GET / HTTP/1.0 Range: bytes=1000- とします (ファイル先頭は 0 バイト目)。 http://www.studyinghttp.net/rfc_ja/2616/sec14.html#sec14.35 >>2701 石田安弘 > *こちらのUNIXの部屋は非常に分かりやすく参考になります。 ありがとうございます。改善点などありましたら指摘して下さい。 |
はじめまして、くろうです C言語初心者がいきなりソケットプログラムを作っているのですが どんな本を見ても、いまいちわからないことがあるので質問します。 UNIXで最大1Mハ゛イトの可変ファイルをソケットで受信しているのですが ソケットで受信する時、recvのバッファーのサイズはどのくらいとるのが適正値なのでしょう。 char buf[4096]; rtncd = recv(sockid,buf,sizeof(buf),0); 受信したテ゛ータは連結編集してます。 よろしくおねがいします。 |
>>2703 くろう 100 バイト単位で値を変えて、転送速度を計りましょう。 それが面倒なら 4096 でいいんじゃないでしょうか。 # 僕は面倒なので 4096。 |
皆さんはじめまして。ゆくまといいます。 いつも「UNIXの部屋」を活用させて頂いております。 現在、UNIXの*について調べているのですが、 もしご存知の方がいらっしゃったら教えていただけますでしょうか? たとえば、 >ls file01.dat file02.dat >cat * としたとき、catの表示順は必ず、 file01.dat の次に file02.dat である(つまりソート順)、と決まっているのでしょうか? もしくは不定なのでしょうか。 よろしくお願いいたします。 |
>>2705 ゆくま > file01.dat の次に file02.dat である(つまりソート順)、 > と決まっているのでしょうか? はい、ソートされます。sh・csh・tcsh・bash・zsh・ksh など全てのシェルでソートされるはずです。 ただし cat *2* *1* だと file02.dat file01.dat の 順になります。 |
>>2706 68user レスありがとうございます。 これってやはり考えるまでも無い当たり前のことなんですかね。 これまで何年かUNIXを使ってきて、そうだとは思っていた のですが、改めて調べてみたところ、そのことを明記している ようなドキュメントを見つけることができなかったのです。 おそらく何らかのパブリックなドキュメントには明記してある ことだとは思うのですが。。。 ご存知の方はいらっしゃいますでしょうか? |
>2707 > おそらく何らかのパブリックなドキュメントには明記してある > ことだとは思うのですが。。。 手元にあるマニュアルを調べてみました。 FreeBSD 4.5-RELEASE の tcsh(1) ファイル名置換 単語が `*', `?', `[', `{' のいずれかの文字を含む場合、また は 先頭が `~' で始まる場合、その単語はファイル名置換 (ある いはグロブ (globbing) と呼ばれます) の候補になります。この ような単語をパターン (グロブパターン) と見なし、そのパター ンにマッチするファイル名のリストをアルファベット順で整列し たもので置き換えます。 FreeBSD 4.5-RELEASE の csh(1) ・・・発見できず Solaris2.6 の sh(1) [ファイル名の生成] コマンド実行に先立ち、各コマンドワードは、 *、?、および [ を 含んでいないかチェックされます。これらの文字のいずれかがある と、そのワードはパターンとみなされます。このワードは、パター ンと一致する、辞書編集方式の順にソートされたファイル名に置換 されます。 Solaris2.6 の csh(1) ・・・発見できず bash-2.0.5a Pathname Expansion After word splitting, unless the -f option has been set, bash scans each word for the characters *, ?, and [. If one of these characters appears, then the word is regarded as a pattern, and replaced with an alphabetically sorted list of file names matching the pattern. |
>>2708 68user > FreeBSD 4.5-RELEASE の csh(1) ・・・発見できず FreeBSD 4.5-RELEASE の sh(1) ・・・発見できず の間違いです。 |
>2708 >手元にあるマニュアルを調べてみました。 わざわざありがとうございます。 なるほど!灯台下暗しでした(申し訳有りません、、、)。 ちなみにこちらの手元も調べてみましたところ、 Solaris7 のcsh(1) [ファイル名置換] *、?、[、または { のうちのいずれかの文字を含むクォートされ てい な い ワード、または ~ で始まるワードは、以下のように アルファベット順にソートされたファイル名のリストに展開 (グ ロビングとも呼ばれる) されます。 とありました。 お手数をおかけしました。 助かりました! |
>2710 追記です。 当方のSolaris2.6のcsh(1)にもSolaris7と同じ表記が見つかりました。 ということは、68userさんの環境と異なるのでしょうか? |
HP-UXのawkコマンドのパターン指定ではシェル変数は使えないのでしょうか?下記のような条件で、いろいろ形を変えて試して見たのですがまったくうまくいきません。分かる方教えてください。 例:awk '$1<=${hensuu}{print $0}' file.txt ※${hensuu}=1,2,3,4,5・・・・・・ |
>>2711 ゆくま > 当方のSolaris2.6のcsh(1)にもSolaris7と同じ表記が見つかりました。 こちらの Solaris2.6 にも同じ記述がありました。流し読みしたので 見逃していたようです。 >>2712 G シェル変数は、シェルのための変数であって、シェル以外からはどうやっても 参照できません。よって、 % env MAX=123 awk '$1<=ENVIRON["MAX"]{print $0}' file.txt などと環境変数を使うか、 % awk -v max=123 '$1<=max {print $0}' file.txt で変数を指定しましょう。 |
>>2713 68user ありがとうございました。教えていただいたコマンドで上手くいきました。 |
こんにちは、時々見させてもらってます PerlでIO::Socketを使っているのですが、 HTTPのPersistent connectionの様な、「サーバーから一旦データが 送られてきた後のコネクションは維持しつつも無通信な状態」 といった状態をプログラム側で判別できずに困ってます この間にsysreadなどを使うとデータが送られてこないためずっと 待ってしまいますので… IO:Selectのcan_read($timeout)も試してみたのですが、 この様な状態ではしっかりとソケット識別子を返してしまう みたいで結果としてsysreadの所に行ってしまってそこで止まってしまう 様な感じでした。 何か良い知恵はないでしょうか?? まあHTTPならcontent-lengthを見て1オブジェクトの受信の終わりを判別すれば良いんでしょうけど… |
>>2715 STP > この様な状態ではしっかりとソケット識別子を返してしまうみたいで ということはないと思いますが、問題が発生する最小限の プログラムを見せていただければ何かわかるかもしれません。 # あと、OS や perl のバージョンなども。 |
こんにちは、時々見させてもらってます。 PerlでHTTPSクライアントを作成したいのですが サンプルありますでしょうか |
>>2717 よー LWP? |
>>2717 よー 何をどう書いたのか全く覚えていませんが、LWP と Crypt-SSLeay で できるようです。 >>1848 d-jiro >>1849 68user >>1854 d-jiro >>1855 68user |
Socketを用いたPerlでHTTPSクライアントのサンプルは ありませんか? |
>>2720 よー http://www.thomas-fahle.de/pub/perl/LWP/HTTP/HTTP_Get.html#https |
68userさん,こんにちは. 失礼ながらご連絡事項をこちらでお伝えします. このサーバーがポートスキャンの踏み台にされたそうです. カーネルも古いし本格的な対策は無理だと思いますが そちらでできる対策があれば試していただけませんか. > 早速ですが、サンライズシステムズ 様の配下にある > 210.249.139.22 というホストから > ポートスキャンが行われた模様との連絡が入りました。 連絡経路はTTCNパワードコムの鎌田さん->両毛の新堀さん->私の順です. |
実は5/30に胆嚢摘出の手術を受けまして,入院中なのです. 動くに動けない感じで,今も看護婦の目を盗んで携帯でつないでいます. 何かありましたらお気軽にメールください. |
>>2722 Netboy 現在対応中です。ひととおり終わりましたら作業項目を書き 込みます (メールの方がよろしければメールします)。 > 実は5/30に胆嚢摘出の手術を受けまして,入院中なのです. 大変ですね。御大事に…。 |
>>2722 Netboy メール送りました。 |
ただ今再起動しました |
利用者の方へ。 サーバを置いてあるところの管理者の方が、2002/06/02 にマシンの 電源を落とされたため、しばらくアクセスできない状態になっていました。 |
PerlでのFTP接続を行いファイル転送をしたいのですがうまくいかず 困ってます。 $proto = getprotobyname('tcp'); $port = getservbyname('ftp', 'tcp'); $iaddr = inet_aton($hostname) or die "$hostnameのアドレス取得失敗"; $paddr = pack_sockaddr_in($port,$iaddr); socket(SOCKET,PF_INET,SOCK_STREAM,$proto) or die "socket失敗"; connect(SOCKET, $paddr) or die "connect失敗"; # ファイルハンドル COMMAND をバッファリングしない select(SOCKET); $|=1; select(STDOUT); #---------- ユーザ認証 ---------------------- print SOCKET "USER $username\r\n"; print SOCKET "PASS $password\r\n"; #------------------------------------------ と、ユーザー認証まではいけるでのすがその後で エラーとなってしまいます。 ちなみにユーザーとパスともにあっているはずなんですが・・・。 情報不足かと思いますが何か思い当たることがありましたら 指導のほどお願いいたします。 |
↓のNo.2728の件です。 接続まで何とかできたのですがファイルをアップロードしたいのですが どのようにすればいいのかわからなくて・・・。 教えていただけませんか?? |
>>2729 yun 2729 は 2728 の補足ですか? それとも 2728 の件は解決したのですか? エラーが出るのですか? やり方がわからなくて先に進めないのですか? |
接続後のPUTの仕方がわからないので先にすすめないんです。 ん〜情報が少なくて申し訳ないです。 何かわかることがありましたらお願いします。 |
いつも唐突な知るもんですいません。 「日本語情報処理」という本を読んでいたら、 EUC を内部コードとして使うコンピューター(?)か ソフトウェア(?)として 「焼き獣ホスト(YKH)」というのが出てきたんですが、 焼き獣ホストで Google しても見つかりません。 これ、何かご存知の方はいらっしゃいますか? |
>>2731 yun > 接続後のPUTの仕方がわからないので先にすすめないんです。 http://X68000.startshop.co.jp/~68user/net/ftp-1.html を読んでください。 >>2732 ふくし >「焼き獣ホスト(YKH)」 これですかね。端末エミュレータみたいですね。 http://www.geocities.com/Tokyo/Flats/7725/view_info.htm YKH is a small application of this kind, that emulates Japanese VT-320 terminal under MS-DOS and is freely distributed under the terms of the GNU general public licence |
はじめまして。リュウと申します。 初心者で申し訳ないのですが、質問があります。 HP9000にHP-UX11.0のコールドインストールをしているのですが、 毎回リブート後にメニューが出るようになってしまいました。 メニューを出さずに通常に内蔵ディスクから起動されるようにするには、 どのようにしたらいいでしょうか? あと、 Interact with IPL?> で、'Y'を押して IPL> から抜け出せなくなってしまいました。 exit,quitともダメです。。。 あわせてよろしくお願いします。 乱文で申し訳ございません。 |
ほんとに初心者です、おしえてください 課題でechoサーバ及び、クライアントのプログラムをC言語とPerlで作成する。というのがでたのですが、echoサーバはこのHPでプログラムが掲載してあるのでなんとか自分でやってみようと思うのですが、この場合のクライアントとはどのようなプログラムになるのでしょうか? よろしければおしえてください。 宜しくおねがいします。 |
もう一つ質問なのですが。 課題2 ・chargenサーバ及び、クライアントのプログラムをC言語とPerlで作成する。 フリーなUnix系OSで動作する事。 chargenサーバはデーモンとして動作する事。 chargenサーバは、標準telnetコマンドとも通信可能な事。 chargenサーバは、ログ機能を有する事。 chargenクライアントは通信先がchargenサーバと判明した時点で通信を終了させる 事。 という課題もでています。初心者の僕にはまったく課題の意味がわかりません。どなたかおしえてくれないでしょうか?たびたびすいません。宜しくお願いします。 |
>>2734 リュウ せっかく「Interact with IPL」というキーワードがわかっているのですから、 それで検索しましょう。ついでにキーワードに「HP-UX」も付けておきましょう。 そしたら一発でひっかかります。 http://www.google.com/search?hl=ja&q=Interact+with+IPL+HP-UX&lr=lang_ja >>2735 だいすけ > この場合のクライアントとはどのようなプログラムになるのでしょうか? http://X68000.startshop.co.jp/~68user/net/sample/http-client.pl をちょっといじれば、echo クライアントになります。 >>2736 だいすけ chargen については RFC864 をどうぞ。 http://www.goto.info.kanagawa-u.ac.jp/~horiyuki/rfc/rfc864j.txt その他の疑問点については、まず基本となる雛型を作ってみてから、ですね。 |
たびたびすいません。このような課題のクライアントのことなのですが? どのようなプログラムになるのでしょうか? echoサーバ及び、クライアントのプログラムをC言語とPerlで作成する。 フリーなUnix系OSで動作する事。 echoサーバはデーモンとして動作する事。 echoサーバは、標準telnetコマンドとも通信可能な事。 echoサーバは、ログ機能を有する事。 以上は必須機能です。 余裕があれば、 サーバには大文字、小文字変換機能をオプションで持たせる。 クライアントは文字列をファイルから読み取り、送信するオプションを付ける。 等、面白い機能を付加して下さい。 |
ほんとうに初心者なのでchargenについてはプログラムを書き始めることもできません。どうかたすけてください。 |
仕組みやプログラムを理解する手助けならできますが、答えをそのままあげる ことはできません (おもしろくないから)。 宿題スレなら、誰かがソースを書いてくれるかもしれません。 http://pc.2ch.net/test/read.cgi/tech/1020785918/l50 てゆーか、高専生か大学生かと思っていたんですが、社会人なのですか? 自分なりにある程度調べた上で、 「ここまでは理解できたけど、この部分がわからないから教えてくれ」 という質問の仕方を身につけた方がよいと思いますが、まぁいらぬお節介でしょうね。 |
はじめまして。 UNIXのftpコマンドについて、お聞きしたいことがあります。 ftpコマンドを使用して、WinNTサーバからUNIXへデータを getしているのですが、以下の事象が発生しています。 ・対象ファイルが0バイトの時、getコマンド終了後、そのまま ftpのプロセスがハングアップしてしまうことがある。 シェル内で以下のように使用しています。 ftp -n <<EOF open [IPアドレス] user [ユーザ名] [パスワード] binary get [getするファイル名] [保存するファイル名] close quit EOF 現象を見る限り、getコマンドまでは完了してるようです。 psコマンドにて、ftpのプロセスを検索すると、 ftp -n が残ってしまっています。 UNIX側からタイマーなどでftpのセッションを切ることは可能 なのでしょうか? |
>>2741 バクモン それって、要は ftp か ftpd のバグですよね。 ftp -n < input & pid=$! sleep 300 if [ `ps -p $!` ]; then kill $! fi 的な監視をするのが普通でしょうか。 |
>>2742 68user 早速のご回答、ありがとうございます。 確かにftpプロセスの監視しかないかな、と思います。 そこで、再度質問なんですが、このftpコマンドを使用している シェルがCシェルで書かれています(すいません、先に言って おくべきでした)。 Cシェルでは直前に実行したコマンドのプロセスIDを取得する 方法はあるのでしょうか? ($!はKシェル、Bシェルのみの文法と調べたら書いてありました) |
echoサーバの 3: #include <stdio.h> 4: #include <netdb.h> 5: #include <sys/types.h> 6: #include <sys/socket.h> 7: #include <sys/uio.h> 8: #include <unistd.h> 9: #include <sys/param.h> 10: #include <netinet/in.h> 11: #include <arpa/inet.h> この部分なのですが、#include <stdio.h>はわかるのですが、 他の物は参考書も見ても掲載されていません。 なんなのでしょうか? |
昨日から、UNIXを勉強しだしました。大変、初歩的な質問かもしれないのでごめんなさい。 アクセス状態が-rw-------のファイルをmoreで表示させたいのですが、私はファイルの所有者ではないので表示させることができません。chmodは使わないでアクセスを出来るようなのですが、どうすれば良いのですか? どなたか教えてください。よろしくお願いします。 |
>>2745 シゲ すみません。解決しました。 パスワードが解ればrootで入れるんですね。 |
>>2743 バクモン > Cシェルでは直前に実行したコマンドのプロセスIDを取得する > 方法はあるのでしょうか? $status です。 >>2744 だいすけ 例えば、関数 listen を使いたい場合は、man listen として、 include すべきファイルを調べます.同様に accept や bind など、 使用している関数全てについて調べていくと、それだけのファイルを include する必要がある、ということです。 |
ここのサイトのC言語のHTTPクライアントを使わせてもらって色々勉強させてもらってます。そこで質問なのですが、imodeのURL例えば(http://mobile.yahoo.co.jp/)のレスポンスが返ってくるプログラムを作ろうとしているのですが、どうも、302 FOUND がでてしまい、うまくいきません。どのように解決したらよいでしょうか? |
>>2748 木場 Locaiton: ヘッダに示されている URL を読み込めばよいです。 |
前回のことについての質問のつづきですが 僕のもっている参考書には掲載されてないのですが、 僕のもっている参考書が古いということでしょうか? |
>>2747 68user ご回答ありがとうございます。 ただ、$statusは直前のコマンドのリターン値がセットされる と認識しています。 Cシェルで直前のプロセスIDを取得するには、プロセスをバック グラウンドで動かすようにして、その際に標準出力されるプロセス IDをテキストファイルにおとして、grepなりをする方法しか ないかな、と考えています。 そこで、以下を考えました。 ftp -n <<EOF & open [IPアドレス] user [ユーザ名] [パスワード] binary get [getするファイル名] [保存するファイル名] close quit EOF これを実行すると [1] 10161 と言った形でプロセスIDが出力されます。 ただ、これをテキストファイルに落とす方法がわかりません。 多分、リダイレクトをするのだと思っているのですが、どこに それをうめこめばいいのでしょうか? |
それとも C言語で新しくできた関数なのでしょうか? |
>>2751 バクモン ああ、そういう意味ですか。 tcsh だと $! で取れますが、csh では無理かもしれないですね。 jobs -l だと取れそうですが、どうでしょうか。 ただ、僕なら監視用プロセスを別に起こします。 例えば、 mkdir /tmp/.ftp-lock ftp -n <<EOF open .. quit EOF rmdir /tmp/.ftp-lock として、監視プロセスは n 秒前より過去に /tmp/.ftp-lock が作成されて いたら、 kill `ps -ef | grep get-file.sh | grep -v grep' する、とか。 もちっと確実にするなら ln -s $$ /tmp/.ftp-pid ftp -n <<EOF open としてプロセス番号を特定できるようにする方法もあります ($$ は sh の プロセス番号なので、$$ の子プロセスを kill する必要がありますけど)。 >>2750 だいすけ 「何が」参考書に掲載されていないのですか? netdb.h? listen? accept? ここらへんの関数については規格化されていません。よって、UNIX では 使えても Windows では関数そのものがなかったりします。 例えば 「ANSI C マニュアル」 といった書名ならば、規格化された関数については網羅しているかもしれませんが、 規格外の関数については載っていなくても不思議ではありません。 |
5: #include <sys/types.h> 6: #include <sys/socket.h> 7: #include <sys/uio.h> 8: #include <unistd.h> 9: #include <sys/param.h> 10: #include <netinet/in.h> 11: #include <arpa/inet.h これらが参考書に掲載されてないという意味だったのですが manコマンドでしれべていくのですね。 どうもありがとうございます。 |
はじめまして。 まだ、UNIXをはじめたばかりの初心者です。 いま、windows環境のマシンからtera termを使ってUNIXマシンにpostgressqlをインストールしています。そこで、「カーネルのコンフィギュレショーションファイルをチェックする」と書かれているのですが、これってどうやるのですか? どなたか教えてください。 よろしくお願いします。 |
>>2755 ビギナー > 「カーネルのコンフィギュレショーションファイルを > チェックする」と書かれているのですが、これって > どうやるのですか? OS によって違います。 http://osb.sra.co.jp/PostgreSQL/Manual/PostgreSQL-7.1-ja/kernel-resources.html をどうぞ。 |
>>2756 68user ありがとうございます。 |
ご回答ありがとうございました。 今もちょっとわからないとこがあるのですが、 もうちょっと考えてわからなかったら、 聞きにきます。 |
再び質問です。 先ほどの質問と症状は似ているのですが、imodeのURLで(http://mobile.yahoo.co.jp/yahoo/index.html)のリクエストを出すと HTTP1.0 302 FOUND DATE Location http://mobile.yahoo.co.jp/error/404.html Conection: close のレスポンスが返ってきて、locationの部分を入れても実際のimodeのURLがゲットできなくて困っています。どのようにC言語のHTTPクライアント(1) のソースをいじればちゃんとしたレスポンスが得られるでしょうか? よろしくお願い致します。 |
初めまして黒木と申します。UNIX初心者です。 /usr/dict/words という辞書ファイルからEが2個以上出て、AとDとTがそれ ぞれ1個以上出て、最初がLで始まる単語が書かれてる行を見つけるには、 どういう1行コマンドを書けばよいでしょうか?よろしくお願いします。 (但し、文字は全て大文字・小文字を区別しない) *ファイルは何でも良いので、見つける方法が知りたいのです。 |
>>2759 きば > imodeのURLで(http://mobile.yahoo.co.jp/yahoo/index.html)の > リクエストを出すと ブラウザで http://mobile.yahoo.co.jp/yahoo/index.html を 見ると、404 not found になるので、 > Location http://mobile.yahoo.co.jp/error/404.html 当然そうなると思いますよ。 どこからこの URL が出てきたのでしょうか? >>2760 黒木 grep -i 'E.*E' /usr/dict/words | grep -i A | grep -i D | grep -i T | grep -i '^L' でどうでしょう。 |
すばやいレスありがとうございます。 http://mobile.yahoo.co.jp/yahoo/index.html ↑はimodeの使える携帯端末で見ることの出来るヤフーのカテゴリ検索のサイトです。 上記のURLのリクエストを送ったら携帯端末で見ることの出来るサイトをレスポンスしてくれるようにしたいのです。 imode専用のHTTPクライアントを68userさんのC言語のHTTPクライアント(1)を参考に作ろうと思っていて、とりあえず上記のURLで実験して作ろうと試みているのですが、なかなかうまくいかないので、68userさんの力をかして頂きたいと思う次第です。 |
>>2762 きば i-mode 端末のみで利用可能なページということですね? なら、 http://www.nttdocomo.co.jp/p_s/imode/tag/s2.html を参考にして、 GET /yahoo/index.html HTTP/1.0 User-Agent: DoCoMo/1.0/N209i などなど。 |
はい。imodeのみ利用可能なページです。 なるほど、、 urlをみてもうちょっとがんばってみます。 貴重なご意見ありがとうございます。 |
>>2761 68user 有難う御座いました。これで良いですね。 |
>>2753 68user ご回答ありがとうございます。 以下のようにロジックを変更しようかと思います。 ・ftpをバックグランドで動かす ・jobs -lの結果をテキストファイルに落とす ・5分sleepする(※1) ・grepとawkを使用して、テキストファイルからftpのプロセスIDを取得する ・ps -p にて取得したプロセスIDのプロセス生存を確認 ・ps -p のリターンコードが0以外であればkillするif文をおこなう(※2) こんな感じかな、と考えています。 怖い部分は※1,2です。 ※1:とりあえずユーザさんには現在の環境でgetが3分を越えることは ないといわれているので、安全を見て5分sleepさせるようにしたが 本当に大丈夫か? >>ユーザさんがOKと言っているので、問題なし・・・かな。 ※2:ps -p [プロセスID]でHITしなかった場合、リターンコードは必ず 0以外となる。逆にHITした場合は、必ず0となる。 >>このハンドリングは正しいのか、ちょっと自信なし。 色々とご回答ありがとうございました。 |
はじめまして。 私は、最近linuxを使い出した初心者です。 最近、仕事でpostgresqlをインストールしました。 インストールには成功したようなのですが、 $ pg_ctl startで起動をするとpostgresql(postmaster?)は起動します。 しかし $ postmasterでは、 DEBUG ... DEBUG ... DEBUG ... DEBUG ... と出力され、その後エラーメッセージも何も出なくて、反応が無くなってしまいます。(いつも、ctrl+cで抜けています) どうしてでしょうか? どなたかご存知の方、ご教授ください。 |
書き忘れていました。 バージョン:postgresql-7.11 環境:open blocksというlinuxマシンです。 (redhatでも同様でした) |
>>2767 ユウ > $ postmasterでは、 引数なしで実行したのですか? データベースクラスタの場所はどうやって 指定しているのですか? 環境変数 PGDATA? > DEBUG ... この ... というのは省略したのですか? 本当に ... と表示されたのですか? > その後エラーメッセージも何も出なくて、反応が無くなってしまいます。 それはフォアグラウンドで起動しているだけで、正常起動じゃないんでしょうか? http://osb.sra.co.jp/PostgreSQL/Manual/PostgreSQL-7.1-ja/postmaster-start.html > サーバを起動する一番簡単な方法例は、 > postmaster -D /usr/local/pgsql/data > となり、サーバをフォアグラウンドで走らせます。 > バックグランドでpostmasterを起動する には通常のシェルの構文を使います。 また、 % sh -x pg_ctl start として、pg_ctl 内で実行される postmaster の引数を確認するのも よいでしょう。 >>2766 バクモン > ※2:ps -p [プロセスID]でHITしなかった場合、リターンコードは必ず > 0以外となる。逆にHITした場合は、必ず0となる。 > >>このハンドリングは正しいのか、ちょっと自信なし。 問題ないと思いますが、それでも心配なら % ps -p [pid] | grep スクリプト名 などなど。 |
はじめまして。 ネットワークプログラミングの知識を参考にさせてもらっています。 で、ひとつ作りたいプログラムがあって質問させてください。 現在PERLを利用して、TERATERMのマクロのようにプログラムの出力結果を分析して、 次のバッチの投入のような監視?ツールを作りたいと思っています。 で、ソケットをつかってポート23にアクセスしに行くのですが、 固まってしまいます。ポート80や110にはここのサイトの見本をまねて アクセスすることは出来るのですが・・・。 shでやるというのも考えられるのですが、suではパスワードを聞いてきますし、 別のアプリ実行しても制御が完全にアプリ側に移るんで無理ですよね? ポート23にアクセスして結果をやり取りするにはどうしたらよいのでしょうか? どなたかお分かりでしたらヒントをお願いします。 |
>>2769 68user お返事ありがとうございます。 質問の書き方が下手で、申し訳がありません。 PGDATA=/usr/local/pgsql/dataを設定していて $ postmaster は引数なしで実行しています。(pg_ctl startもそうです) DEBUG...はDEBUGのあとの出力を省略させていただきました。 UNIXに関しても、パソコンに関しても本当に初心者で、何がどうなってるのかわからない状態なのですが、長くなりますが詳しく書かせていただきます。 $pg_ctl startを実行すると postmaster successfully started と出力されたあとに DEBUG...(省略しています)と5行でて、そこでreturnキーを押下すると [postgres@AAAServer postgres]$ と次のコマンド入力が可能になります。 しかし $ postmasterを実行しても postmaster successfully started というメッセージは出ないで、 DEBUG...(省略しています)と5行でてreturnキーを押下しても [postgres@AAAServer postgres]$ とはならず、改行されるだけです。 (以上は、openblocks,redhat両方共の環境です) いろいろ試してみると、 redhat環境では、/usr/local/pgsql/data/postgresql.confに silent_mode = on tcpip_socket = on syslog = 2 と追記して $ postmasterを実行すると DEBUG...(省略します)とは出力されないで、 [postgres@AAAServer postgres]$ となり、postgresqlは起動しました。 そこで、openblocksでpostgres.confを上記のように変更して $ postmasterを実行しました。すると FATAL 1: 'silent' is not valid option name とエラーが帰ってきました。 $pg_ctl startで実行した結果も、 postmaster successfully started と出力された後に、同様のエラーが帰ってきました。 (postgres.confの変更内容のsilentをコメント化したらsilentの下に追記した、tcpip_socketで同様のエラーが起きます。) 申し訳がありませんが、ご教授ください。 |
お返事ありがとうございます。 質問の書き方が下手で、申し訳がありません。 PGDATA=/usr/local/pgsql/dataを設定していて $ postmaster は引数なしで実行しています。(pg_ctl startもそうです) DEBUG...はDEBUGのあとの出力を省略させていただきました。 UNIXに関しても、パソコンに関しても本当に初心者で、何がどうなってるのかわからない状態なのですが、長くなりますが詳しく書かせていただきます。 $pg_ctl startを実行すると postmaster successfully started と出力されたあとに DEBUG...(省略しています)と5行でて、そこでreturnキーを押下すると [postgres@AAAServer postgres]$ と次のコマンド入力が可能になります。 しかし $ postmasterを実行しても postmaster successfully started というメッセージは出ないで、 DEBUG...(省略しています)と5行でてreturnキーを押下しても [postgres@AAAServer postgres]$ とはならず、改行されるだけです。 (以上は、openblocks,redhat両方共の環境です) いろいろ試してみると、 redhat環境では、/usr/local/pgsql/data/postgresql.confに silent_mode = on tcpip_socket = on syslog = 2 と追記して $ postmasterを実行すると DEBUG...(省略します)とは出力されないで、 [postgres@AAAServer postgres]$ となり、postgresqlは起動しました。 そこで、openblocksでpostgres.confを上記のように変更して $ postmasterを実行しました。すると FATAL 1: 'silent' is not valid option name とエラーが帰ってきました。 $pg_ctl startで実行した結果も、 postmaster successfully started と出力された後に、同様のエラーが帰ってきました。 (postgres.confの変更内容のsilentをコメント化したらsilentの下に追記した、tcpip_socketで同様のエラーが起きます。) 申し訳がありませんが、ご教授ください。 |
>>2770 せと > で、ソケットをつかってポート23にアクセスしに行くのですが、 > 固まってしまいます。 要は telnet クライアントを作りたいと。 接続後、telnet プロトコルに従ってネゴシエーションをする 必要があります。詳細は http://www.faqs.org/rfcs/rfc318.html perl のモジュールを使うなら Net::Telnet がよいでしょう。 ただし、telnet クライアントができても、文字の送信/文字の 受信が可能になるだけです。エラー発生の判断などはやはり プログラム側で行わなくてはいけません。 というわけで、素直に > プログラムの出力結果を分析して、次のバッチの投入のような監視?ツール を行うスクリプトを作った方がよいでしょう。 > suではパスワードを聞いてきますし、 > 別のアプリ実行しても制御が完全にアプリ側に移るんで無理ですよね? 危惧しておられることがよくわからないのですが、普通はスクリプトなどを 書けば実現可能です。 >>2772 ユウ > $ postmasterを実行しても > postmaster successfully started > というメッセージは出ないで、 > DEBUG...(省略しています)と5行でてreturnキーを押下しても > [postgres@AAAServer postgres]$ > とはならず、改行されるだけです。 それはそれで正常です。キーの入力をそのアプリが奪うような状況を 「フォアグラウンドで動作している」と言います。逆に、アプリが 裏で動いているような状況を「バックグラウンドで動作している」 と言います。 http://osb.sra.co.jp/PostgreSQL/Manual/PostgreSQL-7.1-ja/postmaster-start.html にある通り、postmaster を実行すると、単にフォアグラウンドで 動くという仕様になっているだけです。postmaster を実行した後、 別ウィンドウで psql を実行すると、ちゃんと接続できるはずです。 > $ postmasterを実行しても > postmaster successfully started > というメッセージは出ないで、 postmaster successfully started という文字列を表示をしているのは pg_ctl だからです。 postmaster をバックグラウンドで動かすには、 - postmaster & として起動する。 - postgresql.conf を修正して silent_mode=true とする。 - postmaster -S とする。 - postmaster -c silent_mode=true とする。 などの方法があります (true と on は同じ)。全てマニュアル http://osb.sra.co.jp/PostgreSQL/Manual/PostgreSQL-7.1-ja/runtime-config.html に書いてあります。 > FATAL 1: 'silent' is not valid option name 'silent_mode' is ... ならわかりますが、`silent' is ... となるということは、 postgresql.conf に silent=true などと書いていませんか? > tcpip_socketで同様のエラーが起きます。 ということは、その上にある行がおかしい可能性もあります。 とにかく、まずは postgresql.conf への追加時に修正ミスをしていないかを 疑うべきでしょう。 あとは、OpenBlockS にインストールされている PostgreSQL のバージョンと RedHat にインストールされている PostgreSQL のバージョンが違うとか。 |
>>2773 68user ご指摘の通りでした。 silent_mode,tcpip_socketにのエラーは直りましたが、syslogでエラーが出る状態です。なぜか解らないですけど、redhatで成功しているpostgresql.confをコピーしてきます。 ありがとうございました。 |
初めて投稿します。Solarisでハードウェアの診断をする機能があると聞きました。旧SUN OSでは、ダイアグというそうですが、オンボードやHDDの状態を診断して、異常個所をリストアップしてくれるような機能があれば、教えてちょんまげ!何卒よろしくお願いします。 |
echoサーバ(C言語)でのことですが #include <sys/uio.h> #include <unistd.h> #include <sys/param.h> #include <netinet/in.h> #include <arpa/inet.h> これらがなくても正常にコンパイルできるのですが、必要なのでしょうか? |
ご指摘の通りでした。 silent_mode,tcpip_socketにのエラーは直りましたが、syslogでエラーが出る状態です。なぜか解らないですけど、redhatで成功しているpostgresql.confをコピーしてきます。 ありがとうございました。 |
#2776 >これらがなくても正常にコンパイルできるのですが、必要なのでしょうか? windowsでならば必要ないと思います。 |
こんばんは。 最近はお一人で回答をしておられるようでおつかれさまです >68user とかいいつつ私も質問しに来てるんですが…。 で早速ですがどなたか知恵をお貸しください。 現在P4マシン上でRedhat7.1.94を利用しており、100BASEカードを使って LAN経由でインターネットにアクセスしています。 IPはDHCPサーバから割り振られているのですが、Netscapeなど、 どうやらgethostbynameを呼んでいると思われるプログラムが 名前解決できずに困っています。 ただしnslookupやhostコマンドでは正しく名前解決できる上、 Netscape等からも数字のIPを直に打てばアクセスできています。 試しに/etc/hostsに[216.239.33.101 www.google.co.jp]を記述すると、 Netscapeからもアクセスできました。 dhcpのクライアントにはdhcpcd-1.3.18を[/sbin/dhcpcd -n eth0]で 起動していて、自ホストのIPは正しく取得できているようです。 /etc/host.confには[order hosts,bind]のみを記述しており、 resolve.confにはWin2k動作時に調べておいたLAN内DNSサーバの指定 [nameserver 192.168.0.1]を記述しています。 自分なりに無い知識をいくらかでも埋めようとgoogleで探し回ったのですが 全てに目を通すほどパワーが続きませんでした。 どうぞよろしくお願いします。 |
はじめまして。 あまりにも簡単な質問のようで申し訳ないのですが、 「ソケット」っていうのは、「IPアドレスとポート番号を組み合わせたもの」でしょうか? どこで読んだのか、「ポート番号とプロセスIDを組み合わせたもの」という考えが頭を離れず、 自分でもいろいろ調べたのですが、解答は見つかりませんでした。 もしかしたら見当違いな質問なのかもしれませが、 ソケットの知識をお持ちの方がおりましたら、ご教授願います。 どうぞよろしくお願い致します。 |
>>2779 has ども。最近会社でもやる気ゼロなので、回答なぞしてるんですわ。 もしかして Netscape を起動した後に dhcp クライアントを起動 してません? もしそうなら順番を逆にしてみるとか。 そうでないなら、tcpdump の結果を見せてくださいな。 あと、あらゆる gethostbyname が失敗してますか? % perl -e "use Socket;print inet_ntoa(inet_aton('www.jp.freebsd.org'))" もダメですか? >>2780 aozora > 「ソケット」っていうのは、「IPアドレスとポート番号を組み合わせたもの」 > でしょうか? 「IP アドレスとポート番号を組み合わせたもの」は相手を一意に特定するための 識別子で、たとえるなら電話番号です。 # ただし、それは IP の話。UNIX ドメインソケットでは、ファイルが識別子です。 「ソケット」は、通信路の端点で、たとえるなら電話機です。 これを同じものと考えてしまうと、例えば bind(2) が理解できなく なります。bind(2) はたとえるなら電話機に電話線をつなぐという 感じでしょうか。 > 「ポート番号とプロセスIDを組み合わせたもの」 違います。1プロセスから複数のソケットを使うことができますから。 |
初めて書き込みをします。 UNIXは、まだ初心者です。 お聞きしたい事を書き込みます。 現在、「share」コマンドでディレクトリを共有した後、「dfmount」コマンドで共有されたディレクトリにアクセス中のクライアント名を取り出そうとしています。 「dfmount」コマンドで情報が取れないのですが、どうしてなのでしょうか? 「share」の情報を書き込みます。 > /usr/sbin/share - /share rw=client "File Service" - /home rw=nini:gp7000s,root=gp7000s "File Service" - /shared rw=osl:gp7000s,root=gp7000s "File Service" > |
はじめて書き込みます。 UNIXの初心者シドです。 少し教えてほしいことが有ります。 知っていられる方は、お教え願えないでしょうか? 「share」コマンドを実行して、「dfmounts」コマンドを実行すると何も表示されません。なぜでしょうか? 「share」の情報と「dfmounts」コマンドを実行したときの表示部分を書きます。 > /usr/sbin/share - /share rw=client "File Service" - /home rw=nini:gp7000s,root=gp7000s "File Service" - /shared rw=osl:gp7000s,root=gp7000s "File Service" > /usr/sbin/dfmounts > |
UNIX初心者(パソコンも初心者です)の私にどうか教えてください。 telnetを使って、redhat環境のマシンに接続して操作をしています。 $shutdown -r now で再起動をしました。 すると、立ち上がるまでに10分以上(普通は3分ぐらいだと思う)かかり、立ち上がって普通は [ユーザ名(マシン名)カレントディレクトリ]$ と出るところで、マシン名がnone(本来はmizuho)になっていました。そして、書き込み可能(-wrxwrxwrx)のファイルを操作しようとすると、読取専用とエラーメッセージが出て操作できなくなってしまいました。(全ファイルそうです) いろいろやってみた結果、 $mount -o remount, rw /dev/hda5 / で、書き込み可能にはなりましたが、再起動をすると読み込み専用に戻ってしまいます。 (boot.log,messageを見てみましたが、snmpd shutdown failedと出ています。これって関係ありますか?) どなたか直し方を教えてください。 お願いします。 それと今、boot画面のメッセージをチェックしようとしているのですが、1行ずつ進める方法があるらしいです。これってどうやるのですか? |
はじめまして。 現在どうしても解決できない問題があり、書き込みました。 どなたかご存知の方いらっしゃいましたら、レスよろしくお願いします。 WEBサーバにおいてLocationヘッダで指定したURLへリダイレクトさせて、 かつリダイレクト先へのHTTPリクエストにCookieを設定したいのですが、 設定できない状態になっています。 --------------------------------------------------------- HTTP/1.1 302 Found\n Set-Cookie: test=a; domain=www.hogehoge.co.jp; path=/\n Location: http://www.hogehoge.co.jp\n\n --------------------------------------------------------- のようなレスポンスを返却するCGIを作成したのですが、上記レス ポンスを返すサーバとリダイレクト先のサーバが異なる場合、次の リクエストにCookieが付加されてきません。 Cookieを設定できるのは、自分と同じドメインのみなのでしょうか。 当たり前の事だったら申し訳ありません。 よろしくお願いします。 |
>>2785 うみ > Set-Cookie: test=a; domain=www.hogehoge.co.jp; path=/\n cookie で domain をセットしたことがないのでよく知りませんが、 無理なんじゃないでしょうか。これができるなら、任意のサーバの cookie を外部からセットできることになります。 http://www2.studyinghttp.net/cookies.html を見ると、 server-1.hogehoge.co.jp で Set-Cookie: test=a domain=hogehoge.co.jp という cookie を吐くと server-1.hogehoge.co.jp や server-2.hogehoge.co.jp に送り返されるようになる。 ということではないかと思います。 もし、「Location なしだとうまくいくが、Location ありだとダメ」 ということなら、上記の認識は間違っているんでしょうけど。 >>2784 シゲ > 立ち上がるまでに10分以上(普通は3分ぐらいだと思う)かかり、 このときコンソールには何が出力されていますか? 症状からすると 何かしらのエラーが発生して、Read-only で mount され、シングル ユーザモードで起動しているように見えますが、根本原因がコンソール に表示されていると思います。 >>2783 シド >>2775 レイラ 僕には全くわからない分野なので、お役に立てないようです。 |
>>2786 68user >> 立ち上がるまでに10分以上(普通は3分ぐらいだと思う)かかり、 > 何かしらのエラーが発生して、Read-only で mount され、シングル > ユーザモードで起動しているように見えますが あ、10分待てば起動するのなら違うのかなぁ。 > snmpd shutdown failedと出ています。これって関係ありますか? shutdown 時のエラーなので関係ないと思います (実は関係あったり するのかもしれませんけど)。 > 1行ずつ進める方法があるらしいです。 少なくとも FreeBSD では、Scroll Lock を押せばスクロールが止まり、 カーソルキーで移動できます。Linux ではどうなのかはわかりません。 |
>>2781 68user ソケットについてのご教授、ありがとうございました。 かなり間違って理解していたようですが、 お陰様でソケットの考え方について理解できるようになりました。 |
>>2786 68user お返事ありがとうございます。 早速、scroll lockで画面と止めながら(出来ました!)エラーを見てみました。 Updating /etc/fstab failed to open /proc/partitions:No such file or directory Flushing all current rules and user defined chains:ipachains:incompatible with this kernel Clearing all current rules and user and user defined chains:ipchains:Incompatible with this kernel Starting system logger Errot:MM:mm:core:failed to open semaphore file(read-only file system):OS:No such file or directory mount:special device LABEL=/boot does not exisist Starting crond:crond:can't open or create /var/run/crond/pid:Read-only file system と7箇所でエラーが出てました。 これを見て私がわかったのは、 /proc/partitionsがない /bootの何かがない と言うことです。 見てみると、/proc,/boot両ディレクトリの中がまったく存在しませんでした。 何じゃコリャ! UNIX初心者(パソコンも)にはまったく解りません。 どうか、ご教授ください。 |
こんばんは。 お仕事大変ですな。まあそう腐らずに頑張ってください >68user さてガキの使いですんません。宿題やってきました。 まずdhcpcdですが、psで確認しても起動時から動いているようなので、 Netscapeの方が先ということはなさそうです。 次にperlスクリプトですが、残念ながら、 Bad arg length for Socket::inet_ntoa, length is 0, should be 4 at -e line 1. と表示されます。要は正引きが失敗しているようです。 逆引きは引数の渡し方がわかりませんでした。 # なんせlinuxからはweb検索にも支障をきたしているもので(^^;) 最後にtcpdumpの出力です。tcpdumpを動かしてから、 % host www.jp.freebsd.org のコマンドと、netscapeにてhttp://www.jp.freebsd.org、 http://210.157.158.42/へのアクセスなどをしてみました。 # が、記録に残っているかは私にはわかりませんでした # /usr/sbin/tcpdump tcpdump: listening on eth0 01:47:38.943528 192.168.0.39.3044 > 143.90.129.198.http: . ack 1226176673 win 8576 (DF) 01:47:38.943528 192.168.0.40.32797 > 192.168.0.1.domain: 29608+ PTR? 198.129.90.143.in-addr.arpa. (45) (DF) 01:47:38.963528 192.168.0.39.3276 > 143.90.129.198.http: S 22004303:22004303(0) win 8192 <mss 1460,nop,nop,sackOK> (DF) 01:47:38.983528 43.242.210.37.6699 > 192.168.0.33.1190: . 3236267430:3236268764(1334) ack 2911899325 win 17252 (DF) 01:47:38.983528 192.168.0.33.1190 > 43.242.210.37.6699: . ack 4294960438 win 17520 <nop,nop,sack sack 1 {4294961772:1334} > (DF) 01:47:38.993528 211.129.12.43.domain > 192.168.0.40.32797: 29608 1/2/2 (141) 01:47:38.993528 192.168.0.40 > 211.129.12.43: icmp: 192.168.0.40 udp port 32797 unreachable [tos 0xc0] 01:47:38.993528 211.129.14.134.domain > 192.168.0.40.32797: 29608 1/2/2 (141) 01:47:38.993528 192.168.0.40 > 211.129.14.134: icmp: 192.168.0.40 udp port 32797 unreachable [tos 0xc0] 01:47:39.003528 143.90.129.198.http > 192.168.0.39.3044: . 5897:6433(536) ack 0 win 32767 01:47:39.013528 192.168.0.39.3044 > 143.90.129.198.http: . ack 1 win 8576 (DF) 01:47:39.013528 143.90.129.198.http > 192.168.0.39.3044: . 6433:6969(536) ack 0 win 32767 01:47:39.013528 192.168.0.39.3044 > 143.90.129.198.http: . ack 1 win 8576 (DF) 01:47:39.023528 43.242.210.37.6699 > 192.168.0.33.1191: . 3298096123:3298097457(1334) ack 2981221337 win 17235 (DF) 01:47:39.023528 143.90.129.198.http > 192.168.0.39.3276: S 1909102369:1909102369(0) ack 22004304 win 536 <mss 536> 01:47:39.023528 192.168.0.39.3276 > 143.90.129.198.http: . ack 1 win 8576 (DF) 01:47:39.023528 192.168.0.39.3276 > 143.90.129.198.http: P 1:43(42) ack 1 win 8576 (DF) |