lsコマンドを使用してファイル数を取り出そうとしています。 ファイルが存在しない場合、「No such file or directory」 を表示しないよう、位置パラメータでファイル数を求めています。 ファイルが存在する場合は、問題ないのですが、ファイルが存在 しない場合、必ず”1”となってしまいます。 どうしてなのでしょうか。また、上手くするにはどうしたらよい のでしょうか。 環境は、Solaris8、Bシェル です。 ------------------------ #!/bin/sh # if [ $# -ne 1 ] ; then exit 1 fi ymd=$1 set -- `ls *_$ymd*.csv 2>/dev/null` echo $# |
SPAMひどいですね・・・ >>4652 はじめ 位置パラメタの数は 1 となっているのは スクリプトに引数を与えている為です。 引数を変数に格納後、shift させれば OK です。 |
>>4659 zsh >引数を変数に格納後、shift させれば OK です。 shift するということには気がつきませんでした。 ありがとうございます。 再設定すれば良いのかと思い set '' set -- でやってみたのですが。 |
>位置パラメタの数は 1 となっているのは >スクリプトに引数を与えている為です。 >引数を変数に格納後、shift させれば OK です。 質問では、引数を1つにしていましたが、 引数が複数あった場合は、引数の数分、shiftしないと いけないのでしょうか。 一発で、shiftすること可能なのでしょうか。 |
はじめまして。 [全文検索機能] http://x68000.q-e-d.net/~68user/webcgi/search-1.html ↑のページの eval 法、大変参考になりました。 条件固定でループするときに、余計なものを除けるのがいいですね。 eval ってなんか最終手段っぽくて敬遠してましたが、これからは視野にいれて組んでみたいと思います。 どうもありがとうございました。 |
>>4662 はじめ > 一発で、shiftすること可能なのでしょうか。 shift $# としてください。 |
>>4665 zsh >shift $# ありがとうございます。 |
はじめまして。大変わかりやすいページで非常にためになっております。 さて、間違いがあったら掲示板で指摘してくださいとありましたので、 書かせていただきます。 すでにお気づきなら申し訳ありません。 http-client-2.c のコードで113行目の以下の部分ですが、 113: fprintf(fp, "Host: %s:%d\r\n", host, port); 最後の引数は port ではなく server.sin_port ではないでしょうか? 82〜91行目でポート番号を指定していなかったときの処理がありますが、 ここで server.sin_port を用いられているため 最後まで port は 0 のままでした。 |
こんにちわ。 Solaris7 のftp についてどなたかご存知でしたらご教授ください。 Solaris8 のような、あるユーザにはftpを出来なくするような機能「/etc/ftpd/ftpusers」があるのでしょうか。 皆様よろしくお願い致します。 |
Pthreadにて、スレッドをあらかじめ生成しておいて、 何らかのトリガーで後から起動するって、 どのようにPGすれば良いのでしょうか? よろしくお願い致します。 |
>4669 man が入ってない環境なんでしょうか? docs.sun.com に行くとドキュメント群が公開されてますよ。 http://docs.sun.com/app/docs/doc/805-3173/6j31cpluf?q=ftpusers&a=view を見る限り、solaris 7 付属の ftpd は /etc 直下の ftpusers を 参照するみたいですね。もし、無かったら作ってみましょう。 |
適用済みパッチを調べるものとして ・showrev -p ・patchadd -p の2つがあると思うのですが この2つの違い等を知っている方がいらっしゃいましたら 教えていただきたいです。(UNIX の部屋には無かったので。) patchadd -p は root 権限のみ実行できたという違いだけでしょうか? (新しいパッチでは root でなくとも実行できる。) よろしくお願いいたします。 |
>4672 ご返信が遅くなりまして申し訳ございませんでした。 ドキュメント参考に、ディレクトリ(ftpd)作成、ファイル作成して、 ftp禁止ユーザを制御できるようになりました。 しっかりドキュメントを参照しなければいけませんでした。 これからは、まずドキュメント参照を心掛けたいと思います。 hogeさん、大切なお時間ありがとうございました。 |
こんにちは。 vmstatを起動すると、「vmstat: 0551-129 knlist が失敗しました。」という エラーで情報が取得出来ません。何が考えられますでしょうか。 ちなみにOSの再起動を試みましたが、解決されませんでした。 |
>>4677 まさしくん はじめまして。 御質問のキーワードを検索すると、以下のページがヒットしました。 参考になりませんでしょうか? http://unix.derkeiler.com/Mailing-Lists/AIX-L/2003-12/0105.html |
>>4677 まさしくん 私が使用しているAIXの場合の話ですが、このエラーは「ある種のカーネル・メモリの問題」で発生する様です。 /usr/lib/boot/unix_mp ファイルのサイズがゼロとなっているはずですので、その場合には他のサーバー(同じOSの同じバージョンが良いですね)から同じファイルをコピーすることで復旧出来る様です。 残念ながら、何故このファイルのサイズがゼロになるかまでは分かりませんが、上記の通りファイルをコピーし直すか、/unix のリンクが失われている場合はリンクを張り直すと言うことで解消する様です。 |
はじめまして。 とても初歩的な質問で恐縮ですが、 RedHat Enterprise 4で、/var/log/messages 内に格納される情報が 日付 時間 ホスト名 プログラム名 メッセージ の順番で格納されているのはわかるのですが、 それぞれの最大文字数についてどなたかご教授願えませんか? よろしくお願いいたします。 |
はじめまして。 Solarisのsyslog.confの設定で 特定のログレベルのみを任意の出力ファイルに出力させたいのですが、 いろいろ調べたのですが、途方に暮れています。 Linuxのsyslog.confの設定では、 mail.=debug /ログ出力先 (↑mailのdebugのみ出力。debug以上のレベルも出力しない) という設定方法があるのですが、Solarisで同じような書き方しても 設定ファイルを読み込む時に、 「'=debug'なプライオリティはありません」と怒られてしまいます。 方法がありましたら、どなたかご教授願います。 |
>バンガードさん レスが遅くなり申し訳ございません。 /unixのリンクが無かったので、リンクをはり直したら正常に動くようになりました。 ありがとうございました。 |
psコマンドを使って、システムのcpuなどを5秒毎にログに書き込みたいのですが、どうやればいいのか検討がつきません。どなたかcシェルを利用してできる方法を教えてください。よろしくお願いします。 |
STARTTIMEM=`date +%M` こんにちわ! STARTTIMEM=`date +%M` STARTTIMES=`date +%S` STARTTIME=`expr $STARTTIMEM \* 60 + $STARTTIMES` echo $STARTTIME 以下のようなメッセージが出てしまう。 expr: 文字列に対して演算を行おうとしました。 |
最近Cygwinをはじめた初心者です。 X-Windowなるものの存在を知り、Cでウインドウを出したり直線書いたりしてプログラムを勉強していたのですが、コンパイルして実行しようとすると .... _cygtls::handle_exceptions:Error while dumping state (prbably corrupted stack) Segmentation falu (core dumped) というエラーがでます。 以前までは普通にコンパイル〜実行とできていたのですが・・・ ちなみに startxwin.sh の後に実行してみるとプログラムは動きました。 startxwin.sh などうたなくても実行する方法はありますか?またそのような設定はどうすればいいのでしょうか? |
>> 4684 この掲示板の[使い方]を見ると以下の様に記述されています。 --------------------------------------- UNIX・ネットワーク一般の質問は受け付けていません 当ページのコンテンツに対するご意見・ご指摘のみ受け付けています。 --------------------------------------- 今回の様な質問は受け付けていないはずですよ。 ひとまず、私の使用している環境(AIX 5.1)で検証した結果を提示します。 以下の通り、全く問題なく実行出来ています。 ------------------- [vanguard]> cat test.sh #!/usr/bin/sh STARTTIMEM=`date +%M` STARTTIMES=`date +%S` STARTTIME=`expr $STARTTIMEM \* 60 + $STARTTIMES` echo $STARTTIME [vanguard]> date Thu Aug 17 13:07:36 JST 2006 [vanguard]> test.sh 459 [vanguard]> ------------------- 管理者様 4678,4679も含めて問題がある様でしたら、削除いただいて結構です。 質問だけでなく、回答もこの掲示板の目的に沿っていないと思いますので、私の発言は確認なしに削除いただいて結構です。 |
>>4684 さとしくん No.4688 は No.4686 に対する回答でした。 コメントの仕方を誤っていました。 4684で質問されている5秒毎にpsコマンドを実行し、ログに書き出すのは以下のシェルでいかがでしょうか? -------------------- #!/usr/bin/sh ps > /tmp/ps.log while [ 1 ] do ps >> /tmp/ps.log sleep 5 done |
シェル素人のよしだです。 シェルから、.sqlに値の渡し方を教えてください。 シェルにてテーブル名を入力させて、.sqlにそのテーブル名を渡したいのですが どのようにしたら良いでしょうか? ○test.sh #!/bin/sh echo "テーブル名を入力してください:" read table_name sqlplus -S ユーザ名/パスワード@サービス名 @test.sql >tmp.txt ○test.sql set pagesize 100 select 品目 from テーブル名; exit; |
UNIXの全くの初心者です。失礼を承知で質問します。 スクリプトをmoreで表示すると、文字化けするものがあるのですが、どのようにすれば、見ることができるでしょうか。 ターミナルソフトの設定ではEUC表示設定にはなっています。 システムが作成したスクリプトというものは、ユーザからは見ることができないのでしょうか。 申し訳ありません。お手数ですが、文字化けしない表示方法を教えてください。 宜しくお願いします。 |
>>4691 あゆ どの様な状況になっているのか具体的な状況が見えません。 特定のスクリプトが全て文字化けするのでしょうか? それとも、そのスクリプトの一部が文字化けするのでしょうか? 「file スクリプト名」とするとどうなりますか? ターミナルソフトの設定を「S-JIS」や「JIS」にするとどうなりますか? |
はじめまして。あみと申します。 Solarisに関する仕様を調査していて、この掲示板に出くわしました。 No.3716で以下のような記述がありますが、Solaris9以降の仕様をご存知の方いらっしゃいませんか。 >Solaris8 では sh・ksh・csh いずれも 255 文字の制限があるようで、極めて >不愉快ですね。 Solaris9では入力コンソールでは制限がないように思われるのですが、 入力後にバッファに読み込ませて表示させると途中からしか表示されないという現象がおこっています。 具体的には 1)/export/home/hoge/aaaaa・・・bbbbbbbb←のような300〜400くらいのパスを入力する 2)この入力から java.io.Reader reader = new java.io.InputStreamReader(java.lang.System.in); java.io.BufferedReader buf = new java.io.BufferedReader(reader); String input = buf.readLine(); のように標準出力へ表示する。 3)全てが表示されずに途中の aaaaaaa・・・bbbbb のような表示のみが値として出力されてしまう。 ⇒結果エラーになる どなたか、ご存知の方がいらっしゃいましたら教えてください。よろしくお願いします。 |
>>4667 ビンゴ中西 ご指摘ありがとうございます。とりあえずバグとして登録しました。 http://x68000.q-e-d.net/~68user/bugnote/viewbug.php?projectid=1&bugid=27 時間が取れたときに修正いたします。ありがとうございます。 |
バンガードさんいろいろ説明ありがとうございました。できました!!! |
初めまして。皆様よろしくお願い致します。 現在、solaris8のサーバー管理をやっているのですが、 cpu負荷実績を調べてる上で、 cputstというプロセスが異常に占有しています。cputstってどういうものでしょうか。。?ご教授ください。 |
>>4692 バンガード バンガードさん ご回答頂き、ありがとうございます。 スクリプトは、社内の人が作成したものは見れますが、元々入っているスクリプトは文字化けしてしまいました。 lsコマンドでファイルを見てみると、このように表示されました。 -r-xr-xr-x 1 root bin 39632 9月 8日 2003年 「file スクリプト名」の結果は、以下のようになりました。 ELF 32-ビット MSB 実行可能 SPARC バージョン 1[動的にリンクされています][取り 除かれています] ターミナルソフトは「S-JIS」や「JIS」に設定し直しても文字化けしてしまいました。 お手数おかけして、申し訳ありません。 宜しくお願い致します。 |
>No. 4697 あゆさん それはバイナリのモジュールなので、文字化けして当然です。 ちなみにそういったものをmoreやcatで見ると、文字化けした中で制御コードとして 認識される文字が出力され、下手をするとOSが飛ぶ危険がありますので、 fileコマンドで確認してからの方が良いと思いますよ。 |
>>4697 あゆ 4699 で「まさしくん」が回答されている通りです。 今回の対象ファイルは、バイナリのファイルですので cat や more では見られません。 私もたまに経験しますが、この様なファイルを cat や more で見ると最低でも画面が文字化けしたりしますし、最悪の場合「まさしくん」が言っている通り OS がダウンする可能性もあります。(私はまだそこまで行った経験はありませんが・・・) |
>>3716 68user ksh でも set -o emacs で長いコマンドを受け付けたと思います。 >>4693 あみ ldterm の制限なのでコーディングでどうにかなる問題ではありません。 tcsh/bash のように行を読み込む JNI の関数を作成して、 Java 側から呼び出すしかないと思います。 |
こんばんは。初めて投稿します。 socketで、HTTP の取得を行うプログラムを作成しています。 取得はできたのですが、どうしても取得したデータに、 ゴミデータがまざります。 e05,5d,5, など、ランダムな数値です。 HTMLのタグ括りの中にも、外にも存在しますが、 タグ内には無いようでした。 他の諸センパイ方の情報も参考にさせていただいておりますが、 どうも、有力な手がかりがありませんでした。 何卒、ご教示いただけますでしょうか。 以下、プログラムの抜粋です。 -- $ip = inet_aton($host) || die "NG.\n"; $sockaddr = pack_sockaddr_in($port, $ip); $proto = getprotobyname('tcp'); socket(SOCKET, PF_INET, SOCK_STREAM, $proto) || die "NG.\n"; connect(SOCKET, $sockaddr) || die "NG.\n"; autoflush SOCKET (1); if ($http eq '1.1') { print SOCKET "GET $url HTTP/1.1\n"; print SOCKET "Host: $host\n"; print SOCKET "Connection: close\n"; } else { print SOCKET "GET $url HTTP/1.0\n"; } print SOCKET "Accept: text/html; */*\n"; print SOCKET "\n"; my($op_all) = ''; while (chomp($buf=<SOCKET>)) { $op_all .= $buf; } close(SOCKET); |
>>4703 Perl Queen > e05,5d,5, など、ランダムな数値です。 chunked エンコーディングというものです。簡単に言うと、その後に続く バイト数を 16進表記したものです。もし邪魔なら、HTTP/1.1 ではなく HTTP/1.0 のリクエストを投げればよいです。 |
>>4704 68user 68user 様 ご教示ありがとうございました。 HTTP/1.0 でリクエストすると、あるサイトの例ですが、 「サイトがありませんこのURLにはサイトがありません。または現在準備中です。準備中の場合は後に再度お試しください。」 などと出てしまい、サイトにたどり着くことができませんでした。 都合上、http://www.yahoo.co.jp/ のように、デフォルトURL の指定にしているせいかもしれませんが、アクセス先のURLを 事前に知ることもできません。 あるいは、HTTP/1.0 で、URL指定の際に、何か回避ができたりしますでしょうか。 先に記載抜けていましたが、ポート番号は $port = getservbyname('http', 'tcp'); であらかじめデフォルトを取るようにして、URL内にポートの指定があれば、 それを優先するようにしています。 |
>>4705 Perl Queen HTTP/1.0 で、Host ヘッダを送信してみてください。 http://x68000.q-e-d.net/~68user/net/http-4.html#1 |
solaris10をインストールしたのですがインターネットに接続できません。 Mozilla1.7に何か設定が必要なのでしょうか? 初めまして、ゆうです。 先日初めてsolaris10をインストールしました。 デフォルトルーター:192.168.1.1 solarisPC:192.168.1.12 WindowsPC:192.168.1.11 上記のようにネットワークの設定を行っており、 WindowsPCからはインターネット接続が可能です。 また、WindowsPCとsolarisPCは互いにpingが通っています。 |
>>4707 ゆう ひととおりチェックしてみてください。 http://xxx.upken.jp/report/sol10nw.html |
>>4707 ゆう 経験上 /etc/nsswitch.conf と /etc/resolv.conf の 設定を忘れている人が多い気がします。 |
こんにちわ。OSの再起動をスケジューリングしたいのですが、可能でしょうか?またそれはどのような事をすればいよいのでしょうか。ちなみにsolaris8を使ってます。よろしくお願いします。 |
自分が考えてることは、shutdownコマンドシェルを書いて、cronで実行、スケジュールする方法なんですが、他にありますか?例えば、再起動のスクリプトがあるとか・・・・ |
うまくいきました。どうも失礼します。 |
システム間で電文を送受信する機能の設計を 担当することになり悩んでおります。 「相手システムに電文を送信して、その結果を受信する」または、 「相手から送信されてきた電文を受け取って、その結果を返す」 っといった設計に関してまったくの素人です。 なぜ素人に担当させるのかっといった事で突っ込まれると、 みもふたもないので、その点に関して触れないで下さい m(_ _)m とりあえず、私のレベル(下記)にあった 分かりやすい参考書、またはインターネットのサイトを見て 基礎勉強(下記)からはじめたいのですが、参考資料/サイト の紹介をお願いします。 <開発環境(案)> OS:Solaris 言語:Java(自分からAシステムへ)とPerl(自分からBシステムへ) プロトコル:https <私のレベル> https,SSL、SOAPといった通信用語の意味は知っている(つもり) Javaは実装の経験は無いが解析は出来る。 <知りたいと思っている事> ※「思っている」の意味は、今まで見た事・聞いた事からインスピレーション的に、 「多分、この辺を押さえておかなければいけないんだろうな...」っと思っている事です。 ・送受信処理のJavaの実装例 ・送受信が1秒間に100回あってもレスポンス悪化しない方法 (100回という数値は適当です。普通どれくらいを目標にするのですか?) ・通信エラー等の例外処理の実装方法 (通信エラー発生時の電文はロストするのですか?それってどうリカバリー するのですか? その当たりに関する事) ・「なりすまし,盗聴,改ざん」っといった事に対する防御方法とその実装方法に関する事 |
>>4713 榊 > ・送受信処理のJavaの実装例 送受信の基礎は echo クライアント・サーバや http クライアント・サーバの 実装サンプルを探せばよいでしょう。 データ受け渡しは、http のパラメータで渡す・CSV・XMLRPC・SOAP など実現 方法はいろいろあるでしょうが、それは開発スピードや保守性に関わる部分 なので、はっきり言って何でもいいです。 > ・送受信が1秒間に100回あってもレスポンス悪化しない方法 > (100回という数値は適当です。普通どれくらいを目標にするのですか?) 要件次第です。相手側は何箇所あるのか、MAX で 1秒あたり何回送信する 可能性があるかを考え、安全係数 (1.5 とか) をかけて、それをさばける 構成を考えます。 高速化方法は、https の上に載せるのであれば一般的な web のパフォーマンス チューニングがメインとなるでしょう。 - web サーバチューニング - SSL アクセラレータ導入 - DB チューニング・コネクションプール - web サーバ複数台化 > ・通信エラー等の例外処理の実装方法 > (通信エラー発生時の電文はロストするのですか?それってどうリカバリー > するのですか? その当たりに関する事) ロストする可能性があると考えて設計した方がよいでしょう。 プロトコル的には 1. A -> B データ送信 2. B -> A 完了通知 これだけだと思いますが、アプリの手順まで含めると 1. A -> B データ送信 2. B にて受信済フラグセット 3. B -> A 受信完了通知 4. A が受信完了通知を受け、送信済フラグをセット となると思います。で、 - A は送信済フラグが立っていない場合は再送する - B が既に受信済フラグを受けていたら、無視 or 破棄する などの対処をすると。もし即時の再送がまずいなら、 0. A にて送信日時をセット 1. A -> B データ送信 2. B にて受信済フラグセット 3. B -> A 受信完了通知 4. A が受信完了通知を受け、送信済フラグをセット として、「前回送信から n分経過していたら再送する」などの仕組みも必要と なるでしょうが、その辺は要件次第です。 もちろん、ブラウザのように 「タイムアウトしたらエラー通知するだけ。再送は操作者まかせ」 というのも選択肢としてはアリです。 > ・「なりすまし,盗聴,改ざん」っといった事に対する防御方法とその実装方法に関する事 その辺は SSL でカバーするのがよいでしょう。相手側のなりすましも 防御する必要があるならクライアント証明書を使うとか、アプリレイヤで 認証するとか、固定 IP アドレスなら IP アドレスで制限をかけるとか。 もしネットゲームのように不特定多数が接続し、しかも送信プログラムを 改ざんされる恐れがある場合は大変面倒です。 |
BシェルからPerlを呼び出し実行しています。 Bシェルの変数の値をPerlに引き継がせることはできるのでしょうか。 以下でいうと、nに、”100”を設定しています。 そのnの値である、”100”を渡したいのですが。 -------------------- #!/bin/sh n=100 a=`perl -MPOSIX -e 'print strftime("%Y%m%d", localtime(time-(24*60*60*$n)))."\n"'` echo $a |
>>4715 こう 変数が展開されないのはシングルクォーテーションの中にあるせいなので $n だけ出してあげましょう。 ------ #!/bin/sh n=100 a=`perl -MPOSIX -e 'print strftime("%Y%m%d", localtime(time-(24*60*60*'$n')))."\n"'` echo $a |
はじめまして。 現在少々考えこんでしまっていることがあるのですが DB2でフェデレーション設定を行いたいと思っています。 ただ、フェデレーションという事自体をあまり 明確に理解しておりません。 どなたか、わかり易い説明などしていただけますでしょうか。 ラッパーやらニックネーム作成など色々調べれば出てくるのですが いまいちピンとこないのです。 どなかたご教授願えればありがたいです。 よろしくお願いいたします。 |
Bシェルのプロンプトについて教えて下さい。 Bシェルのプロンプトに日付、時間を表示し、何かコマンドを実行するごとに プロンプトに表示する表示内容を変えたいのですが、可能なのでしょうか。 PS1="[`date{] " とすれば、表示することはできますが、処理を実行するごとに変わりません。 変えたいのですが、方法とかあるのでしょうか。 |
BINDについて教えて下さい。 soralis7でBIND8.1.6の環境でDNSを構築しています。 named.confにzoneで以下の設定を追加してみましたが記述の間違いみたいなエラーが出ました。 zone "ドメイン名" in { type forward; forward only; forwarders { aa.bb.cc.dd; }; }; soralis9でBIND9.3の環境では正常に動作したのでBIND8.1.6ではzoneのforwardは 出来ないのではないかと思っています。 soralis7の環境でBINDをハ゛ーシ゛ョンアッフ゜したら動作するのではないかと思っていますが、 soralis7の環境で正常に動作するBINDは、どのハ゛ーシ゛ョンでしょうか? また、パッチの適応で動作するなどの情報がありましたら教えて下さい。 |
>>4718 こう shシェルのプロンプトでは無理です。 機能がなかったと思います。 表示は出来ても、プロンプトが生成される度に実行されません。 bashを使われてはいかかがですか。 bashのプロンプトで、時間、日付を表示できるエスケープが あったはずです。 |