68user's page 掲示板

Prev< No. 67〜77> Next  [最新発言に戻る] [過去ログ一覧]
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以前のアプリケーションみたいなもの…?

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

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