おはようです。 自作の掲示板ですか?スゴイですね。 .htaccessを見させてもらいました。 htmlやhtmでもSSIが実行できるようになっているみたいですが、 どこかに「サーバの負担が大きくなるから止めた方が良い」みたいな ことが書いてありました。 #いちいちチェックするからでしょうか? あまり気にしなくて良いものなんでしょうか? #どんな風に表示されるのかな、ワクワク^^ |
いえ、自作ではなく http://www2e.biglobe.ne.jp/%7es-hasei/wwwboard.htm のやつです。他のサイトで設置を頼まれたのですが、 念のためこちらで動作チェックをしてます。ですから、 > #どんな風に表示されるのかな、ワクワク^^ いたって普通です(^^; > どこかに「サーバの負担が大きくなるから止めた方が良い」みたいな > ことが書いてありました。 まぁたしかに全ての*.htmlに検索かけてしまうんで、 貧弱なマシンでは .shtmlにした方がいいんでしょうね。 でも、このサーバはCPUが6個、メモリ1Gというふざけた マシンなんで(笑)、負荷についてはあんまり考えてません。 それより問題なのはセキュリティでしょうけど、 もしコマンド実行されてもnobody権限だし、 まぁいいか、という投げやりな姿勢です。 あと、BBS設置した理由に、 UNIXの部屋を作ってから質問やツッコミが2つしか 来てないので、非常にさみしい。 というのがあります(^^; だって結構アクセスしてもらってるのに、リアクションが ないとさみしいなぁ…と、モニタの向こうの人に向かって言って みたりして。 |
こんにちは http://www.sega.co.jp/music/bbs/ http://www.sega.co.jp/cinema/bbs/ http://www.sega.co.jp/gamesoft/bbs/ 一応ご参考までに。 (掲示板の趣旨とは違いますので消して下さってけっこうです。) |
はじめまして何時も「unixコマンド」を拝見して勉強させて頂いております。 出来れば「逆引き」メニューなど作っていただければ有り難いのですが? あつかましい事を申しました(^^;今後ともよろしく御願いしますm(_ _)m |
どもども>竹内@竹内靖工務店さん えっと、逆引きメニューというのは「機能→コマンド名」 という意味でしょうか? それともコマンド名をひっくり返して(muleならelum) 並べることですか?(違うか(^^;) |
その3つだけでいいですか?>calさん 1週間以内に落としますが、それより先に削除されてたらゴメン。 |
はじめまして、素人です。(-_-; LINUXというのはUNIXの中のひとつというような事を聞いたのですが、同時にわりと独自性の強いものとも聞きました。アプリケーションの互換が無くなるほどの差があるのでしょうか? (改行無しテストも兼ねる(^-^;) |
はじめまして、R-Nouveau!さん。かっこいい名前ですね。 > アプリケーションの互換が無くなるほどの差があるのでしょうか? 互換性という言葉を出すなら、何と互換性が高いか、という ことを考えなくてはなりませんね。 まずUNIXにはBSD系とSystemV系があります。 前者はFreeBSD、NetBSD、BSDI、SunOS4(昔のSunOS)、 後者はSolaris、HP-UX、AIXなどほとんど商用OSです。 で、LinuxはBSD系とSysV系のいいとこ取りです。 # 悪く言えばどっちつかずですけど。 というわけで、LinuxのコマンドはSysV系、BSD系、 Linuxオリジナル、の3つが混ざってます。 別の観点から見ると… OS開発者とは別の人が作っているコマンド(例えば muleとかnetscape、procmail、nkf、perl、apache、 tcsh、sendmailなど他にもたくさん)は、動作・ オプションに違いはありません。 その作成者はどの環境でも同じように動くことを望んでいる のですから、当然といえば当然です。 上と同じ理由で、GNUが開発/配布しているコマンド (bash、flex、gcc、fingerなど)も互換性は高いです。 また昔からあるコマンド(lsとかcat)も、結構共通点があります。 んが、OS開発者が自ら作っているコマンド、つまりOSに深く 関わるコマンド(ppp、pkg_add、natd、ps、cron、mount、 ktraceなど)はかなり違います。 それから、ソースレベルでの互換性という点では、 インクルードファイルやライブラリの有無/仕様の違い/ などが原因で、少し大きめのプログラムだと、一発で コンパイルできないことも多いです。 でも、わかっている人がソースやMakefileをいじると 大抵の場合なんとかなります。 # わかってない人がいじってもどうにもならない。 ですから、FreeBSDではportsやpackage、Linuxでは (よく知りませんが)ディストリビューションごとに rpmとかを用意して、わかってない人でも一発で インストールできるようにしてるわけです。 …というふうに、「アプリケーションの互換性」と 曖昧な聞き方をされると、こんなに長くなってしまう のでした(笑) |
よろしくお願いします。&ありがとうございます。 |
こんばんわ。賑わってますね^^ もう既に付いていけないくらいの話題になってます(汗) そうですか、6気筒1万ccのマシンなんですか。 そんな良いマシン、前の仕事でも使った事なかったなあ。 error.cgi、参考にさせてもらいます。 でも、いつ反映できるかは謎ですが(笑) |
RefererなのかReferrerなのか、いづれ決着をつけましょう・・・・・・・・・ って、ほさいぬさんが言ってました。 |
お招きにあずかり、参上致し…あ、あれ?誰もよんでないって? こりゃまた、失礼しました〜〜、って年代モノのギャグはどっかにやっといて、と。 取り敢えず、某所でここのCGIが必要になりそうなんで頂いていきます(笑) 問題が発生すればレポート出しますんで、その時には宜しくお願いしますね。 まぁ、仕事もあるんで、すぐに設置できる状態ではなさそうなんだけど… |
g2を見てみる…いきなり一行目でつまずく(笑) >#!/usr/local/bin/perl -w の-wってなんでせう?何かのオプションかなぁ…まぁいいや まさか1行目からつまずくとは思わんかったけど(笑) 次 >push(@INC,"/home/usr4/a5/i/a5i050/public_html/cgi-bin/"); >push(@INC,"/home/95s/j5306050/bbs"); またつまずく(爆) push?perlってpush使えるのか? でもpop無い様な…、いいやこれも、次いこう次。 >$nocgi = 1; ん〜、なんかのフラグにしてんのかな、だとしたらなんなのでせうか? 例のごとく次へ >require 'timelocal.pl'; >require 'environment.pl'; ライブラリか、timelocal.plの方はどっかのサーバーにあるだろうから適当にDLしてくればいいか。 ほんとにいいんでしょうか>お師さん 問題はenvironment.plのほう。 同じようにDLしてみる…やばい、これは結構書き直しがいりそう… 時間もかかりそうなので、こいつに関してはまた後日。 >$proxy = 'http://www.cs.gunma-u.ac.jp:8080/'; こいつはプロキシのアドレスですな。 まぁ適当なプロキシサーバー見つけてきて代入すればいいですよね。 >$base_dir = "$home/test00"; 以下3行 コメントがあるので分かりやすい… が、$homeが問題。 environment.plに記述があるので、そこから書き換えないとだめですねぇ >$erase_span = 2; 変数の名前から想像するに…過去ログを残す日にちかな? 2って事は3日分残るって事でいいんでしょうか。 ってことで、g2理解するのにはまだまだ時間がかかりそうです。 68user師匠、ここまでの解説を御教授くださいませ。 |
>cal殿 ログは保護しました >肉殿 JavaScriptって全てreferrerなんですか? うーん、納得いかん。 >ROL殿 -wはperlにwarningを吐かせるオプションですな。 requireってのは、ファイルをインクルードする命令です。 だから、「require 'environment.pl';」の変わりに、 environment.plの内容をそのまま貼っておいてもいいです。 で、requireする場合、どのディレクトリからファイルを 探すかを決めるために、perlは@INCを参照するわけです。 ちなみに localtime(&timelocal(0,0,0,$day,$mon,$year)-60*60*24); で&timelocalを使うためだけにrequireしてます。 # timelocalはlocaltimeの逆変換をする関数です。 $nocgi は environment.pl でチェックしてる変数です。 うちのCGIはnobody権限でないと動かないようにしてる んですが、g2はCGIじゃないので自分の権限で動かす必要が あります。ですからそのチェックをすり抜けるための 変数です。とっぱらってください。 environment.plで使ってるのは、$nkf、$home、$httpdownだけ だと思うんで、上のところ全部削除して、 $home = "/home/rol"; $nkf = "/usr/local/bin/nkf"; $httpdown = "/home/rol/bin/httpdown"; とでも書いておけばいいでしょう。 timelocal.plはperlについてくると思うんですが、 なければあげますので言ってください。 あと if ( -f "$log_dir/$date.tgz" ){ system("mkdir -p $main_dir/"); print "extract $log_dir/$date.tgz\n"; system("$tar zxf $log_dir/$date.tgz -C $main_dir"); } これは、既にその日作ったアーカイブがあれば展開してます。 デバッグ時に一度落としたファイルを何度も落とすのは 時間の無駄ですから。 > 変数の名前から想像するに…過去ログを残す日にちかな? そのとおりです。 > 2って事は3日分残るって事でいいんでしょうか。 あい。変なプログラムですね(笑) |
まぁ簡単なプログラムだから、原理を理解したら 自分でスクラッチから書き起こすのもいいと思います。要は 1. 1_index.shtmlをGET 2. 1_index.shtmlからリンクされている*_ALL.shtmlをGET 3. 次のvolをGET(GETできなかったらおしまい) 4. tar zxvf 1998-xx-xx.tgz *.shtml(アーカイブを作成) 5. その日のリンクを作成 してるだけです。例えば5なんかは、SSIを使って 現在置いてある全てのアーカイブをリアルタイムで リストアップしてもいいですし。 |
昨日のおさらい (申し訳ないですが、しばらくお付き合い頂けると助かります) -wオプション なるほど。もし、このオプションをとった場合、どういう不都合が考えられるのでしょう? まぁこのスクリプトもある程度理解できるぐらいの知識はあるつもりなんですが Perlの仕様じたいは詳しくないので教えてください。 push なるほど。requireでインクルードしてくるファイルが2つあるのでpushも二つある訳ですな。 では、前のpushと後のpushとが、それぞれどちらのrequireに対応するんでしょうか? やっぱり先のpushがenvironment.pl、後のpushがtimelocal.plですか? timelocal.pl お手数をおかけして申し訳ないですか、下さい(笑) environment.pl ん〜、3つの代数ぐらいなら確かにスクリプト本体に組み込んじゃった方が早いですね。 そこは適当に書き換えときます…が、ここで新たな問題が発生。 $homeはディレクトリなんで分かりやすいんですけど、 $nkfこれが問題。これはファイルだと言うとこまでは理解できるんですが(サブルーチン内でオープンしてますから) このファイルってなんなんでしょう? ただのテンポラリとして使用しているんでしょうか? 後で出てくるサブルーチンをみても理解できないです(T_T) $httpdown…そもそもHTTPDOWNが何をするアプリケーションなのかが理解できてません(笑) if ( -f "$log_dir/$date.tgz" ){ system("mkdir -p $main_dir/"); print "extract $log_dir/$date.tgz\n"; system("$tar zxf $log_dir/$date.tgz -C $main_dir"); } つまり、このスクリプトでは、ダウンロードしたファイルを圧縮している訳ですよね。 ちゅうことはtarが必要な訳なんですが、UNIX自身をほとんど触った事の無い私には 正直言って手に余る部分です。 ってことで、この部分は全面的に改良して、非圧縮でやるとこを目標としときます。 で、本日のお勉強 get_today_time ここでの問題点は二つ。 1つはライブラリですが、これはライブラリがあれば解決できるので、正確には問題にならない。 2つめ…2000年問題!!! これ…独力でナントでもなるわ(笑) localtime()でとってきた$yearが98以下の時には $year+=1900; ではなく $year+=2000; にしちゃえば、百年間は大丈夫だからねぇ。 もっとも根本的な解決にはなってないが、それはシステムが対応せんとどうしようもないもんね。 このあたりUNIXの仕様は今後変わる予定ってのはあるんでしょうか? あぁ、やっぱりラクダ本買わないとだめだな… |
訂正 ocaltime()でとってきた$yearが98以下の時には>ocaltime()でとってきた$yearが98未満の時には 謹んで訂正致します。m(__)m |
> ってことで、この部分は全面的に改良して、非圧縮でやるとこを > 目標としときます。 ん〜、圧縮しないと1MB近くになりますよ。 > なるほど。requireでインクルードしてくるファイルが2つあるので > pushも二つある訳ですな。 ちゃいます。timelocalはシステム標準のディレクトリ (/usr/local/lib/perl5/とか/usr/share/perl/など)に あるので、そのままrequireするだけでOKです。 pushが2つあるのは、このCGIをwww.cs.gunma-u.ac.jpと www.cc.gunma-u.ac.jpのどちらでも動作させるためのものです。 # まぁあれは僕の環境に合わせるための記述なので、 # 深く考えなくてもいいです。 > timelocal.pl というわけで、サーバがUNIXならまずそこに置いてあると 思うのですが、一応 http://X68000.startshop.co.jp/~68user/tmp/timelocal.pl に置いておきます。 > nkfこれが問題。 nkfはコマンドです。まず http://X68000.startshop.co.jp/~68user/unix/prgmemo.html#nkf を読んで、nkfの機能を知ってください。 で、DOSで A:\>type hogehoge | more などとパイプを使ったことあります? これは more < hogehogeと等価ですよね(多分…DOSは忘れた)。 それと同じで、 % nkf -e < hogehoge は % cat hogehoge | nkf -e (UNIXのcat=DOSのtype) と同じです。 つまり、落としたファイルはSJISなので、nkfを使って EUCに変換しているわけです。 # ところで、open(IN,"hoge|")とかopen(OUT,"|hoge") # という意味はわかりますか? httpdownについてはまた後で書きます。とりあえず、 UNIXで実際にhttpdownを動かしてみるのが一番わかりやすい ことは確かです。 それからtarですけど、 tar zxf hoge.tgz = lha e hoge.lzh tar zcf hoge.tgz *.shtml = lha a hoge.lzh という説明ではダメでしょうか。一応 http://X68000.startshop.co.jp/~68user/unix/prgmemo.html#tar も読んでください。 > 2つめ…2000年問題!!! ふふ…、いまだに2000年問題が残ってたら、強者揃いの UNIXハッカー連中がよってたかって直しにかかるでしょう。 localtimeが返す年は西暦-1900です。2000年なら100を返します。 なんで-1900かっていうと、やはり昔は2000年問題が残っていたので、 それとの整合性を取るためでしょうね。 あと一部のUNIXには2038年問題があります。1970年1月1日からの 経過秒数が、2038年あたりでlongでは表現できなくなるので。 > あぁ、やっぱりラクダ本買わないとだめだな… 別に質問するなって言ってるわけじゃないですけど (僕がお願いしたんだし)、-wなどマニュアルを見れば 載っていることは手元のラクダ本を調べた方が早いですよ。 僕に聞くと1日かかることも、ラクダ本があれば数分で 片付きます。 あと、過去ログ閲覧用スクリプトも設置する必要がありますが、 そこには s|$&|<a href="$toppage_url">$link_message</a>|; s|\Q$&\E|$tmp|; if ( m|<a href=.*?noteky_base\.cgi.*?>(.*?)</a>| ){ などが出て来ます。 $&、\Q〜\E、.*?など、ラクダ本がないとかなり困ることに なると思いますので、購入されることをお勧めします。 一応perl5のマニュアルは http://www.bekkoame.or.jp/~syunji/perl/man/index.html にありますが、最初は本で読む方がいいんじゃないかと 思います。 |
昨日のおさらい… >ん〜、圧縮しないと1MB近くになりますよ。 BIGのサーバーレンタルは50MBもらえるので 容量的には問題ないですね、というか、画像なしでどうやってこの容量をうめるかが問題だな(笑) >nkf 了解しました。 今までそういった文字コードの変換には「jcode.pl」を使ってたんですよ。 このコマンドがあれば「jcode.pl」いらないな。 そのわりにはCGIの本にはこれで文字コードを変換するようになってるんだけど、 なぜそんなことが必要なんだろう? nkfって特殊なコマンドなんでしょうか? ># ところで、open(IN,"hoge|")とかopen(OUT,"|hoge") ># という意味はわかりますか? 「パイプ」とか「リダイレクションパイプ」ですよね。 一応本読んでますけど、自分が作るCGIでは使った事ないんですよ。<へぼプログラマー この例だと、ファイルハンドルINやOUTにパイプを結び付けているってとこまではわかります。 open(OUT…)の場合、今後ファイルハンドルになにか出力すると、hogeにそのデータがわたされる…であってますか? >tar 説明が非常にわかりやすいです(笑) ただ、こういったプログラムをレンタルサーバー上で動かしてもいいのかなと思っちゃたりするんですけど… いいのかな?>サポートに連絡してみよう。 >ふふ…、いまだに2000年問題が残ってたら、強者揃いの >UNIXハッカー連中がよってたかって直しにかかるでしょう。 ぎゃぁぁぁぁぁ! めっちゃ恥ずかしい…(笑) そうなってたのかぁ、勉強になるなぁ(笑)<UNIXについての知識の少なさを露呈してますな(爆) >購入されることをお勧めします。 今日は忙しくて本屋に行く暇もなかったので、明日買ってきます。 ってわけで、今日はここまで。 仕事が忙しいの…(涙) |
> BIGのサーバーレンタルは50MBもらえるので まぁ今のところ他に使い道がないなら圧縮しないのも いいでしょう。 > そのわりにはCGIの本にはこれで文字コードを変換するように > なってるんだけど、なぜそんなことが必要なんだろう? nkfはただのUNIXコマンドなので、CGIの本の範疇を越えている ということでjcode.plを使っているんでしょうね。 僕はnkfの方が慣れてるのと、nkf使った方が多分速いから 使ってるだけですので、代わりにjcode.pl使ってもいいですよ。 > サポートに連絡してみよう。 どちらかと言えば(あくまでも「どちらかと言えば」ですけど) CPUパワー喰うので、嫌がるところは嫌がるでしょう。 んが、僕は 「CGIはperlの中で完結しなければならないということは ない。UNIXのコマンド使って何が悪い」 という人なので、僕的には完全にOKです。 > 「パイプ」とか「リダイレクションパイプ」ですよね。 です。openの最初や最後に|を付けると、コマンドとして 解釈されてそのコマンドが実行されるわけです。 |
BIGのサーバーどうやらnkf使わせてもらえないみたい。 しかも実験の結果、「system」もだめみたいです。 あかん、結構書き直しですな…(苦笑) |
> しかも実験の結果、「system」もだめみたいです。 え〜そんなことは…。もしsystemがダメならperlからは 子プロセス生成できないってことですよ。CGIとして動かすなら #!/path-of-perl $|=1; # これ大事。 print "Content-type: text/plain\n\n"; system("/bin/ls"); でうまくいくはずです。 > BIGのサーバーどうやらnkf使わせてもらえないみたい。 じゃあソース持ってってコンパイルしませう(70%本気)。 |
はじめまして。ミーという者です。 FreeBSDについてちょっと質問があるんですが、 私のパソコンでpppとやって、termでモデムとお話をしようとすると、 そこのところが御亡くなりになります。 あまり良く分からないので詳しく状況を書けないのですが、 考えられる原因を教えていただきたく思いまして、書きました。 よろしくお願いします。 |
ども、68userです。 僕もよく知らないんですが、 ppp ON X68000> term Working in interactive mode Entering terminal mode. Type `~?' for help. となったら、C-cもC-zも効かなくなるんですけど、 「そこのところが御亡くなりになります」 というのは、このことでしょうか? 「Type `~?' for help.」とある通りに、「~?」とタイプすると、 簡単なヘルプが表示されます。そこにも書いてありますが、 term modeを抜けるには「~.」と打ちます。packet modeに 戻るには、「~p」です。 で、 ppp ON X68000> term Working in interactive mode Entering terminal mode. Type `~?' for help. at(とタイプする。ここは表示されない) OK(と表示されたら、少なくともモデムは認識されているはず) atdt電話番号(とタイプする。ここは表示されない) CONNECT … とするらしいです。僕の環境ではこれでモデムが電話をかけて くれるんですが、手動でユーザ認証させる方法を知らないので、 ここまでしかわかりません。 あとは、環境(アナログモデム/ISDN)、ログの内容(/var/log/ppp.log)、 /etc/ppp/ppp.conf、/etc/ppp/ppp.linkupの内容などがわからないと なんとも言えないと思います。 |
>あとは、環境(アナログモデム/ISDN)、ログの内容 >(/var/log/ppp.log)、 >/etc/ppp/ppp.conf、/etc/ppp/ppp.linkupの内容などがわからな >いとなんとも言えないと思います。 そうでしたね。すみません。 ですが、ppp.confは、サンプルをデバイス部分だけかえているんですよ。 ppp ON mee>term Working in interactive mode Entering terminal mode. Type"~?"for help は出ます。 この時点で何も打てなくなります。 でないだけかと思って at [Enter] と打ってみても反応しません。 とりあえず、もう一回自分で調べてみます。 ありがとうございました。 |
やってみると、 ~. ~? は実行できました。~?は文字が化けていましたが... ただ、at は反応しません。モデムってカーネルの再構築必要なんでしたっけ? |
モデムは、sioデバイスで認識されます。なお、PCのシリアルポートも sio?で認識されます。僕の場合は、dmesgで sio0 at 0x3f8-0x3ff irq 4 on isa sio0: type 16550A sio1 at 0x2f8-0x2ff irq 3 on isa sio1: type 16550A となっていますが、sio0がシリアルポート、sio1がモデムです。 この場合、/etc/ppp/ppp.confには set device /dev/cuaa1 と書けばいいです。 PCによってはシリアルポートが2つ付いてる場合がありますが、 デフォルトのカーネルコンフィグは device sio0 at isa? port "IO_COM1" tty irq 4 vector siointr device sio1 at isa? port "IO_COM2" tty irq 3 vector siointr device sio2 at isa? disable port "IO_COM3" tty irq 5 vector siointr device sio3 at isa? disable port "IO_COM4" tty irq 9 vector siointr となっているので、モデムが認識されません。 disableを削ってカーネルの再構築をするか、ブート時に boot: -cv で、sio2をenableにするといいでしょう。 # PCのBIOS設定で、シリアルポートを殺すこともできます。 # 僕のマシンはシリアルポートが2個なのですが、BIOSで # 1つ殺してあります。 pppのtermモードとは別に、cuで調べることもできます。 モデムが認識されてるなら、 % cu -l cuaa1 Connected. at(と入力) OK atdt電話番号(と入力) CONNECT 9600/ARQ/V34/LAPM/V42BIS で、モデムが電話をかけてくれます。 % cu -l cuaa0 % cu -l cuaa2 などとして、モデムが認識されているか確認してみてください。 もしsio?のいずれもモデムを認識していなかったら、PnPの問題ですかねぇ。 モデムカードの型番を元に、http://www.jp.freebsd.org/で調べてみると いいと思います。 |
ありがとうございました。 試してみると sio1 が type 16550A とでないで、たしか開けなかったと思います。 (sio0はちゃんと16550Aでした。) さっそく試してみます。 |
あの....非常に言いにくいのですが、 実はフロッピーディスクの使い方を知りません。 ひぃぃぃぃ。本当に素人なんです。 あの....フロッピーの使い方をある程度教えてもらえませんか? (もちろんFreeBSDでです。さすがに、Winでは使えます。) あ〜、恥ずかしかった... |
http://www.jp.freebsd.org/~yuki/FreeBSD/search.html から、「QandA」を対象に「フロッピー」をキーワードに検索すると 情報が得られますよ。 MS-DOSフォーマットのフロッピーならここ。 http://www.jp.FreeBSD.ORG/%7Eryuchi/QandA/HTML/640.html ufs(UNIX方式のフォーマット)のフロッピーならここ。 http://www.jp.FreeBSD.ORG/%7Eryuchi/QandA/HTML/350.html まずはQandAで探してみる癖を付けると、効率良く探しものが できると思います。 あと、一応僕もQandA projectに参加してますので「ここが わかりにくい」など意見を言ってくだされば、できるだけ 反映するように努力します。 |
なるほど。 フロッピーが使えました。 あの検索を使えばいいんですか。 ありがとうございました。 モデムは認識してくれないようだから ひとまず休憩としようと思っています。 つぎはgccです。 GNU GCCでしたっけ?これだとWin32のが作れるんですよね。 検索してみました。 良く分かっていないんですがね |
ちょうどFreeBSD-users-jpで同じ質問が流れてました。 # 上の名前のリンクから辿れます。 結論としては、 FreeBSDのGCCを使ってWin32アプリを作れないことはないけど、 普通はやらない。Win用のGCCを使うか、Visual C++を使った方が簡単。 ってところでしょうか。 |
初めて利用させていただきます。よろしくお願いします。 passwdコマンドを実行すると、ユーザーが存在しないという メッセージが返ってきて、パスワードを変更することができません。 passwd: user-name dose not exist /etc/passwdにもユーザはいるし、fingerでも確認できます。 passwdコマンドが壊れているのでしょうか? |
ども、初めまして。 OSはFreeBSDですか? だったら/etc/master.passwdが本当の パスワードファイルなので、そちらをまず確認されてはいかがでしょう? それから、passwd実行時には/etc/pwd.db、/etc/spwd.dbも同時に 参照されると思うので、そちらも壊れていないかチェックした 方がいいかもしれません。といっても、これらはテキスト形式では ないので、/usr/sbin/pwd_mkdbを使って作成しなおす、という ことになりますでしょうか。 |
追加。rootになって、 # pwd_mkdb /etc/master.passwd で、新しい/etc/pwd.dbと/etc/spwd.dbが、 # pwd_mkdb -p /etc/master.passwd で、新しい/etc/passwdが作られます。 FreeBSDなら、ですけど。 |
OSをきちんと明記してませんでした。すみません。 Solaris2.5.1です。 shadowファイルを、encryptして書きなおすという方法が あるようなんですが、 passwdコマンドの解決にはならないので、 どうしたものかと思っています。 |
OSをきちんと明記してませんでした。すみません。 Solaris2.5.1です。 shadowファイルを、encryptして書きなおすという方法が あるようなんですが、 passwdコマンドの解決にはならないので、 どうしたものかと思っています。 |
Solarisですかぁ…。僕はSolarisは全然知らないので、 ちょっと お力にはなれないと思います。すみません。 |
始めまして。 質問は、はじめてですがいろいろ拝見させていただいています。 そこで質問なのですが、 tarフォーマットのFDをwindowsNT上でMS-DOSフォーマットに 変換する事はできるのでしょうか? 方法や、そのようなソフトなどが有れば教えていただきたいのですが よろしくお願いします。 |
ども、こんにちは。 tarフォーマットのフロッピーは、フォーマットという概念はなく、 データがベタで書かれたものだと思います。 こういうベタで書かれたものは、UNIXなら % dd if=/dev/fd0 of=hoge % cp /dev/fd0c hoge % cat /dev/fd0c > hoge で取り出せます(ご存知かもしれませんが念のため)。 Win環境でUNIXのブートフロッピーを作る場合などは、rawrite.exeなど 使ってフロッピーにベタで書き込みますが、この逆のことをしてくれる ツールがあればいいのだと思います。 で、そういうツールはあるか、というと…わかりません(^^; rawrite.exeに読み出しモードがあるか調べるとか、Winのtarの マニュアルを調べてみる、とか…。 またまたお役に立てませんでしたね。 |
はじめまして UNIXのデータを、Windows95のパソコンで整理することはできないでしょうか? 私は、印刷会社に勤務して、パソコンのオペレータをしております。 で、勤め先なのですが、UNIXをOSとする組版機(業務用のワープロですね) を使って、印刷の版下を編集・制作しています。 ところが、社内にUNIXの分かる人間が皆無で、これまでに蓄積した膨大なデータを 効率的に管理する方法が分かりません。 一応、組版機同士はLANで結ばれ、ハードディスクやMOなども、導入されており、 編集の段階では使っているのですが、作成後のデータの管理には、役に立っていないよう です。 このため、編集後のデータはフロッピーディスクに保存して、手書きの台帳で管理して います。 すでに、何千枚ものフロッピーが、保管されているのですが、未だに、月百枚ペースで 3.5インチのFDが増え続けています。 何とかしたいと思うのですが、残念ながら、私もUNIXは全く素人です。 で、思い立ったのですが、UNIXのデータが書き込まれたFDを、ウィンドウズの パソコンで読み込み、ハードディスクに保存する方法はないものでしょうか? とりあえず、FDの読み書きと、ハードディスクへの転送ができれば良いのです。 ネットワークの構築も、プリンタの接続もいりません。 原始的な使用法とは思いますが、それだけでも大助かりです。 まことに恐れ入ります、どなたか糸口だけでもご教示下さい。 よろしく、お願いいたします。 |
ども、ごぶさたです。 遂に胃カメラ飲むとこまでいってしまったROLです。 いや、きいてはいたけど苦しいもんですね、あれは…(涙) さてさて、例のスクリプトの件ですが、 telnetで調べた結果サーバー側にnkfとtarはあることが判明。 サーバーの管理者から使用許可をいただきました。 あとはhttpdownなんですが、きちんとインストールするのであれば 使用してかまわないとのことでしたので、 httpdownをインストールして、スクリプトはそのまま使う方向にかえました。 というか、openで他のサーバーのファイルを開こうとするとエラーを起こすみたいなんですけど httpdownを使ってるのって、これのからみなんでしょうか? |
1. 「組版機同士はLANで結ばれ」ということで、そのLANにWinマシンを繋げて、 FTPでファイル転送する(ほんとはファイルサーバでデータを共有できれば いいんでしょうけど)。 2. 「ハードディスクやMOなども導入されており」ということで、UNIXで作ったMOを Winマシンで読む。 3. 「ハードディスクやMOなども導入されており」ということで、(UNIX上から) MOに編集後のデータを保存しておく。 あたりでしょうか…。 1なら、ケーブル繋げてWinマシンにIPアドレスとネットマスク設定して、(もし必要なら) DNSサーバのIPアドレス入力するだけでOKかと思います。 2だとUNIXで作ったMOのフォーマットがufs(UNIXフォーマット)か、DOSフォーマットか、 あるいはそれ以外か、というところで引っかかるかもしれませんね。 3がお手軽かと思うんですが、ちょっと文面からはわかりませんが、MOやHDDでなく フロッピーで保存しなければならない事情があるんでしょうね。 > すでに、何千枚ものフロッピーが、保管されているのですが、未だに、月百枚ペースで > 3.5インチのFDが増え続けています。 うーん、それは大変ですねぇ(^^; 数千枚のFDをコピーするのは嫌だなぁ。 でも本当に困っておられるなら、ソフト屋やネットワーク屋に金を払って、 UNIXとWinマシンでデータを共有できるようにするとか、UNIXあるいはWin上での 台帳管理ソフトを作ってもらう、ってのをお勧めしますよ。 # ↑不況を知らない学生の発想かも。社会に出ると上司に # 「そんなものに金は出せん。君がなんとかしろ!」 # とか言われるのでしょうか(^^; |
> というか、openで他のサーバーのファイルを開こうとするとエラーを > 起こすみたいなんですけどhttpdownを使ってるのって、これのからみなんでしょうか? えっと、ちょっと状況がよくわかりませんが、 とりあえずhttpdownの使い方を説明します。 level 1 (1段階リンクをたどる) httpproxy http://proxy.hogehoge.com:8080/ (proxyを使うなら) reportlevel 2 (なくてもいいです) start http://www2.sega.co.jp/bbs/t/test/1_index.html (落としたいURL) という内容のhttpdown.cnfというファイル(ファイル名はなんでもいいですが)を 作って、コマンドラインから % httpdown httpdown.cnf とすると、カレントディレクトリ以下に www2.sega.co.jp/bbs/t/test/1_index.html が作成されます。それに相当することをg2で行っているのが、 sub download { open(OUT,">$base_dir/sega2.def"); print OUT "level 1\n"; print OUT "httpproxy $proxy\n"; print OUT "reportlevel 2\n"; print OUT "start http://www2.sega.co.jp/bbs/t/test/$_[0]\n"; close(OUT); system("$httpdown $base_dir/sega2.def > /dev/null"); } openで読めるのは、そのサーバ上にあるファイルだけですから、 こうやって一度ファイルを落とした後にopenして読み込むわけです。 その前に、httpdownのコンパイルは終りましたか? http://www.mechatronics.mech.tohoku.ac.jp/~kumagai/bins/kuma/httpdown-3.13.tar.gz を落して、UNIX上で、 % gzip -dc httpdown-3.13.tar.gz | tar tvf - でアーカイブの一覧が見られます。 % gzip -dc httpdown-3.13.tar.gz | tar xvf - で展開です。そしたらhttpdown313というディレクトリが出来ているはずなので、 % cd httpdown313 % make とすると、コンパイルが始まって、そのディレクトリにhttpdownというコマンドができます。 もしコンパイル中にエラーで止まってしまったらMakefileを修正すればいいでしょう。 # その場合、uname -aの結果とmakeした結果全てを見せてください。 > 遂に胃カメラ飲むとこまでいってしまったROLです。 会社に入るとやっぱりストレス溜るんでしょうか… お大事に… |
makeの結果こういうメッセージが出ました。 エラーですね -------- gcc -c http.cc gcc -c parse.cc gcc -c flist.cc gcc -c httpdown.cc gcc -c url.cc gcc -c ftp.cc gcc -c makedef.cc gcc -c match.cc gcc http.o parse.o flist.o httpdown.o url.o ftp.o makedef.o match.o -o httpdow n -lresolv ld: cannot open -lresolv: No such file or directory make: *** [httpdown] Error 1 ------------ でMakefileの内容です ---------- # makefile for httpdown # please use c++ compiler CC = gcc # # linker library options # # default(SunOS 4.1.1-JL 1 sun4c) LIBS= -lresolv # SunOS 5.5 Generic sun4c sparc # LIBS= -lnsl -lsocket -lresolv # SunOS 4.1.4 2 sun4m # LIBS= -lresolv -l44bsd # AIX # LIBS= # Linux # LIBS= # HP-UX # LIBS= # if some errors with 'gethostname' occured, try to comment out # next line. # GETHOSTNAME = -DNEED_GETHOSTNAME # if debugging (for core dump analysis) # DEBUG = -g # compile option COPT = $(GETHOSTNAME) $(DEBUG) OBJS = http.o parse.o flist.o httpdown.o url.o ftp.o makedef.o match.o httpdown: $(OBJS) $(CC) $(COPT) $(OBJS) -o httpdown $(LIBS) urlget: urlget.o url.o ftp.o http.o $(CC) $(COPT) urlget.o url.o ftp.o http.o -o urlget $(LIBS) http.o: http.cc http.h url.h $(CC) $(COPT) -c http.cc ftp.o: ftp.cc ftp.h url.h $(CC) $(COPT) -c ftp.cc url.o: url.cc url.h $(CC) $(COPT) -c url.cc parse.o: parse.cc httpdown.h $(CC) $(COPT) -c parse.cc flist.o: flist.cc http.h httpdown.h $(CC) $(COPT) -c flist.cc makedef.o: makedef.cc $(CC) $(COPT) -c makedef.cc httpdown.o: httpdown.cc httpdown.h http.h url.h ftp.h $(CC) $(COPT) -c httpdown.cc urlget.o: urlget.cc $(CC) $(COPT) -c urlget.cc match.o: match.cc match.h $(CC) $(COPT) -c match.cc ---------- ここまでくるとワシには何がなんやらさっぱり(笑) |
Makefileの LIBS= -lresolv を LIBS= に変更して もっかいmakeしてください。 > ここまでくるとワシには何がなんやらさっぱり(笑) C言語はソースコードをコンパイルするとともに、既に コンパイル済の部品(=ライブラリ)を組み合わせて(=リンクして) バイナリを作成するんです。 そのコンパイル済の部品の名前が、OSごとに少しずつ違う わけです。例えば -lresolv は /usr/lib/libresolv.aが あることを期待しているんですが、ROLさんとこのサーバには そのファイルがなかったのでエラーになったわけっすね。 |
>openで読めるのは、そのサーバ上にあるファイルだけですから、 >こうやって一度ファイルを落とした後にopenして読み込むわけです。 あ、やっぱり。 openって他のサーバーのファイルは開けないのか。 おかげで、httpdownの役割というか重要性も理解できました。 あとは各ディレクトリの設定をやり直すだけで取りあえず動くはず… でも、この脱力感はなんでしょうね? 過去ログをとるスクリプトを理解することが目的になってしまってるような気がする。 っていうか、あそこの現状を見るに、過去ログそのものの 存在の意義を見出せなくなってきている自分に気がついた… |
お師さん、こんにちは。 「その他」での書きこみを見て、ふと気がつくと… 何故か手元にFreeBSD 2.2.Jの箱が… と、いうわけで、性懲りも無くまた手をだしてしまい ました。まあ、ゆっくりとやっていきますです。 で、さっそく質問ですが…(^^; Xの画面(解像度)の事なんですが、僕の設定では 1280*1024でちょうどXの画面がディスプレイのワクに ばちっとはまるようになっているのですが、解像度を 変えると(800*600等)画面がディスプレイのワクから はみでてしまいます。ただ、カーソルを画面のワクの ほうへ動かせばスクロールするので使用するのには 別に問題はありませんが、「解像度が変わっても ディスプレイのワクにばちっとはまんねーかなぁ」 とふと思ったので、ちょっとお聞きしたかっただけです。 お師さんの画面ではそういう問題はありませんでしたか? |
あ…2.2.6Jだった。6を落としてしまった。 失礼しました。 それでは。 |
> 解像度を変えると(800*600等) これは、Ctrl-Alt-`+'などで解像度を変更した場合ですか? もしそうなら、ルートウィンドウサイズはそのままで、画面の 一部分を拡大しているだけなので、無理なんじゃないかなぁ。 あるいはウィンドウマネージャの再起動でなんとかなるかも しれませんが…。 後から試してみます。 > あ…2.2.6Jだった。6を落としてしまった。 高級なパッケージをお持ちで(笑) > でも、この脱力感はなんでしょうね? 興味のないことを無理にやってても つらいだけなのは 十分理解できますので、やめちゃってもいいですよ。 こんなの義務でも何でもないんだし。 どーでもいいことやってても、それはただの時間の浪費です。 どうなさるかは おまかせします。 |
なるへそ。なんとなくわかった(ような)気がします。 >これは、Ctrl-Alt-`+'などで解像度を変更した場合ですか? そうです。だって、設定ファイル(でしたっけ)等の いじりかたがまだよくわからないので、お手軽にでき る方法しかやってませんのですよ。 でも後は自分でなんとかなると思います。 (でもいつになることやら。過去ログのリジェクトログ 付きの文を無理やり見る方法を教えてもらった時は 教えてもらってからできるまで○ヵ月かかってたしなぁ… あ、やべっ!また怒られちゃう(^^;) ご教授どうもでした。 |
>どーでもいいことやってても、それはただの時間の浪費です。 >どうなさるかは おまかせします。 ん〜、取りあえずスクリプトが動くようになるまで、 がんばってみるつもりです。 ただ、スクリプトがマトモに動いたからといって、 ログをとるかどうかはそのときの気分次第っていうことで(笑) だってすでに目的と手段が入れ代わってるんだもん(爆) |
> だってすでに目的と手段が入れ代わってるんだもん(爆) A4集計を始めた理由 1. httpクライアントが書けたから。 2. POST形式のデータ送信方法がわかったから。 3. こんなことができるんだぞ〜と自慢したかったから。 最初から動機が不純でした(笑) |
UNIXでの日本語環境のことしりたいです! |
どもども、ROLっす。 g2のその後ですが、スクリプト自身は動いてるようなんですが test-logディレクトリに1998-12-19.tgzと testbbs-log.htmlの2ファイルはできてます。 でも、できてるだけ。 容量がそれぞれ1kと0K。 どうやらhttpdownでうまく落とせてない模様。 おっかしいなぁ??? プロキシがおかしいのかな??? プロキシってどこのでも問題ないですよね? |
$base_dir = "$home/test00"; # 作業用ディレクトリ が存在しないのではないでしょうか。別のディレクトリ名に していただいてもOKです。 $home/test00/sega2.def にhttpdown用の設定ファイルを作って、httpdownは $home/test00/www2.sega.co.jp $home/test00/www2.sega.co.jp/bbs $home/test00/www2.sega.co.jp/bbs/t $home/test00/www2.sega.co.jp/bbs/t/test と再帰的にディレクトリを掘っていきます。 ぱかぽこさん: > UNIXでの日本語環境のことしりたいです! 「UNIXでの日本語環境」と言っても ・FreeBSDかLinuxか、あるいは その他のUNIX系OSか、 ・Linuxなら、どのディストリビューションか などで結構違いますので、これだけではなんとも… |
User Agent統計を見て… HI-UXは、僕です(^^;。 なんでも日立のHI…なのかどうかは知りませんが、 とにかく日立が関係してるようです。 そんだけしか知らない…(汗) また、ブラウザのchimeraも僕です(たぶん) なんかいろいろ試したかったもんで。 いや、だからなんだってわけじゃあないんですが。 |
&init_work; # ディレクトリ作成 & tarball展開 exit; としてテストを実行してみたところ、サーバーからエラーがかえってきています。 その状態では確かにtest00はできてます。 なので&init_work;の後半部分 if ( -f "$log_dir/$date.tgz" ){ system("mkdir -p $main_dir/"); # print "extract $log_dir/$date.tgz\n"; # system("$tar zxf $log_dir/$date.tgz -C $main_dir"); } が問題なんでしょうね…多分。 で、ここの if ( -f "$log_dir/$date.tgz" ){ の-fが何なのかが全然分かってないので、手がつけられないんですが… |
> とにかく日立が関係してるようです。 どうもです。早速更新しました。 > が問題なんでしょうね…多分。 事前に ~/test00 と ~/public_html/test-log をmkdirして おけば大丈夫だとは思うんですが、どうでしょう。 > の-fが何なのかが全然分かってないので 本買いましょ〜。 ファイルが存在するかどうかのチェックです。/hoge/file というファイルが存在すれば、-f "/hoge/file" は真に なります。 # 他には # -f ファイルがあるか # -d ディレクトリがあるか # -r 読み込み権限があるか # てな感じです。あと20個くらいはあったはず。 既にその日のアーカイブが存在する →少し前にg2を実行した →いちいち全部落とすのは時間がかかる →事前に展開しておけば、時間の節約 というわけで、動作チェックをしている場合は # if ( -f "$main_dir/$1" ){ next; } の行のコメントをはずすと、既にあるファイルは落とさなく なるはずです。 今日の分をもちまして過去ログ作成は終了しますので、 あとはROLさんにまかせたっ。ではではでは。 |
すんません、お師さん。原因はそれじゃないみたいです。 ちょこちょこかえて、「$base_dir/www2.sega.co.jp/bbs/t/test/」ディレクトリが出来るとこまでは確認しましたが、 「test00」内に「sega2.def」と「sega2.def~」が出来てます。 で、$base_dir/www2.sega.co.jp/bbs/t/test/内に何もダウンロードされてません。 「sega2.def」の中身を見ると 「reportlevel 2 start http://www2.sega.co.jp/bbs/t/test/1_index.shtml >following lines are automatically generated by httpdown E http://www2.sega.co.jp/bbs/t/test/1_index.shtml」 ってなってます。 これはつまりHTTPDOWNが巧く働いてないって事ですよね? これはなんでなのかわかんないっす。 もういいかげん、いやになられたとは思いますが、すみませんが ご教授くださいませ。 |
sega2.defの内容を level 1 start http://www2.sega.co.jp/bbs/t/test/1_index.shtml にして試してみてください。 # コマンドラインから % httpdown sega2.def それでもダメなら level 1 httpproxy http://hoge.fuga:8080/ start http://www2.sega.co.jp/bbs/t/test/1_index.shtml と、適切なproxyを設定してやるとどうなりますか? |
追加 それぞれ出来たsega.defの内容です。 sega2.def~ 「level 1 httpproxy http://www.cs.gunma-u.ac.jp:8080/ reportlevel 2 start http://www2.sega.co.jp/bbs/t/test/1_index.shtml」 sega2.def 「level 1 httpproxy http://www.cs.gunma-u.ac.jp:8080/ reportlevel 2 start http://www2.sega.co.jp/bbs/t/test/1_index.shtml >following lines are automatically generated by httpdown E http://www2.sega.co.jp/bbs/t/test/1_index.shtml」 実はproxyを2、3変えて実験してみたんですが、 同じ内容しか出来ないのでオリジナルの g2の「httpproxy http://www.cs.gunma-u.ac.jp:8080/」に してみた結果がこれです。 やっぱり、CGIを動かすサーバーのPROXYを設定したほうがよいのでしょうか?HTTPDOWNには…? |
えっと、www.cs.gunma-uのproxyには、外部の人は接続できないはずです。 いつも使っているproxyを設定してください。 もしサーバ上から % telnet www.sega.co.jp 80 GET / HTTP/1.0(リターン) (もいっかいリターン) として、HTMLが出力されるならproxyは必要ないはずですが、 もしダメなら適切なproxyを設定する必要があります (外部のポート80宛のパケットは通さない設定なのでしょう) |
% telnet www.sega.co.jp 80 GET / HTTP/1.0(リターン) (もいっかいリターン) 実行したらHTMLが出力されました!!! ってことで、変数の定義の所の $proxy =以下と &download内の print OUT "level 1\n"; print OUT "httpproxy $proxy\n"; の2行を削除して、やってみます!!! |
はじめまして。 えっと、学校の端末でzipを解凍することはできないんですか? そもそもunixではzipはだめなのですか? おしえてください |
ROLさん: print OUT "level 1\n"; は削らない方がいいでしょう。これはリンクを1段階たどる、ということを 表しています。 ケースケさん: UNIXでZIPを扱えるアーカイバにはunzipというのがあります。 # ZIP形式は普段使わないのでよくわかりませんが、 # unzipは展開専用、zipは圧縮専用かなぁ? これはflute.cs.gunma-u.ac.jpで、ってことですよね? どうやらインストールされてないようですから、管理者にお願いしたり ソースからコンパイルする方がいいんでしょうけど、それがめんどくさいなら ( find / -name unzip >/dev/tty ) >& /dev/null などで探せます。数分待てばいくつか表示されるので、お好きな ものを使うといいでしょう。 |
やっと…、やっとDLまではこぎつけました、はぁ長かった… まぁまだまだ問題は山済み状態なんですが、一番大きな山はこえたのだと思ってます。 で、残された、私ではなんともならない問題… そう、自動化です。 以前、某氏から触りの部分だけ、聞いたはずなんですか さっぱり忘れてます。 なので、どういうファイル名のファイルか、 そしてそのファイルの中身でどういう指事をすれば 任意のCGIを任意の時間に自動的に動かすことができるのか… これを御教授ください。 |
まずは http://X68000.startshop.co.jp/~68user/unix/prgmemo.html#crontab をどうぞ。 ~/.crontabにいつどんなプログラムを実行するか書いてください。 毎日6時30分に実行するなら、 30 6 * * * command です。g2をどこに置いたかは知りませんが、ホームディレクトリからの ディレクトリ相対指定で動くはずです。例えば 30 6 * * * bbs/g2 など。わからなければ 30 6 * * * /home/user/bbs/g2 とフルパスで書いてください。 ~/.crontabに書いたら、 % crontab ~/.crontab で登録されます。 % crontab -l として 30 6 * * * bbs/g2 と表示されればOKです。 しかしその前にきちんと動くかどうか、簡単なテストをしてください。 #!/usr/local/bin/perl print "test OK!\n"; というスクリプトを書いて、chmod +x して、そのとき22:55なら 数分後、例えば23:00に実行されるようにしてください。~/.crontabに 0 23 * * * script と書いて、 % crontab ~/.crontab とします。 % crontab -l 0 23 * * * script となれば登録は正常に行われています。で、23:00になったら、test OK! という内容のメールが送られてきたらいいわけです。 crontabについて さらに詳しいことは http://www.jp.freebsd.org/cgi-bin/yoyaku/mroff.cgi?sect=5&bgcolor=%23ffffff&cmd=&lc=1&subdir=man&dir=jpman-2.2.8%2Fman&subdir=man&man=crontab をどうぞ。 わからなければまた聞いてください。 > 任意のCGIを任意の時間に自動的に動かすことができるのか… 細かいことですが、webサーバ経由で実行されるプログラムを CGIと言います(ほんとは、その仕組み自体がCGIなんですけど)。 今回はwebサーバは関与しませんから、プログラムとか スクリプトと言った方がいいですね。 |
お師さん、いつもすみませんです。 お教えいただいた crontab とその説明ってFreeBSDのですよね。 BIGのサーバーは Linux 2.0.36で動いてるようで まず「~/.crontab」って名前でファイルがおけなかったので 適当に名前を変えて、% crontab script を実行してみましたが 「bash: /usr/bin/crontab: Permission denied」っていわれて、ダメです。 んで、「whitch crontab」で crontabコマンドを探すと 「whitch: command not found」っていわれちゃいます。 どないしたらよいのでしょうか? あぁ、もうまったく手が出ない世界にアシを突っ込んでるな… |
僕の場合.crontabというファイル名にしているだけで、 他のファイル名でも全く構いません。 > 「whitch crontab」で crontabコマンドを探すと whichですよね。whitchじゃなくて。 > bash: /usr/bin/crontab: Permission denied ん〜、とりあえず、 % ls -l `where crontab` (「'」ではなく「`」で囲んでください) と % ls -l `which crontab` の結果を教えてください。あと、 % id の結果も。もしかしたらbigではcronは使えないように なってるのかもしれません。その場合は、管理者に お願いするしかないです。 |
え、それぞれの結果です ls -l `where crontab` bash: where: command not found total 1 lrwxrwxrwx 1 root root 22 Oct 30 16:29 ftp -> /home/ftp/pub/usr8 /rol/ drwxr-xr-x 5 rol users8 1024 Jan 10 18:08 html/ ls -l `which crontab` /bin/ls: which:: No such file or directory /bin/ls: no: No such file or directory /bin/ls: crontab: No such file or directory /bin/ls: in: No such file or directory /bin/ls: (/bin:/usr/bin:/usr/local/bin:/usr/X11/bin:/usr/andrew/bin:/usr/openwin /bin:/usr/games:.): No such file or directory id uid=14127(rol) gid=107(users8) groups=107(users8) てな所ですが、どうなるでしょ? |
もいっかい。 % ls -l /usr/bin/crontab でお願いします。 |
ls -l /usr/bin/crontab -rwx------ 1 root bin 9008 Aug 24 1997 /usr/bin/crontab* って結果です。 ってこれって、オーナーしか動かせないって事…(涙) |
その通りです。管理者にお願いしてみましょう。その結果ダメだと 言われたら残念ながらcronは不可、ということになります。 # ソース持ってってコンパイルとか…したいですか? |
だ、だめです、お師さん >自動起動系のものはサーバーの保守の関係上、 >いかなる理由があろうとも一切禁止です。 だそうです(涙) MacでAppleScriptで毎日サーバーにTelnet接続して スクリプト起動させるようにする…しかないか? (出来るかどうかは解らんけど…) |
うーん、仕方がないと言えば仕方がないですね。管理者が そういう方針を取ることは理解できます。 結局は6:30に起動するプロセスがあれば、その中で g2を実行すればいいわけです。内部にきっかけとなる プロセスを用意することができないなら、外部から 呼ぶという手もあります。AppleScriptも一つの手ですね。 他には ・6:30に自動的にbigの中のあるwebを取得するように して、その中でCGIを動かしておく。そのCGIの中で g2を実行(CGIは普通nobody権限で動くので、そこら へんに問題あり)。 ・6:30に自動的にbigにメールを送る。.forwardに メールが届くとあるプログラムが起動するように しておいて、現在時刻が6:30付近ならg2を実行 とかとか。 |
こちらでは、はじめまして。 「ネットワークプログラミングの基礎知識」を読ませて頂きました。 で、本題の方は、向こうで話題にしてしまったので(^^; ちょっとズレた質問で申し訳ないのですが、「inetdの役割」で 「UNIXでは現在実行中のプログラムのことをプロセスといいます」 という定義がありますよね。 この「プロセス」というものがもう一つよく分からないのです (inetdの説明上では理解できるんですが…)。 「実行中」というのは、1つのプロセスのプログラムがexecで 切り替わった場合も、プロセスとしては同じだという意味で 受け取っていいのでしょうか? また、プロセスというのは、カーネルがスケジュールに従って 実行時間を割り当てる単位と考えてもいいのでしょうか? それから、UNIXではプロセスを生成できるのはforkだけだと聞きますが、 forkって親プロセスのメモリイメージとレジスタを丸ごとコピーする んですよね。この場合、子プロセスが直ぐにexecでプログラムを切り替えても、 メモリ上には親プロセスのコピーがそのまま残るんでしょうか? (execで切り替わったプログラムが終了しても、子プロセスがまだ 実行を続けるかも知れないので、こんなコピーの残骸で一杯になりそうな 気がするのです…) それと、マルチプロセスと関連のありそうな言葉として、タスク、スレッド、 コンカレント、コルーチンなどとの相違も教えて頂ければうれしいです。 スレッドは、プロセス内プロセスみたいなもの…? コルーチンは、Windowsの3.1以前のアプリケーションみたいなもの…? なんか、ネットワークとぜんぜん関係ないなぁ…すいませんです(^^; |
mmさん、はじめまして(とか言ってみたりして(笑)) > execで切り替わった場合も、 > プロセスとしては同じだという意味で > 受け取っていいのでしょうか? #!/usr/local/bin/perl if ( $pid = fork ){ print "子プロセスは$pidです。\n"; sleep 2; system("ps aux|grep $ENV{USER}|grep perl"); print "\n"; sleep 4; system("ps aux|grep $ENV{USER}|grep -E '(perl|sleep)'"); wait; } else { sleep 4; exec("sleep 5"); } # fork、ps、子プロセスがexec(sleep)、psという順番で動くように、 # ところどころにsleepを入れてます。 を実行したところ、 子プロセスは714です。 zxr400 713 0.8 1.6 712 988 p2 S+ 7:25AM 0:00.02 perl fork (perl5.00404) zxr400 714 0.0 1.5 648 956 p2 S+ 7:25AM 0:00.00 perl fork (perl5.00404) zxr400 713 0.0 1.5 712 944 p2 S+ 7:25AM 0:00.02 perl fork (perl5.00404) zxr400 714 0.0 0.1 172 60 p2 S+ 7:25AM 0:00.00 sleep 5 となります。プロセス番号714の子プロセスが、exec sleep 5しても やはりプロセス番号は714のまま、ということだと思います。 > また、プロセスというのは、カーネルがスケジュールに従って > 実行時間を割り当てる単位と考えてもいいのでしょうか? 僕もそういうふうに理解しています。 > execで切り替わったプログラムが終了しても、子プロセスがまだ > 実行を続けるかも知れないので、こんなコピーの残骸で一杯になりそうな > 気がするのです… execが戻ってくるのはexecに失敗したときだけで、execの実行に成功すると 絶対に戻って来ません。だから元のプロセスのイメージを保持しておく 必要はないですから、OSが掃除してくれるんじゃないでしょうか。 > タスク、スレッド、コンカレント、コルーチン うーん、僕もよく知らないんですが…。スレッドに関しては、 > スレッドは、プロセス内プロセスみたいなもの…? でいいのかなぁ。 Javaではスレッドを使うことでプロセスの中で並列実行ができます よね。一方「マルチスレッド版echoサーバ」というのは、ただ単に 「並列処理ができるよ」くらいの意味ですが、別にスレッドを 使っているわけではなく、forkで実現しています。 また、FreeBSDではスレッドへの対応が進み、スレッドセーフな OSになりつつあるようです。 というわけで、「スレッド」という言葉はどの環境を指して 使うかで結構意味に違いがあるんじゃないかと思うんですが…。 あと、「タスク」はUNIXの用語でしたっけ。多分Winの用語かな と思うんですが、結局ここらへんはプロセスと呼ぶかタスクと 呼ぶかの違い、単純に呼称の違いではないかと思ってるんですが…。 コンカレント・コルーチンは初めて聞きました(^^; |
68user さん、どもです(笑い) >となります。プロセス番号714の子プロセスが、exec sleep 5しても >やはりプロセス番号は714のまま、ということだと思います。 そそ、そんなイメージでした(^^; 先のpsの時点と後のpsの時点では実行されているプログラムはちゃうけど、 プロセスとしては同じなんだという意味ですね。 >僕もそういうふうに理解しています。 安心しました(^o^;ゞ >Javaではスレッドを使うことでプロセスの中で並列実行ができますよね。 そのヘンがプロセスとスレッドとの違いかなと思っていたのです。 >というわけで、「スレッド」という言葉はどの環境を指して >使うかで結構意味に違いがあるんじゃないかと思うんですが…。 このヘンの用語は仰る通りだと思います。 で、一応UNIXでのことを伺ったつもりだったのですが、書いてませんでしたね(^^; 私にとっては、「スレッド」という言葉は少なくともコンピュータの分野では Javaで始めて聞いたような気もするんで(スレッドタイプの掲示板というのも ありますが…(^^;)、一応Javaのスレッドを想定していたのですが、 >一方「マルチスレッド版echoサーバ」というのは、ただ単に >「並列処理ができるよ」くらいの意味ですが、別にスレッドを >使っているわけではなく、forkで実現しています。 >また、FreeBSDではスレッドへの対応が進み、スレッドセーフな >OSになりつつあるようです。 ということは、一般的にはもっと広い意味がありそうですね。 >あと、「タスク」はUNIXの用語でしたっけ。多分Winの用語かな >と思うんですが、結局ここらへんはプロセスと呼ぶかタスクと >呼ぶかの違い、単純に呼称の違いではないかと思ってるんですが…。 あっ、UNIXでは「タスク」は使わないんですね。 確かに岩波の情報科学辞典なんかでも、「プロセス=タスク」としています。 ただ、「タスク」はWinの用語(その場合の意味は?)だけでなく、 もっと古くから使われているようで、その頃、「マルチタスク」と 「マルチプロセス」とは違うんだよ、というような話を 聞いたような気もしたもので…(^^; >コンカレント・コルーチンは初めて聞きました(^^; concurrent は、どうも並行という一般的な意味みたいです。 concurrent Pascalとかconcurrent CP/M なんてのを聞いたことが あったのですが、どのように並行してたのかは知りませんです。 (この並行と多重(multi)の違いもよく分からない(^^;) coroutinは、原始的な並行プロセスかな… 確か、各ルーチンごとに専用のスタックを持って、自分の処理が 一段落すると、レジスタなどの環境をスタックにpushして、 別のルーチンを呼ぶ。 別のルーチンも自分のスタックから環境をpopして処理を行い、 これが一段落すると、また環境をスタックにpushして元のルーチンや 別のルーチンを呼ぶ、ということを繰り返して並列処理を 実現するものだったと思います。 で、どれかのルーチンがCPUを独占してしまうと、 もう並行プロセスにならないってものなのです。 >execが戻ってくるのはexecに失敗したときだけで、execの実行に成功すると >絶対に戻って来ません。だから元のプロセスのイメージを保持しておく >必要はないですから、OSが掃除してくれるんじゃないでしょうか。 ありゃ…すいません、完全に誤解してました(^o^;ゞ execは戻らないんですね(MS-DOSとごっちゃにしてたかな?) 実は、シェルが一旦forkしてからexecするのも疑問だったのです。 |
ちょっと間違いです(^^; >execは戻らないんですね(MS-DOSとごっちゃにしてたかな?) MS-DOS でも exec は戻りませんでした。 (いずれにしても、単一プロセスのMS-DOSの感覚が なかなか抜けないみたいです…(^^;) |
AppleScript対応したtelnetソフトがないぃぃぃぃ… ってわけで、ここ1週間ほど、朝6時頃おきて、サーバーに繋いで コマンド打ち込んで…をくり返す毎日でございます。 ブラウザ上からCGI直接指定して、うまく動かせるようにできんかな… だったら、毎朝自動的に立ち上げてほっぽっときゃいいし(笑) |
下、ワシの発言です。 つい、名前のとこに「タイトル」を入れてしまった(笑) |
tarでファイルを一つにまとめて出来るファイル(% tar xf〜で指定)を直接いじって大丈夫でしょうか? ファイルの書き換えが面倒なので「% tar xf〜」で複数のファイルを一つにまとめ、一括して特定の文字列を置換したあと、 元に戻す…ってのをやりたいんですけど? |
すんません、お師さん。 下の質問は無視ぶっこいてください。 実験の結果、だめな事が立証できましたわ。 |
file1 file2を % tar cf file.tar file1 file2 でfile.tarにアーカイブして、file.tar自体をいじる、ってことですか? tarファイルはヘッダが付いてますので、一般的には無理です。 が、絶対不可能ってことはないんじゃないかなぁ。 エディタなどでは無理でしょうし、aをbに変換、なんてのは ヘッダを書き換えてしまう可能性があるのでダメでしょうが、 hogehogehogehogeをfugafugafugafugaに変換、ってのは たぶんできるんじゃないでしょうか。 とはいえ opendir(DIR,"."); @files = grep(/file\d/,readdir(DIR)); closedir(DIR); foreach $file (@files){ open(IN,$file); @buf = <IN>; close(IN); open(OUT,">$file"); foreach (@buf){ s/a/b/g; print OUT $_; } close(OUT); } なんてやる方をお勧めします(バックアップを忘れずに)。 # perlにファイル自体を書き換えるオプションがあったかな? |
># perlにファイル自体を書き換えるオプションがあったかな? perl -pi.bak -e "s/a/b/g;" file[0-9] では? |
> perl -pi.bak -e "s/a/b/g;" file[0-9] うーん、簡単ですねぇ。ちなみに僕は最近までオプションは -wと-e しか知りませんでした。でも最近-cを覚えました(^^; 分厚いマニュアルをめくってオプション調べるより自分で書いた方が 早いんで、なかなか覚えられないんですが、長い目で見るとさっさと オプション覚えた方がいいんでしょうけどね…。 # 一番悪いのは、青ラクダ本の目次。「オプション一覧」とか # 「スイッチ一覧」なんて項がない。どこに書いてあるかと # 言えば「コマンドインタプリタとの協調」。毎回オプション解説を # 探すのに苦労してます。…ま、言い訳ですな(^^; > ブラウザ上からCGI直接指定して、うまく動かせるようにできんかな… CGIはnobody権限で動きますので、CGI経由で作られるファイルは 全て所有者がnobodyとなります。ファイル消せなくなってあわてない ように(笑) |
># 一番悪いのは、青ラクダ本の目次。 青いラクダは、確かに読みづらいですよね。 私の場合、普段は「日本語 perl texinfo バージョン 4.0.19.2」のプレーンテキ スト版をオンラインマニュアルとしてを使ってます。高尾直弥さんという方の訳 ですが、リファレンス部分は赤いラクダとほぼ同内容だと思います。 ただ、今使ってるものはいろいろイジってて配布条件(GNU)上問題があるのと、 手元にオリジナルが見当たらないので、ちょっと探してみましたが、根性がない ので↓のようなHTML版しか見つけられませんでした(^^; http://www.cec.co.jp/usr/hasegawa/Docs/perl-jman/index.html でも、どこかに必ずオリジナルのtexinfo やプレーンテキスト版もあると思いま す(^o^;ゞ WindowsのヘルプやHTMLよりも、やっぱりエディタで正規表現検索が可能な普通の テキストが使い易い… |
日本語 perl texinfo の1頁ものがありました。 http://main.ipc.fukushima-u.ac.jp/fdai/man/perl.html テキスト版の前後を<pre></pre>で括っただけなので、ブラウザではちょっとヘンになりますが、 直ぐにテキストに戻せると思います。 |
どうもです。早速GETさせていただきました。 これでちょっとは賢くなれる…かな?(^^; |
はじめまして(^^; Perl関係で質問なのですが良いでしょうか。 Perlのみで画像(画像ファイル)の生成って出来ないんでしょうか? いろいろ書けるほど情報が集まってないので、簡単ですがこれで。 よろしくおねがいします。 |
はじめまして、SRM2さん(笑) うっとこの http://X68000.startshop.co.jp/~68user/cgi-bin/view-count.cgi?log=sum0+sum1+sum2+sum3 は、flyというプログラムを利用していますが、perl単体で ということなら、GD.pmというライブラリを使うといいでしょう。 http://www.genome.wi.mit.edu/pub/software/WWW/GD.html をどうぞ。英語ですが使い方は簡単にわかるはずです。 |
はじめまして、山口といいます。 いきなりの質問で失礼ですが、.forwardの中にメールアドレスを書くと、届いたメールはその書き込んだメールアドレス当てに転送されますが、その時もとのメールアドレスでもみれるようにするにはどうすれば良いでしょうか。 要するに転送する時に自分のところにオリジナルは置いておいて、そのコピーを転送するというぅような形にしたのですが。 どなたかアドバイスを下さい。 |
はじめまして 68userさん M.Masudaです。 いや〜こちらのページにはじめてよらせていただきましたが ずいぶんと勉強になります。 先ほど、CGIスクリプト関連をDOWNしたのでこれからおいおい 解析して勉強させていただきます。 にしても、PerlだけでなくUNIXやプロトコル・ネットワーク 関連の情報量には驚くばかりです。 これからも、宜しくお願いします。 ところで本題ですが。 自分で実験してみればいいのでしょうが、ファイルロックの アルゴリズムには、一般的にflockを採用している物や、ロッ クファイルを作成してスクリプト自身がロックを管理してい る物が有りますが、今までの68userさんの経験上どういう手 法が一番効果が高いでしょうか。 あと、下の山口さんの質問は私も興味ありです(笑) 本屋さんでオライリーのsendmailかmailの本でも買って勉強 すればいいのでしょうが、それだけのためにはオライリーシ リーズは高すぎる!!! ここでうなずいた方は、沢山いるはず(爆笑) #68userさんはレスの書込みの時間が遅い(早い?)ですが何 #をしてる方なのでしょうか? そろそろ中級に足のかかってきた私ですが、宜しく御教授下 さい。 |
はじめまして>山口さん、M.Masudaさん 山口さんのユーザ名がhoge、転送したいところがfoo@bar.com だとしたら、.forwardに \hoge,foo@bar.com と書けばいいです。カンマで区切ることで、複数の転送先を 指定できますから。しかし hoge,foo@bar.com と書いてしまうと、hoge宛に(つまり自分自身)転送されますが、 再度 .forwardが参照されて、またhogeに送ろうとして…という ふうに、無限ループに陥ります。 つまり、「\」を付けると「.forward を参照するな」という意味に なりますので、無限ループが防げるわけです。 # ただ「\」を付けなくても、大抵のメールサーバだと数回ループ # したら止まるでしょうし、最近のsendmailは賢いので一度もループ # しないかもしれません。でも、念のため \ を付けておいた方が # いいでしょう。 > 今までの68userさんの経験上どういう手法が一番効果が高いでしょうか。 特に詳しいわけではないんですが、選択肢としては 1.flock 2.mkdir 3.シンボリックリンク あたりでしょうか。うちのカウンタは3ですし、このBBSは2です。 flockはNFS環境では動かないところもある(動くところもある) ということで、使ったことは一度もありません。 ただ2も3も、たま〜にロックが残ったままになることはあるんですよね。 でもOSレベルでは完璧に排他処理はできているはずです。 ですから、webサーバがシグナルを送って、CGIのプロセスを止めたとき にロックが残るのではないかと思うんですが、本当にそうなのか、 どういう状況で起こるのか、などの検証はできていません。 完璧な方法があれば僕も知りたいです(^^; > #68userさんはレスの書込みの時間が遅い(早い?)ですが何 > #をしてる方なのでしょうか? ははは、生活リズムが不規則な ただの学生です(^^; |
どうもありがレスとうございます。 .forwardの設定早速指定してみます。 >完璧な方法があれば僕も知りたいです(^^; そうですか、まだ「これ!」ってセオリーは無いんですね(^^ゞ 今、flyを使ったカウンターを作ってるんですが、残ってしまった ロックファイルを削除する方法を考えてみます。 今までCUIはDOSしか触った事が無いのでUNIXのTABや矢印キーには 非常に驚き、非常によく作られたUNIXのシステムに感心しています。 おかげでキータッチがだいぶ早くなりました。(^_^)V この掲示板のタイトルに有る「UNIX,CGI,ネットワークの...」 は、今の私が求めているばかりで、ここは情報の宝庫です。 学生という事は、私よりだいぶ若いのにかなりの知識を持って いるようで恥ずかしいばかりですが、ぜひまた何かあったら教 えて下さい。m(_ _)m 宜しくお願いします。 |
訂正 誤:どうもありがレスとうございます。 正:どうもレスありがとうございます。 (^^ゞ |
68userさんご回答ありがとうございます。 68userさんの言う通りにやってみたところ、 ¥hoge,foo@bar.comのhogeにはメールが残らず、 すべてfooに転送されてしまいました。 何が行けないのでしょうか? hogeの前は「エンマーク」でいいのですよね。 |
僕が現時点で一番いいと思う方法は、シンボリックリンク自身に プロセス番号の情報を埋め込み、もしリンク作成できなかったら リンク先を調べて、さらに「/proc/プロセス番号」が存在するか どうかチェックする、ってのです。もし/proc/プロセス番号 が あれば、本当に実行中なわけですが、存在しなければ誤って ロック情報だけが残ってしまったわけで。 また、 $SIG{HUP}=$SIG{INT}=$SIG{QUIT}=\&finish; sub finish{ ロックファイルを削除;exit; } などと書くことで、誰か(WWWサーバなど)にシグナルを送られて プロセスを止められた場合にも、ロックファイルの後始末だけは 行って終了できます。 ただ、うちのカウンタはいろいろ試しているんですが、いまいち…です。 # CGIの場合、排他処理の失敗自体がたまにしか起きないので、 # 動作チェックしにくいですよね。 例えばこんな感じ。 BEGIN { &lock_on; } END { &lock_off; } sub lock_on { $SIG{TERM}=$SIG{INT}=$SIG{HUP}=$SIG{QUIT}=\&lock_off; my $lock_flg = 0; LOOP: foreach ( 1..3 ){ foreach ( 1..5 ){ $lock_flg = symlink("$$",$lockfile); if ( $lock_flg ){ last LOOP; } sleep 1; } if ( ! $lock_flg ){ if ( ! -f "/proc/".readlink($lockfile) ){ # なぜかロックファイルが残ってた 各種整合性のチェック; unlink($lockfile); } } } if ( ! $lock_flg ){ print "ロックファイルを作成できませんでした。\n"; exit; } } sub lock_off { unlink($lockfile); その他の後始末; exit; } > そうですか、まだ「これ!」ってセオリーは無いんですね(^^ゞ たぶんセオリーはあるんでしょうけど、僕が知らないだけです(^^; > hogeの前は「エンマーク」でいいのですよね。 全角の「¥」ではないですよ。半角の「\」です。 エンマークかバックスラッシュかは、表示される環境によります。 |
>たぶんセオリーはあるんでしょうけど、僕が知らないだけです(^^; いやいや、これだけ知ってれば十分じゃ....この概念は私的でした ね(^^ゞ 私のプログラミングは、BASICから入ってるのでいまだに構文の書 き方は、BASIC風です。(^^; しかも、Perlもフリーで配布しているCGIを解析して構文の記述を 勉強したりしてるので、Perl4やそれ以前の頃からプログラミング している人から比べたら、恥ずかしくって自分のプログラムなんて 公開できない。(T_T) まだまだ奥が深いPerlは、これだけを勉強して立派なPerl使いにな りたいんだけど、仕事柄これだけをやってるわけにいかないのが辛 いところです。(^^; 今同時進行で勉強してるのが、Perl,JavaScript,DHTNL,ネットワーク 関連、最近勉強を始めたDHTMLは、IEとネスケの互換性の無さにあき れています、ページを2重化したくないので同じページ内でIE・ネス ケそれぞれ3と4のバージョンで無難に表示させるのにてこずってま す。(^^; ところで以下の構文がまだよく分からないので、教えて下さい(T_T) 【1】 $SIG{HUP}=$SIG{INT}=$SIG{QUIT}=\&finish; ↑何をしているのか解からない(恥) シグナルハンドラをいじっているのは解かるんだけど、 hoge=foo=fuge=booの '=' の使い方の意味と、\&finishの'\'がリファ レンスを指す事は解かるんだけど、なぜ'\'そうするのかが解からない 【2】 my $lock_flg = 0; ←localとmyの使い分けがまだ理解できない アー恥ずかしかった。(^^ゞ この使い方は勉強になりました。 >$lock_flg = symlink("$$",$lockfile); >if ( $lock_flg ){ last LOOP; } こんなに簡単に書けるんですね!φ(._.) ># CGIの場合、排他処理の失敗自体がたまにしか起きないので、 ># 動作チェックしにくいですよね。 早いマシンより、遅いマシンに負荷が集中する時にエラーが出やす いんでしょうね。 ちなみに私の試験方法は、同じページ上に同じカウンタのURLを沢山 書いて、ブラウザのキャッシュを無効にしてリロードです。 #本当にこれでいいのか解からないけど、他に手段を知らない(^^ゞ ではまた。 |