68user's page 掲示板

Prev< No. 61〜90> Next  [最新発言に戻る] [過去ログ一覧]
No. 61 # 68user 1999/01/06 (水) 17:51
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を設定してやるとどうなりますか?

No. 62 # ROL [E-mail] 1999/01/06 (水) 18:46
追加
それぞれ出来た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には…?

No. 63 # 68user 1999/01/06 (水) 19:55
えっと、www.cs.gunma-uのproxyには、外部の人は接続できないはずです。
いつも使っているproxyを設定してください。

もしサーバ上から
    % telnet www.sega.co.jp 80
    GET / HTTP/1.0(リターン)
    (もいっかいリターン)
として、HTMLが出力されるならproxyは必要ないはずですが、
もしダメなら適切なproxyを設定する必要があります
(外部のポート80宛のパケットは通さない設定なのでしょう)

No. 64 # ROL [E-mail] 1999/01/07 (木) 18:05
    % telnet www.sega.co.jp 80
   GET / HTTP/1.0(リターン)
   (もいっかいリターン)
実行したらHTMLが出力されました!!!
ってことで、変数の定義の所の $proxy =以下と
&download内の
        print OUT "level 1\n";
        print OUT "httpproxy $proxy\n";
の2行を削除して、やってみます!!!

No. 65 # ケースケ [URL] 1999/01/07 (木) 21:55
はじめまして。
えっと、学校の端末でzipを解凍することはできないんですか?
そもそもunixではzipはだめなのですか?
おしえてください

No. 66 # 68user 1999/01/08 (金) 03:04
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
などで探せます。数分待てばいくつか表示されるので、お好きな
ものを使うといいでしょう。

No. 67 # ROL [E-mail] 1999/01/10 (日) 23:30
やっと…、やっとDLまではこぎつけました、はぁ長かった…
まぁまだまだ問題は山済み状態なんですが、一番大きな山はこえたのだと思ってます。

で、残された、私ではなんともならない問題…
そう、自動化です。
以前、某氏から触りの部分だけ、聞いたはずなんですか
さっぱり忘れてます。
なので、どういうファイル名のファイルか、
そしてそのファイルの中身でどういう指事をすれば
任意のCGIを任意の時間に自動的に動かすことができるのか…
これを御教授ください。

No. 68 # 68user 1999/01/11 (月) 01:04
まずは
    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サーバは関与しませんから、プログラムとか
スクリプトと言った方がいいですね。

No. 69 # ROL [E-mail] 1999/01/11 (月) 16:07
お師さん、いつもすみませんです。
お教えいただいた crontab とその説明ってFreeBSDのですよね。
BIGのサーバーは Linux 2.0.36で動いてるようで
まず「~/.crontab」って名前でファイルがおけなかったので
適当に名前を変えて、% crontab script
を実行してみましたが
「bash: /usr/bin/crontab: Permission denied」っていわれて、ダメです。
んで、「whitch crontab」で crontabコマンドを探すと
「whitch: command not found」っていわれちゃいます。
どないしたらよいのでしょうか?

あぁ、もうまったく手が出ない世界にアシを突っ込んでるな…

No. 70 # 68user 1999/01/11 (月) 18:02
    僕の場合.crontabというファイル名にしているだけで、
他のファイル名でも全く構いません。

> 「whitch crontab」で crontabコマンドを探すと

whichですよね。whitchじゃなくて。

> bash: /usr/bin/crontab: Permission denied

ん〜、とりあえず、
    % ls -l `where crontab` (「'」ではなく「`」で囲んでください)

    % ls -l `which crontab`
の結果を教えてください。あと、
    % id
の結果も。もしかしたらbigではcronは使えないように
なってるのかもしれません。その場合は、管理者に
お願いするしかないです。

No. 71 # ROL@胃潰瘍で仕事中に何やってんだおまえ…(笑) [E-mail] 1999/01/11 (月) 18:10
え、それぞれの結果です
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)

てな所ですが、どうなるでしょ?

No. 72 # 68user 1999/01/11 (月) 18:34
もいっかい。
    % ls -l /usr/bin/crontab
でお願いします。

No. 73 # ROL [E-mail] 1999/01/11 (月) 18:43
ls -l /usr/bin/crontab
-rwx------ 1 root bin 9008 Aug 24 1997 /usr/bin/crontab*

って結果です。
ってこれって、オーナーしか動かせないって事…(涙)

No. 74 # 68user 1999/01/11 (月) 19:30
その通りです。管理者にお願いしてみましょう。その結果ダメだと
言われたら残念ながらcronは不可、ということになります。
# ソース持ってってコンパイルとか…したいですか?

No. 75 # ROL [E-mail] 1999/01/12 (火) 15:29
だ、だめです、お師さん
>自動起動系のものはサーバーの保守の関係上、
>いかなる理由があろうとも一切禁止です。
だそうです(涙)

MacでAppleScriptで毎日サーバーにTelnet接続して
スクリプト起動させるようにする…しかないか?
(出来るかどうかは解らんけど…)

No. 76 # 68user 1999/01/13 (水) 02:13
うーん、仕方がないと言えば仕方がないですね。管理者が
そういう方針を取ることは理解できます。

結局は6:30に起動するプロセスがあれば、その中で
g2を実行すればいいわけです。内部にきっかけとなる
プロセスを用意することができないなら、外部から
呼ぶという手もあります。AppleScriptも一つの手ですね。

他には
・6:30に自動的にbigの中のあるwebを取得するように
    して、その中でCGIを動かしておく。そのCGIの中で
    g2を実行(CGIは普通nobody権限で動くので、そこら
    へんに問題あり)。
・6:30に自動的にbigにメールを送る。.forwardに
    メールが届くとあるプログラムが起動するように
    しておいて、現在時刻が6:30付近ならg2を実行
とかとか。

No. 77 # mm [URL] 1999/01/15 (金) 21:43
こちらでは、はじめまして。
「ネットワークプログラミングの基礎知識」を読ませて頂きました。
で、本題の方は、向こうで話題にしてしまったので(^^;
ちょっとズレた質問で申し訳ないのですが、「inetdの役割」で
「UNIXでは現在実行中のプログラムのことをプロセスといいます」
という定義がありますよね。
この「プロセス」というものがもう一つよく分からないのです
(inetdの説明上では理解できるんですが…)。

「実行中」というのは、1つのプロセスのプログラムがexecで
切り替わった場合も、プロセスとしては同じだという意味で
受け取っていいのでしょうか?
また、プロセスというのは、カーネルがスケジュールに従って
実行時間を割り当てる単位と考えてもいいのでしょうか?

それから、UNIXではプロセスを生成できるのはforkだけだと聞きますが、
forkって親プロセスのメモリイメージとレジスタを丸ごとコピーする
んですよね。この場合、子プロセスが直ぐにexecでプログラムを切り替えても、
メモリ上には親プロセスのコピーがそのまま残るんでしょうか?
(execで切り替わったプログラムが終了しても、子プロセスがまだ
実行を続けるかも知れないので、こんなコピーの残骸で一杯になりそうな
気がするのです…)

それと、マルチプロセスと関連のありそうな言葉として、タスク、スレッド、
コンカレント、コルーチンなどとの相違も教えて頂ければうれしいです。
スレッドは、プロセス内プロセスみたいなもの…?
コルーチンは、Windowsの3.1以前のアプリケーションみたいなもの…?

なんか、ネットワークとぜんぜん関係ないなぁ…すいませんです(^^;

No. 78 # 68user 1999/01/16 (土) 07:41
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の用語かな
と思うんですが、結局ここらへんはプロセスと呼ぶかタスクと
呼ぶかの違い、単純に呼称の違いではないかと思ってるんですが…。

コンカレント・コルーチンは初めて聞きました(^^;

No. 79 # mm 1999/01/16 (土) 18:51
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するのも疑問だったのです。

No. 80 # mm 1999/01/17 (日) 13:59
ちょっと間違いです(^^;
>execは戻らないんですね(MS-DOSとごっちゃにしてたかな?)
MS-DOS でも exec は戻りませんでした。
(いずれにしても、単一プロセスのMS-DOSの感覚が
なかなか抜けないみたいです…(^^;)

No. 81 # 涙… [E-mail] 1999/01/18 (月) 00:24
AppleScript対応したtelnetソフトがないぃぃぃぃ…
ってわけで、ここ1週間ほど、朝6時頃おきて、サーバーに繋いで
コマンド打ち込んで…をくり返す毎日でございます。

ブラウザ上からCGI直接指定して、うまく動かせるようにできんかな…
だったら、毎朝自動的に立ち上げてほっぽっときゃいいし(笑)

No. 82 # ROL [E-mail] 1999/01/18 (月) 00:25
下、ワシの発言です。
つい、名前のとこに「タイトル」を入れてしまった(笑)

No. 83 # ROL [E-mail] 1999/01/20 (水) 12:31
tarでファイルを一つにまとめて出来るファイル(% tar xf〜で指定)を直接いじって大丈夫でしょうか?
ファイルの書き換えが面倒なので「% tar xf〜」で複数のファイルを一つにまとめ、一括して特定の文字列を置換したあと、
元に戻す…ってのをやりたいんですけど?

No. 84 # ROL [E-mail] 1999/01/20 (水) 14:36
すんません、お師さん。
下の質問は無視ぶっこいてください。
実験の結果、だめな事が立証できましたわ。

No. 85 # 68user 1999/01/20 (水) 15:56
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にファイル自体を書き換えるオプションがあったかな?

No. 86 # mm 1999/01/21 (木) 03:26
># perlにファイル自体を書き換えるオプションがあったかな?
    perl -pi.bak -e "s/a/b/g;" file[0-9]
では?

No. 87 # 68user 1999/01/21 (木) 05:12
> perl -pi.bak -e "s/a/b/g;" file[0-9]

うーん、簡単ですねぇ。ちなみに僕は最近までオプションは -wと-e
しか知りませんでした。でも最近-cを覚えました(^^;

分厚いマニュアルをめくってオプション調べるより自分で書いた方が
早いんで、なかなか覚えられないんですが、長い目で見るとさっさと
オプション覚えた方がいいんでしょうけどね…。

# 一番悪いのは、青ラクダ本の目次。「オプション一覧」とか
# 「スイッチ一覧」なんて項がない。どこに書いてあるかと
# 言えば「コマンドインタプリタとの協調」。毎回オプション解説を
# 探すのに苦労してます。…ま、言い訳ですな(^^;

> ブラウザ上からCGI直接指定して、うまく動かせるようにできんかな…

CGIはnobody権限で動きますので、CGI経由で作られるファイルは
全て所有者がnobodyとなります。ファイル消せなくなってあわてない
ように(笑)

No. 88 # mm 1999/01/21 (木) 21:29
># 一番悪いのは、青ラクダ本の目次。

青いラクダは、確かに読みづらいですよね。
私の場合、普段は「日本語 perl texinfo バージョン 4.0.19.2」のプレーンテキ
スト版をオンラインマニュアルとしてを使ってます。高尾直弥さんという方の訳
ですが、リファレンス部分は赤いラクダとほぼ同内容だと思います。

ただ、今使ってるものはいろいろイジってて配布条件(GNU)上問題があるのと、
手元にオリジナルが見当たらないので、ちょっと探してみましたが、根性がない
ので↓のようなHTML版しか見つけられませんでした(^^;
    http://www.cec.co.jp/usr/hasegawa/Docs/perl-jman/index.html
でも、どこかに必ずオリジナルのtexinfo やプレーンテキスト版もあると思いま
す(^o^;ゞ

WindowsのヘルプやHTMLよりも、やっぱりエディタで正規表現検索が可能な普通の
テキストが使い易い…

No. 89 # mm 1999/01/21 (木) 22:15
日本語 perl texinfo の1頁ものがありました。
http://main.ipc.fukushima-u.ac.jp/fdai/man/perl.html
テキスト版の前後を<pre></pre>で括っただけなので、ブラウザではちょっとヘンになりますが、
直ぐにテキストに戻せると思います。

No. 90 # 68user 1999/01/24 (日) 00:21
どうもです。早速GETさせていただきました。
これでちょっとは賢くなれる…かな?(^^;

Prev< No. 61〜90> Next  [最新発言に戻る] [過去ログ一覧]