• ベストアンサー

ディスクの空き容量を求める(Win/Linux共通)

指定ディスクの空きディスクの容量を求める処理として、 Windowsでは、Win32::OLE を使って求められることをこちらで教えて頂きました。 http://oshiete1.goo.ne.jp/kotaeru.php3?q=1780512 同様なことをLinuxで実施するにはどうすれば良いでしょうか。 単純には、Linuxでは、dfコマンドなどを``バッククォートで実行して処理すれば良さそうですが、 できれば、Windows/Linux で共通のスクリプトとして書けたらと思っています。 方法があれば、教えてください。よろしくお願いします。

  • supob
  • お礼率81% (49/60)
  • Perl
  • 回答数4
  • ありがとう数6

質問者が選んだベストアンサー

  • ベストアンサー
  • vsba23895
  • ベストアンサー率58% (18/31)
回答No.2

CPAN の Filesys::DfPortable は、御希望そのものでは?

参考URL:
http://search.cpan.org/~iguthrie/Filesys-DfPortable-0.85/DfPortable.pm
supob
質問者

お礼

ご紹介ありがとうございました。 上記、補足しましたが、Windows環境(2000+ActivePerl v5.8.7です) へのインストールはどうやって行えば良いでしょうか? Linuxと同じようにやってみましたが、出来ませんでした。 C:\Perl\work\tar\Filesys-DfPortable-0.85>perl Makefile.PL OS = MSWin32 Building for Windows .... Checking if your kit is complete... Looks good Writing Makefile for Filesys::DfPortable C:\Perl\work\tar\Filesys-DfPortable-0.85>make Makefile:339: *** multiple target patterns. Stop. →このMakeは、Cygwinのもののようです。 ちょっと質問の方向が逸れてしまいますが、よろしくご教示ください。

supob
質問者

補足

あ、これです! ご紹介、ありがとうございます。 ということで、素人ながらインストールに挑戦・・・ ⇒Linuxは・・・見よう見まねで・・・成功した?感じです(下記) [/usr/local/src/Filesys] tar xvfz Filesys-DfPortable-0.85.tar.gz [/usr/local/src/Filesys] cd Filesys-DfPortable-0.85 [/usr/local/src/Filesys/Filesys-DfPortable-0.85] perl Makefile.PL OS = linux Checking for statvfs ..... : Checking if your kit is complete... Looks good Writing Makefile for Filesys::DfPortable [/usr/local/src/Filesys/Filesys-DfPortable-0.85] make cp DfPortable.pm blib/lib/Filesys/DfPortable.pm /usr/bin/perl /usr/lib/perl5/5.8.0/ExtUtils/xsubpp -prototypes -typemap /usr/lib/perl5/5.8.0/ExtUtils/typemap -typemap typemap DfPortable.xs > DfPortable.xsc && mv DfPortable.xsc DfPortable.c : chmod 644 blib/arch/auto/Filesys/DfPortable/DfPortable.bs Manifying blib/man3/Filesys::DfPortable.3pm [/usr/local/src/Filesys/Filesys-DfPortable-0.85] make test PERL_DL_NONLAZY=1 /usr/bin/perl "-Iblib/lib" "-Iblib/arch" test.pl 1..2 ok 1 ok 2 Results for directory: "/" in bytes: Total: 10565488640 Free: 9253040128 Available: 8716341248 Used: 1312448512 Percent Full: 13 All tests successful! [/usr/local/src/Filesys/Filesys-DfPortable-0.85] make install : Appending installation info to /usr/lib/perl5/5.8.0/i386-linux-thread-multi/perllocal.pod ⇒Windowsは・・・ ーっと、どうやってインストールすれば良いでしょう? まさか*.pmファイルをC:\Perl\libにコピーすればOKとか。。。やってみたけどダメでした。 (;.;

その他の回答 (3)

  • vsba23895
  • ベストアンサー率58% (18/31)
回答No.4

Linux でも、次のようにして install するのがお薦めです。 %perl -MCPAN -e shell >install Filesys::DfPortable 初回なら、まず >install Bundle::CPAN をして下さい。尚、/usr/local/lib/perl5/... に書き込み権が要るので、必要ならば sudo するとか。

supob
質問者

お礼

!思わず、おお!と言ってしまいました。 何度もありがとうございました。 >>必要ならば sudo するとか。 rootユーザで入ってオペしても同じことですよね。 何れにしましても、私自身、目に見えない感覚ですが、Levelがupした実感があります。今日は良い日でした。(^^ ありがとうございました。

  • BLUEPIXY
  • ベストアンサー率50% (3003/5914)
回答No.3

#1>##dfコマンドなどを``バッククォートで実行して処理ということになるでしょうか。 それでいいんじゃないでしょうか・というところで、、 #2で、紹介されているDfPortable いいですね♪ やっぱ、すでにあるならそれを使うのがいいんじゃないでしょうか。 やはり、作る前に探せ(大抵は誰かが作っているから)ってことですね。^^ とりあえず、インストールしてみました Windows の場合、DLLを呼び出すみたいですね。

supob
質問者

お礼

インストール分かりました!!(教えてもらいました) C:\Perl\work\Filesys-DfPortable-0.85>ppm PPM - Programmer's Package Manager version 3.2. Copyright (c) 2001 ActiveState Corp. All Rights Reserved. ActiveState is a division of Sophos. Entering interactive shell. Using Term::ReadLine::Perl as readline library. Type 'help' to get started. ppm> install Filesys::DfPortable ==================== Install 'Filesys-DfPortable' version 0.84 in ActivePerl 5.8.7.813. ==================== Downloaded 622 bytes. Downloaded 2549 bytes. Downloaded 3997 bytes. Downloaded 5457 bytes. Downloaded 7296 bytes. Extracting 9/9: blib/arch/auto/Filesys/DfPortable/DfPortable.lib Installing C:\Perl\site\lib\auto\Filesys\DfPortable\DfPortable.bs Installing C:\Perl\site\lib\auto\Filesys\DfPortable\DfPortable.dll Installing C:\Perl\site\lib\auto\Filesys\DfPortable\DfPortable.exp Installing C:\Perl\site\lib\auto\Filesys\DfPortable\DfPortable.lib Installing C:\Perl\html\site\lib\Filesys\DfPortable.html Files found in blib\arch: installing files in blib\lib into architecture dependent library tree Installing C:\Perl\site\lib\Filesys\DfPortable.pm Successfully installed Filesys-DfPortable version 0.84 in ActivePerl 5.8.7.813. ppm> q C:\Perl\work\Filesys-DfPortable-0.85>test.pl C:\>test.pl Total bytes: 39958409728 Total bytes free: 12213548544 Total bytes avail to me: 12213548544 Total bytes used: 27744861184 Percent full: 69 #2さんも見てるかなぁ・・・ まとめてで大変失礼しますが、ご教示色々とありがとうございました。助かりました。

supob
質問者

補足

>>とりあえず、インストールしてみました インストールの方法が・・・・(;.;

  • BLUEPIXY
  • ベストアンサー率50% (3003/5914)
回答No.1

UNIX では、ドライブという概念自体ありませんし、 そのような同じスクリプトは使えないと考えていいと思います。 ですが、 $^O で使用しているOSの名称が得られるので、 OSを判別して内部的に別々の処理を(それぞれのOSに応じたパッケージを呼び出す)するようにし、 表面的には同じ結果を返すというようにすれば良いかと思います。

supob
質問者

補足

BLUEPIXYさん、いつもありがとうございます。 >> $^O で使用しているOSの名称が得られるので、 この仕組みを使って、処理を振り分けることを考えたいと思いますが、 実際に「ディスク容量を求める」という部分については、 ##dfコマンドなどを``バッククォートで実行して処理 ということになるでしょうか。 補足、よろしくお願いします。

関連するQ&A

  • RedHat 9.0 でCGIが動いたのですが・・・

     再度、不満というよりも、不便なことが起きました・・・(爆  CGIは、「dos2unix」のコマンドを使うことによって解決したのですが、友人にスペースをあげているためにわざわざコマンドをするのは・・・  ということで、dos2unixをやらなくてもいい方法(スクリプト等??)はないでしょうか?  よろしくお願いします・・・。 参考になる・・・かな? 過去の質問 Red Hat Linux 9.0 でWebを公開したのですが・・・ http://oshiete1.goo.ne.jp/kotaeru.php3?q=614762 Red Hat Linux 9.0 でWebを公開したのですが・・・Pert.2 http://oshiete1.goo.ne.jp/kotaeru.php3?q=617184 Red Hat Linux 9.0 でWebを公開したのですが・・・Pert.3 http://oshiete1.goo.ne.jp/kotaeru.php3?q=618685 Red Hat Linux 9.0 でWebを公開したのですが・・・Pert.4 http://oshiete1.goo.ne.jp/kotaeru.php3?q=630574

  • Red Hat Linux 9.0 でWebを公開したのですが・・・Pert.3

     たびたび問題が起きました(;^_^A アセアセ… CGIが動かないのに加え、httpも動きません・・・ (Access forbidden!との表示) トップは動くのですが、その中にあるユーザディレクトリが見れません。 どなたかお力をお貸し下さい。 前質問 Pert.1 Red Hat Linux 9.0 でWebを公開したのですが・・・ http://oshiete1.goo.ne.jp/kotaeru.php3?q=614762 Pert.2-1(ミス Red Hat Linux 9.0 でWebを公開したのですが・・・Pert.2 http://oshiete1.goo.ne.jp/kotaeru.php3?q=617045 Pert.2-2 Red Hat Linux 9.0 でWebを公開したのですが・・・Pert.2 http://oshiete1.goo.ne.jp/kotaeru.php3?q=617184 参考にしたHP http://www.apache.jp/docs/howto/cgi.html#scriptalias http://acorn.zive.net/~oyaji/www/apache_linux.htm http://oshiete1.goo.ne.jp/kotaeru.php3?q=602630 ↑ちなみに試してみましたが、500エラーの内容が変わっただけでした。 perlのアップデートをしても、変わりません・・・。

  • linuxコマンドのdfで

    linuxコマンドのdf -h を使って ディスク使用量が50%以上のものだけ出力するにはどうしたらいいですか? df-h | ここからさっぱりわかりません。 至急お願いします。 コマンドの意味も添えてよろしくお願いします。

  • ディスクの空き容量を取得するシステム関数はありますか?

    ディスクの空き容量を取得するシステム関数はありますか? dfコマンドで、ディスクの空き容量を取得できますが、 このdfコマンドに相当するシステム関数はありますでしょうか? やりたいことは、例えば、/etc/varのディレクトリの空き容量がどれくらいあるかを取得したい ということです。 dfコマンドにより上記は、実現出来ますが、直接C言語から呼び出すことが可能なシステム関数があれば と思い質問しました。 上記に該当するシステム関数がない場合はsystem関数を使用してdfを実行する予定ですが、それは最後の手段と考えています。 OSはintel版solarisで使用する予定ですが、linux前提でもかまいません。

  • <超初心者>ディスクの容量を増やすには

    中古でULTRA30 (300MHz/256MRAM)買いSolaris9をインストールしようと思いました。ファイルシステムを配置したいディスクの選択でc0t0ds0(起動ディスク)しか選れべず約1000MB足りません。そこで、他にもインストールしたいものがたくさんあり容量を増やしたいのですが何かいい方法はありますか?外付けのHDを中古で購入するのがいいでしょうか?もしそうするなら何を気をつけなければいけないのか教えてください。パーティションの切り方とかもしりませんし。 http://oshiete1.goo.ne.jp/kotaeru.php3?q=1062244 は参考にさせていただきましたが初心者でして重複するかもしれず申し訳ございませんが宜しくお願い致します。

  • ディスク容量不足

    最近ノートパソコンがいつも「ディスク容量が不足しています」と表示されていて、 調べてみるとクリーンアップとデフラグをして300MB程度でした。 ウイルスバスター以外に特に何か入れている覚えはないのですが、 (検索しても50MB↑のファイルはウイルスバスターだけでした) このままだと新しいソフトなどを入れることができないので、 原因の思い当たる方がいれば教えていただけると幸いです。 (私としては1GB程度の空き容量が欲しいです) 初期化できればいいのでしょうけど、 http://oshiete1.goo.ne.jp/kotaeru.php3?q=2227354 こちらにありますように初期化できない状態ですので;; よろしくお願いします。

  • windowsで解凍してLinuxへ送る方法

    昨日、linuxで以下の質問をしました。 http://oshiete1.goo.ne.jp/kotaeru.php3?q=990805 それで、Windowsで解凍してLinuxへ送る方法が一番、簡単にできるということをアドバイスしていただいたのですが、どうすればいいのでしょうか?いろいろ考えてみたのですが、パソコンが1台しかなくwindows Meとfedora core2のデュアルブート環境なので転送方法をネットなどで調べたのですがわかりません。詳しい方、お願いします。

  • Red Hat Linux 9.0 でWebを公開したのですが・・・Pert.4

     長文になります。すみません_(._.)_  今回は、仕様が少し変わりました(^^;  前回までは、RedHatについているhttpdを使用していましたが、これに問題があるのかな?と思い、Apacheをインストールしました。(&RedHat9.0もクリーンインストール)  一通りの設定を終え見てみると、HPはトップ・ユーザディレクトリとも表示されるものの、cgiはやっぱり出ず、次の文が出ました。 Forbidden You don't have permission to access /~Username/top/bbs/fbbs/ezbbs.cgi on this server. --------------------------------------------------------------------------- Apache/2.0.46 (Unix) Server at www.hogehoge.net Port 80 (ドメイン伏せさせていただきます_(._.)_) したいことは、ホーム(www.hogehoge.net)以下、どんなディレクトリ名でもCGI・SSLの使用を許可する(ユーザディレクトリを含む)。ということです。(プロバイダのよう、かな?) よろしくお願いします。_(._.)_ 前質問 Pert.1 Red Hat Linux 9.0 でWebを公開したのですが・・・ http://oshiete1.goo.ne.jp/kotaeru.php3?q=614762 Pert.2 Red Hat Linux 9.0 でWebを公開したのですが・・・Pert.2 http://oshiete1.goo.ne.jp/kotaeru.php3?q=617184 Pert.3 Red Hat Linux 9.0 でWebを公開したのですが・・・Pert.3 http://oshiete1.goo.ne.jp/kotaeru.php3?q=618685 参考にしたHP http://www.apache.jp/docs/howto/cgi.html#scriptalias http://acorn.zive.net/~oyaji/www/apache_linux.htm http://oshiete1.goo.ne.jp/kotaeru.php3?q=602630

  • Linuxのサーバで「df」コマンドの結果をメールで送るシェルスクリプト

    すみません、教えていただきたいのですが、 Linuxのサーバでdfコマンドを行った結果、使用率が90%を超えた場合に「mail」コマンドでメールを送るシェルスクリプトを作りたいと思っています。 ご協力よろしくお願いします。

  • Linuxで外付けハードデスクを使う方法

    ご指導をお願いします。 タイトルのとおり、Linux(FedoraCore4)で外付けのハードデスクを使う方法を教えてください。 ※FedoraCore4って、USBをサポートしていましたよね? また、メインの内蔵ハードデスクから外付けハートデスクへのバックアップの方法も教えていただけると幸いです。 ※定期でもコマンドでもどちらでもOKです。 ※この設定の方法が詳しく記載されているサイトの紹介もお願いします。 また、こちら(http://oshiete1.goo.ne.jp/kotaeru.php3?q=1880803)も合わせてご指導をお願いします。

専門家に質問してみよう