2016-05-13 20 views
0

サードパーティ製のアプリケーションによって吐き出されたログファイルを収集するための非常に短いプログラムを作成しました。それはファイルを圧縮し、それらを私にメールします。OS Xでの基本的なマシン情報の取得

私はまた、マシンに関するいくつかの情報、特にそのグラフィック機能を収集したいと思います。基本的には、System Report、Hardware and Graphics/Displaysの2つのページが必要です。ゲシュタルトはなくなったので、私は他の解決策を探しています。

ここでは、sysctlbynameを使用してマシンのモデルを取得するための解決策を見つけましたが、ここでの値はかなり限られているようです。

だれでもGPU情報を取得する簡単な方法はありますか? NSTaskとして、それを実行するターミナルでコマンドラインからシステムプロファイラを使用して、または

+1

http://stackoverflow.com/a/18099669/1016102 –

+0

うわー、私はあなたがマウスを握るまであなたがそれをすることができるか分からなかった。 –

答えて

2

(スウィフト)コード。まず、私はシェルコマンドを実行するためにthis solutionを使用:

func shell(launchPath: String, arguments: [String]) -> String 
{ 
    let task = NSTask() 
    task.launchPath = launchPath 
    task.arguments = arguments 

    let pipe = NSPipe() 
    task.standardOutput = pipe 
    task.launch() 

    let data = pipe.fileHandleForReading.readDataToEndOfFile() 
    let output: String = NSString(data: data, encoding: NSUTF8StringEncoding)! as String 

    return output 
} 

次にsystem_profilerで遊んでのビットの後、私は二つの鍵、SPHardwareDataTypeSPDisplaysDataTypeに興味がわかりました。それで私はsystem_profilerがどこにあるのか疑問に思ったが、which system_profilerはそれを解決した。だから私は最終的に私が必要なものを手に入れました:

let ai = shell("/usr/sbin/system_profiler", arguments: ["SPHardwareDataType", "SPDisplaysDataType"]) 

結果はそのままの形で書かれた文字列です。

+0

成功したコードをお寄せいただきありがとうございます。 –

+0

問題はありません。正しいキーを選択する限り、これは一般的にゲシュタルト置換として非常に便利です。彼らはこれをAPI、IMHOに組み込むべきです。 –

1

:ここでそれを行う方法ですが、

/usr/sbin/system_profiler | awk '/^Graphics/{p=1;print;next} /^[A-Z]/{p=0} p' 

出力上記のマークの答えに続き

Graphics/Displays: 

AMD Radeon R9 M395: 

    Chipset Model: AMD Radeon R9 M395 
    Type: GPU 
    Bus: PCIe 
    PCIe Lane Width: x16 
    VRAM (Total): 2048 MB 
    Vendor: ATI (0x1002) 
    Device ID: 0x6920 
    Revision ID: 0x0001 
    ROM Revision: 113-C905AA-799 
    EFI Driver Version: 01.00.799 
    Displays: 
    iMac: 
     Display Type: Retina LCD 
     Resolution: 5120 x 2880 Retina 
     Retina: Yes 
     Pixel Depth: 30-Bit Color (ARGB2101010) 
     Main Display: Yes 
     Mirror: Off 
     Online: Yes 
     Built-In: Yes 
+0

NSTaskを使用してアプリでこれを実行するだけですか?私はパイプでそれを試したことはありません、ここに行く... –

+0

あなたはそれが何を好きなら、はい。あるいは、awkを残してObjective-Cで解析することもできます。 –

+0

@MauryMarkowitzちょっとした説明を追加しました。 –

関連する問題