`du`がうまくいかない
[上に]
[前に]
[次に]
ぜむ
1999/03/31(水) 04:37:47
telnetが許可されていないISPでホームページの量を
調べるためにPerlで簡単に表示できないかと思ってい
ろいろとやっています。
しかし、
@du = `du`;
のようにしても、
$du = `du`
のようにしても
@duや$duには全く何も入ってくれません。
また、pwdやlsも入ってくれませんでした。
しかしdateやhostnameでは、ちゃんとコマンドの結果
が入ってくれます。
いろいろ調べ回ったのですが、さっぱり原因が掴め
ません。
CGIはnobodyで走っているようです。
この現象の原因や、CGIでファイル量を取る方法など、
ご教示いただければと思います。
よろしくお願いします。
B-Cus
1999/03/31(水) 07:03:55
`du 2>&1` で、du: not found となれば、パスが通ってません。
/usr/bin/du などとフルパスで指定してください。
ぜむ
1999/03/31(水) 14:48:38
書くのを忘れていました。
`du 2>&1`
は、まだ試していませんが、
@du = `usr/bin/du/`
といったふうに duにパスを通しても@duには何も
入りませんでした。
とりあえず`du 2>&1`をやってみます。
ぜむ
1999/03/31(水) 14:49:53
上の記事の訂正です。
@du = `/usr/bin/du`
です。
ぜむ
1999/03/31(水) 15:49:19
`du 2>&1`
でprintしてみたら、
Permission denied
になっちゃってました。
nobodyでCGIが動いているからでしょうか。
これではもう`du`ではどうしようもなさそうですが、
duが使えないとなると、特定のディレクトリ下(サ
ブディレクトリも含)のファイル量をCGIで取るに
は、どうすればよいのでしょうか。
よい知恵をお貸しください。
ふじ
[HomePage]
1999/03/31(水) 16:16:40
>duが使えないとなると、特定のディレクトリ下(サ
>ブディレクトリも含)のファイル量をCGIで取るに
>は、どうすればよいのでしょうか。
強引かも知れませんが、以下のような再帰関数を書けば・・・
・引数として渡されたディレクトリを開く。(opendir)
・開いたディレクトリのファイル一覧を読んで(readdir)
・一覧の要素がディレクトリでなければ -s でサイズを取得
・ディレクトリなら、そのディレクトリ名を引数として、自分自身を呼ぶ
というような。
#絶対もっと簡単な方法がある気がする(^^;
mo
[E-Mail]
1999/03/31(水) 16:35:16
require "find.pl"
&find('directory');
...
sub wanted { ... }
で、ディレクトリの中を再帰的に辿れます。
# すみません、いま、仕事中で忙しいので、詳細は本か何か、
# あるいは perl ライブラリの中にある find.pl の中身を読んで下さい。
ふじ
[HomePage]
1999/03/31(水) 16:49:56
require('find.pl');
&find(DIRNAME);
print $size;
sub wanted{
$size += -s $name;
}
これでOK?
便利なものがあるんですね。勉強になります。
ぜむ
1999/04/01(木) 01:25:27
[[解決]]
find.pl使ってなんとかなりそうです。
ありがとうございました。
ただ読み込みパーミッションを立ててないディレクトリ
は読めないようですね。
そのあたりはやはりどうしようもないのでしょうか。
[上に]
[前に]
[次に]