0

df コマンドは、マウントまたはアンマウントされたファイル システムによって占有されているディスク容量、使用済みおよび使用可能な容量、およびファイル システムの総容量のうち使用された容量を表示します。

Linux では次の場所/binに df コマンドがありますが、Solaris では次の場所/usr/gnu/bin ...

/usr/binが PATH に設定されていると仮定すると、プログラムによって、ユーザー定義の df の代わりに必要な df (上記のとおり) の 1 つが呼び出されるようにする必要があります。

この問題の解決策の 1 つは、una​​me を使用して OS を取得し、それに応じて df を設定することです... OS に依存していない場合に、これを行うための他のより良い方法はありますか。

注: デフォルトの df と gnu df は異なる出力を与えるため、2 つの異なる OS で必要な df コマンドをプログラムで呼び出す必要があります (パスは上記に記載されています)。

問題の解決策が見つかりません でした質問自体で提供した代替ソリューションを使用しました!

4

5 に答える 5

0

私が収集したものから、solaris システムには「df」の 2 つのバリアントがあります。私の提案: プロセスを開始する前に環境変数を変更してください。Python のサブプロセス インターフェイスを使用してこれを行うのは非常に簡単です。

ソリューション 1

呼び出しplatform.uname()て、OS が Solaris か Linux かを確認してください。この呼び出しは、オペレーティング システムに関するタプルを返すと思います。

import subprocess, os , platform
if(os.platform()[0] == 'Solaris') 
     my_env = os.environ.copy()
     my_env["PATH"] = "/usr/bin:" + my_env["PATH"]
     subprocess.Popen(my_command, env=my_env)

subprocess.Popen(my_command, env=NONE)

ソリューション 2

呼び出しは PATH の各エントリを 1 つずつチェックするため、[X](好きな df のパス) を PATH の先頭に追加します。solaris の場合は取得され、それ以外の場合は PATH の次のエントリに移動します。

于 2013-10-25T08:03:13.320 に答える
0

この問題の唯一の解決策は、una​​me を使用して OS を取得し、それに応じて df を設定することです...私が問題で述べたことと同じです!!!

于 2013-11-07T09:04:43.913 に答える