68user's page 掲示板

Prev< No. 54〜82> Next  [最新発言に戻る] [過去ログ一覧]
No. 54 # ぱかぽこ 1998/12/18 (金) 16:27
UNIXでの日本語環境のことしりたいです!

No. 55 # ROL [E-mail] 1998/12/19 (土) 18:59
どもども、ROLっす。
g2のその後ですが、スクリプト自身は動いてるようなんですが
test-logディレクトリに1998-12-19.tgzと
testbbs-log.htmlの2ファイルはできてます。
でも、できてるだけ。
容量がそれぞれ1kと0K。
どうやらhttpdownでうまく落とせてない模様。
おっかしいなぁ???
プロキシがおかしいのかな???
プロキシってどこのでも問題ないですよね?

No. 56 # 68user 1998/12/21 (月) 03:46
    $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なら、どのディストリビューションか
などで結構違いますので、これだけではなんとも…

No. 57 # 東郷貴之 1998/12/23 (水) 05:21
User Agent統計を見て…
HI-UXは、僕です(^^;。
なんでも日立のHI…なのかどうかは知りませんが、
とにかく日立が関係してるようです。
そんだけしか知らない…(汗)
また、ブラウザのchimeraも僕です(たぶん)
なんかいろいろ試したかったもんで。
いや、だからなんだってわけじゃあないんですが。

No. 58 # ROL [E-mail] 1998/12/29 (火) 00:56
&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が何なのかが全然分かってないので、手がつけられないんですが…

No. 59 # 68user 1998/12/31 (木) 18:02
> とにかく日立が関係してるようです。

どうもです。早速更新しました。

> が問題なんでしょうね…多分。

事前に ~/test00 と ~/public_html/test-log をmkdirして
おけば大丈夫だとは思うんですが、どうでしょう。

> の-fが何なのかが全然分かってないので

本買いましょ〜。

ファイルが存在するかどうかのチェックです。/hoge/file
というファイルが存在すれば、-f "/hoge/file" は真に
なります。

# 他には
# -f ファイルがあるか
# -d ディレクトリがあるか
# -r 読み込み権限があるか
# てな感じです。あと20個くらいはあったはず。

    既にその日のアーカイブが存在する
→少し前にg2を実行した
→いちいち全部落とすのは時間がかかる
→事前に展開しておけば、時間の節約

というわけで、動作チェックをしている場合は
    # if ( -f "$main_dir/$1" ){ next; }
の行のコメントをはずすと、既にあるファイルは落とさなく
なるはずです。


今日の分をもちまして過去ログ作成は終了しますので、
あとはROLさんにまかせたっ。ではではでは。

No. 60 # ROL [E-mail] 1999/01/06 (水) 12:55
すんません、お師さん。原因はそれじゃないみたいです。
ちょこちょこかえて、「$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が巧く働いてないって事ですよね?
これはなんでなのかわかんないっす。
もういいかげん、いやになられたとは思いますが、すみませんが
ご教授くださいませ。

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
下、ワシの発言です。
つい、名前のとこに「タイトル」を入れてしまった(笑)

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