情報システム取得モジュールpsutil

psutilモジュールの紹介

  psutilカットは、便利な機能を提供するオープンソースのクロスプラットフォームのライブラリは、CPU、メモリ、ディスク、ネットワークなどのようなシステム情報を行う前に取得するために使用されています。また、psutilがあるか否かを決定する工程を含む、プロセス管理のためにも使用することができ、プロセス、および詳細は、他のプロセスのリストを取得します。そしてpsutilもの多くを含むコマンドラインツール、機能を提供します。ps、トップ、lsofは、netstatコマンド、ifconfigコマンドを、誰が、DF、キル、無料、素敵な、ionice、iostatの、iotopの、稼働時間、pidof、TTY、タスクセット、PMAP 。

  psutilは、公式ウェブサイトで見つけ、次のオペレーティングシステムをサポートし、クロスプラットフォームのライブラリです。

- Linuxの
- Windowsの
- OSX
- FreeBSDの
- OpenBSDの
- NetBSDの
- Sun Solaris版
- AIX

2.6から3.XのにPythonのバージョンで動作

モジュールpsutilインストール

  psutilは、使用するためにインストールする必要があり、サードパーティのオープンソースプロジェクトです。ここでは、コマンドをインストールPIP使用

`pip3 ``install` `psutil`

 システム機能の機能は、CPU、ディスク、メモリ、ネットワークなどの情報を取得するために、前記異常クラス、関数および定数関数を含むpsutil。クラスは、プロセス管理機能を実装するために使用されます。

機能機能

  ここで演奏機能を提供psutil以下のパフォーマンス機能のいくつかの寸法を説明するが、以下のカテゴリに分けられます。

CPU関連

  CPU_COUNTは(、[論理])戻り値:論理的なパラメータがFalseに設定された論理CPUのデフォルトの数は、物理的なCPUの数を返します。

`>>> ``import` `psutil``>>> psutil.cpu_count()``8``>>> psutil.cpu_count(logical``=``False``)``4`

  cpu_percent([percpu]、[間隔]):時間間隔の実行中の平均利用率がTrueに設定されている場合、CPU使用率を返しpercpuは、すべての物理コア利用率を示し、0間隔、表示が遮断されません

`>>> ``import` `psutil``>>> psutil.cpu_percent()``6.7``>>> psutil.cpu_percent(percpu``=``True``)``[``17.7``, ``0.9``, ``11.0``, ``1.0``, ``11.1``, ``0.9``, ``10.7``, ``0.9``]``>>> psutil.cpu_percent(percpu``=``True``,interval``=``2``)``[``16.0``, ``0.0``, ``8.5``, ``1.0``, ``14.4``, ``0.5``, ``9.5``, ``1.0``]`

  CPU_TIME([percpu])は:percpuが費やさ各CPU時間を取得し、CPU時間タプル(namedtuple)の名前の形式をとり返し

`>>> ``import` `psutil``>>> psutil.cpu_times()``scputimes(user``=``5471.2``, nice``=``0.0``, system``=``5633.92``, idle``=``1295903.87``, iowait``=``2651.2``, irq``=``16.44``, softirq``=``137.87``, steal``=``0.0``, guest``=``0.0``)``>>> psutil.cpu_times(percpu``=``True``)``[scputimes(user``=``2803.53``, nice``=``0.0``, system``=``2824.3``, idle``=``648996.02``, iowait``=``153.71``, irq``=``16.26``, softirq``=``64.71``, steal``=``0.0``, guest``=``0.0``),``scputimes(user``=``2667.74``, nice``=``0.0``, system``=``2809.74``, idle``=``646935.11``, iowait``=``2497.58``, irq``=``0.18``, softirq``=``73.15``, steal``=``0.0``, guest``=``0.0``)]`

IMG 命名についての情報を取得するためのタプルの簡単な方法

  cpu_times_percent(、[percpu]):実質的に同一の機能cpu_times、文字通りの意味を知ることができます見て、関数が戻っ比は時間がかかります。

`>>> ``import` `psutil``>>> psutil.cpu_times_percent()``scputimes(user``=``0.3``, nice``=``0.0``, system``=``0.4``, idle``=``99.0``, iowait``=``0.3``, irq``=``0.0``, softirq``=``0.0``, steal``=``0.0``, guest``=``0.0``)``>>> psutil.cpu_times_percent(percpu``=``True``)``[scputimes(user``=``0.3``, nice``=``0.0``, system``=``0.4``, idle``=``99.3``, iowait``=``0.0``, irq``=``0.0``, softirq``=``0.0``, steal``=``0.0``, guest``=``0.0``),``scputimes(user``=``0.3``, nice``=``0.0``, system``=``0.4``, idle``=``98.7``, iowait``=``0.6``, irq``=``0.0``, softirq``=``0.0``, steal``=``0.0``, guest``=``0.0``)]`

  cpu_stats():コンテキストスイッチ、割り込み、ソフトウェア割り込みやシステムコールを含むフォームの名前をタプルに戻り、CPUの統計情報を、。

`>>> ``import` `psutil``>>> psutil.cpu_stats()``scpustats(ctx_switches``=``393538808``, interrupts``=``194683724``, soft_interrupts``=``151546977``, syscalls``=``0``)`

メモリ関連

  virtual_memoryは():総メモリを含むタプルという名前のフォーム、使用可能なメモリ、メモリ使用率、バッファキャッシュ、などでメモリ使用量を返します。バイト。

`>>> ``import` `psutil``>>> psutil.virtual_memory()``svmem(total``=``1964584960``, available``=``1375827968``, percent``=``30.0``, used``=``432644096``,``free``=``600588288``, active``=``710012928``, inactive``=``484106240``, buffers``=``238247936``,``cached``=``693104640``, shared``=``716800``)`

Ctrl + Cを押してコードをコピーします

Ctrl + Cを押してコードをコピーします

  swap_memoryは():スワップにスワップページアウトを備え、名前のスワップメモリ​​の利用形態にタプルを返します。

`>>> ``import` `psutil``>>> psutil.swap_memory()``sswap(total``=``2113925120``, used``=``12206080``, free``=``2101719040``, percent``=``0.6``,``sin``=``29061120``, sout``=``87228416``)`

ディスク関連

  名前にフォームのすべてのタプルは、ディスク名を含む、ファイルシステムの種類および他の情報のマウントポイントをディスク装着返す:disk_partitions([すべて= FALSE])。すべてがTrueに等しい場合、情報リターン/ procファイルシステムや他の特別なマウントを備え

`>>> ``import` `psutil``>>> psutil.disk_partitions()``[sdiskpart(device``=``'/dev/mapper/VolGroup-lv_root'``, mountpoint``=``'/'``, fstype``=``'ext4'``, opts``=``'rw'``),``sdiskpart(device``=``'/dev/sda1'``, mountpoint``=``'/boot'``, fstype``=``'ext4'``, opts``=``'rw'``),``sdiskpart(device``=``'/dev/mapper/VolGroup-lv_home'``, mountpoint``=``'/home'``, fstype``=``'ext4'``, opts``=``'rw'``)]` `# 查询指定挂载点的信息``>>> [ device ``for` `device ``in` `psutil.disk_partitions() ``if` `device.mountpoint ``=``=` `'/'` `]``[sdiskpart(device``=``'/dev/mapper/VolGroup-lv_root'``, mountpoint``=``'/'``, fstype``=``'ext4'``, opts``=``'rw'``)]`

  disk_usage(パス):ディスク容量などの名タプル形式にディスク使用量のパスを返し、ディスク容量は、ディスク容量の使用率を使用されてきました。

`>>> ``import` `psutil``>>> psutil.disk_usage(``'/'``)``sdiskusage(total``=``32105152512``, used``=``11395198976``, free``=``19072290816``, percent``=``37.4``)`

  disk_io_counters([perdisk])、リードを含む形式のタプルを、名前番号を書き込み、書き込まれたというようにバイト数を読み取ること(凝集)統計ioのディスクを返し。(:統計namedtupleとしてディスク名のキー、値の辞書)perdisk値がTrueの場合は、単一のディスクの統計情報を一覧表示します。

`import` `psutil``>>> psutil.disk_io_counters()``sdiskio(read_count``=``356568``, write_count``=``12058367``, read_bytes``=``12599494656``,``write_bytes``=``92961665024``, read_time``=``260945``, write_time``=``40815092``,``read_merged_count``=``32656``, write_merged_count``=``6334256``, busy_time``=``4421438``)``>>> psutil.disk_io_counters(perdisk``=``True``)``{``'sda1'``: sdiskio(read_count``=``737``, write_count``=``129``, read_bytes``=``7100416``,``write_bytes``=``5615616``, read_time``=``61``, write_time``=``578``, read_merged_count``=``496``,``write_merged_count``=``5349``, busy_time``=``257``), ``'sda2'``: sdiskio(read_count``=``161575``,``write_count``=``2825934``, read_bytes``=``6296442880``, write_bytes``=``46478901248``,``read_time``=``113557``, write_time``=``1580954``, read_merged_count``=``32160``,``write_merged_count``=``6328960``, busy_time``=``1026283``),``'dm-0'``: sdiskio(read_count``=``111371``, write_count``=``4944247``, read_bytes``=``2401461248``,``write_bytes``=``28988342272``, read_time``=``117846``, write_time``=``25992150``, read_merged_count``=``0``,``write_merged_count``=``0``, busy_time``=``2924323``), ``'dm-1'``: sdiskio(read_count``=``7482``,``write_count``=``21296``, read_bytes``=``30646272``, write_bytes``=``87228416``, read_time``=``8656``,``write_time``=``55930``, read_merged_count``=``0``, write_merged_count``=``0``, busy_time``=``1326``),``'dm-2'``: sdiskio(read_count``=``75407``, write_count``=``4267078``, read_bytes``=``3863860224``,``write_bytes``=``17403330560``, read_time``=``20849``, write_time``=``13185771``, read_merged_count``=``0``,``write_merged_count``=``0``, busy_time``=``469527``)}`

ネットワーク関連

  net_io_counter([pernic])は:バイトA送受信機の数、送信の数を含む現在の統計IO各カードの名称タプルネットワーク状システムに戻り、パケット、パケットエラー状況を受信し、状況が削除しました。ときpernic Trueの場合、すべてのネットワークカードのリストの統計情報を表示します。

`>>> ``import` `psutil``>>> psutil.net_io_counters()``snetio(bytes_sent``=``428286398``, bytes_recv``=``542982044``, packets_sent``=``3768555``,``packets_recv``=``4169425``, errin``=``0``, errout``=``0``, dropin``=``0``, dropout``=``0``)``>>> psutil.net_io_counters(pernic``=``True``)``{``'lo'``: snetio(bytes_sent``=``339700487``, bytes_recv``=``339700487``, packets_sent``=``3363412``,``packets_recv``=``3363412``, errin``=``0``, errout``=``0``, dropin``=``0``, dropout``=``0``), ``'eth0'``:``snetio(bytes_sent``=``88616264``, bytes_recv``=``203314200``, packets_sent``=``405585``,``packets_recv``=``806516``, errin``=``0``, errout``=``0``, dropin``=``0``, dropout``=``0``), ``'virbr0'``: snetio(bytes_sent``=``0``,``bytes_recv``=``0``, packets_sent``=``0``, packets_recv``=``0``, errin``=``0``, errout``=``0``, dropin``=``0``, dropout``=``0``),``'virbr0-nic'``: snetio(bytes_sent``=``0``, bytes_recv``=``0``, packets_sent``=``0``, packets_recv``=``0``, errin``=``0``,``errout``=``0``, dropin``=``0``, dropout``=``0``)}`

  各ネットワーク接続のリストとして返さ詳細(namedtuple):net_connections([種類])。名前付きタプルは、FD、家族、タイプ、LADDR、RADDR、状態、PIDおよびその他の情報が含まれています。種類はサポートされている値、フィルタの接続タイプを示し:(デフォルトINET)

  • INET:IPv4とIPv6
    • inet4:IPv4の
      • INET6:IPv6の
        • TCP:TCP
          • tcp4:IPv4の上のTCP
            • tcp6:IPv6の上のTCP
              • UDP:UDP
                • udp4:IPv4の上のUDP
                  • UDP6:IPv6を介しUDP
                    • UNIX:UNIXソケット(UDPとTCPプロトコルの両方)
                      • すべて:すべての可能な家族とプロトコルの合計
`>>> ``import` `psutil``>>> psutil.net_connections()``[sconn(fd``=``6``, family``=```2``>, ``type``=```1``>,``laddr``=``addr(ip``=``'0.0.0.0'``, port``=``8080``), raddr``=``(), status``=``'LISTEN'``, pid``=``21834``),``sconn(fd``=``3``, family``=```2``>, ``type``=```1``>,``laddr``=``addr(ip``=``'0.0.0.0'``, port``=``22``), raddr``=``(), status``=``'LISTEN'``, pid``=``8971``),``sconn(fd``=``-``1``, family``=```2``>, ``type``=```1``>,``laddr``=``addr(ip``=``'127.0.0.1'``, port``=``10050``), raddr``=``addr(ip``=``'127.0.0.1'``, port``=``46710``),``status``=``'TIME_WAIT'``, pid``=``None``),`

  net_if_addrs():フォーム辞書にネットワークカードの構成情報を返し、MACアドレス、IPアドレス、サブネットマスク、およびブロードキャストアドレスを含みます。

`>>> psutil.net_if_addrs()``{``'lo'``: [snic(family``=```2``>, address``=``'127.0.0.1'``, netmask``=``'255.0.0.0'``, broadcast``=``None``, ptp``=``None``),``snic(family``=```10``>, address``=``'::1'``, netmask``=``'ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff'``, broadcast``=``None``, ptp``=``None``),``snic(family``=```17``>, address``=``'00:00:00:00:00:00'``, netmask``=``None``, broadcast``=``None``, ptp``=``None``)],``'eth0'``: [snic(family``=```2``>, address``=``'10.0.0.3'``, netmask``=``'255.255.255.0'``, broadcast``=``'10.0.0.255'``, ptp``=``None``),``snic(family``=```10``>, address``=``'fe80::21c:42ff:fe52:ae47%eth0'``, netmask``=``'ffff:ffff:ffff:ffff::'``, broadcast``=``None``, ptp``=``None``),``snic(family``=```17``>, address``=``'00:1c:42:52:ae:47'``, netmask``=``None``, broadcast``=``'ff:ff:ff:ff:ff:ff'``, ptp``=``None``)],``'virbr0'``: [snic(family``=```2``>, address``=``'192.168.122.1'``, netmask``=``'255.255.255.0'``, broadcast``=``'192.168.122.255'``, ptp``=``None``),``snic(family``=```17``>, address``=``'52:54:00:04:87:ce'``, netmask``=``None``, broadcast``=``'ff:ff:ff:ff:ff:ff'``, ptp``=``None``)],``'virbr0-nic'``: [snic(family``=```17``>, address``=``'52:54:00:04:87:ce'``, netmask``=``None``, broadcast``=``'ff:ff:ff:ff:ff:ff'``, ptp``=``None``)]}`

  net_if_stats()、通信タイプ、伝送速度とMTUを開始するかどうかなど、カードの詳細情報を返します。

`>>> ``import` `psutil``>>> psutil.net_if_stats()``{``'lo'``: snicstats(isup``=``True``, duplex``=```0``>, speed``=``0``, mtu``=``65536``),``'eth0'``: snicstats(isup``=``True``, duplex``=```0``>, speed``=``0``, mtu``=``1500``),``'virbr0'``: snicstats(isup``=``True``, duplex``=```0``>, speed``=``0``, mtu``=``1500``),``'virbr0-nic'``: snicstats(isup``=``False``, duplex``=```2``>, speed``=``10``, mtu``=``1500``)}``>>>`

他の

  ユーザー():ユーザー名、ログイン、端末の時間、およびホスト情報を含め、現在のログインユーザの情報を返すためとして名前タプル

`>>> ``import` `psutil``>>> psutil.users()``[suser(name``=``'root'``, terminal``=``'tty1'``, host``=``'', started``=``1513498496.0``, pid``=``9327``),``suser(name``=``'root'``, terminal``=``'pts/0'``, host``=``'10.0.0.2'``, started``=``1515335808.0``, pid``=``30838``),``suser(name``=``'root'``, terminal``=``'pts/2'``, host``=``'10.0.0.2'``, started``=``1515324032.0``, pid``=``21939``)]` `# start 表示登陆的时间(时间戳格式)`

  boot_timeは():の形でシステム起動のタイムスタンプを返します。

`>>> ``import` `psutil``>>> psutil.boot_time()``1514678349.0`` `

IMG

1 >>> import datetime
2 >>> import psutil
3 >>> datetime.datetime.fromtimestamp(psutil.boot_time ()).strftime("%Y-%m-%d %H: %M: %S")

psutilプロセス管理

psutilもあるかどうかを決定する、プロセスのリストへのアクセスを含む、工程管理として機能する能力を提供します。

  プロセスカテゴリー:カプセル化のプロセス、方法のクラスは、より多くの情報のために使用、またはプロセスにシグナルを送ることができます。

`>>> ``import` `psutil``>>> init_process ``=` `psutil.Process(``1``)``>>> init_process``psutil.Process(pid``=``1``, name``=``'launchd'``, started``=``'20:41:22'``)  ``# 进程id、名称、启动时间`

Processクラスは、プロセスに関連する情報を取得するために使用される多くの他の方法を提供します

  • 名前:プロセス名を取得
  • CMDLINE:コマンドラインパラメータの処理を開始するために取得
  • CREATE_TIME:プロセスの作成時間を取得(タイムスタンプ形式)
  • num_fds:ファイルの数は、プロセスによって開かれました
  • プロセスのサブプロセスの数:NUM_THREADS
  • is_running:プロセスが実行されているかどうかを判断します
  • send_signal:プロセスに信号を送信し、及び他の類似os.kill
  • 殺す:送信は、プロセスの終了を通知SIGKILL
  • 終了:送信SIGTEAMは、プロセスの終了を知らせます
`>>> ``import` `psutil``>>> process ``=` `psutil.Process(``3297``)``>>> process.name()``'Google Chrome Helper'``>>> process.create_time()``1519832141.532822``>>> process.num_fds()``22``>>> process.num_threads()``19`

  PID:のリストの形で戻って、現在実行中のプロセスを

  * Pid_exists:プレゼンスPIDの所与の点かどうかを決定します*

  ** * * process_iter:現在実行されている反復的プロセス、各プロセスのProcessオブジェクトの戻り******

`>>> psutil.pids()``[``3373``, ``3372``, ``3365``, ``3364``, ``3363``, ``3361``, ``3360``, ``3358``, ``3355``, ``3351``, ``3335``, ``3301``, ``3299``, ``3297``, ``3291``, ``3290``, ``3289``, ``3279``, ``3278``, ``3274``, ``3251``, ``3248``, ``3247``, ``3246``, ``3244``, ``3242``, ``3241``, ``3225``, ``3209``, ``3198``, ``3194``, ``3193``, ``3101``, ``2828``, ``2816``, ``2805``, ``2802``, ``2799``, ``2797``, ``2767``, ``2497``, ``2441``, ``2437``, ``2343``, ``2333``, ``2330``, ``2287``, ``2283``, ``2258``, ``2257``, ``2251``, ``2248``, ``2247``, ``2246``, ``2245``, ``2241``, ``2240``, ``2238``, ``2231``, ``2225``]``>>> psutil.pid_exists(``12``)``False``>>> ``list``(psutil.process_iter())[:``5``]``[psutil.Process(pid``=``0``, name``=``'kernel_task'``, started``=``'20:41:22'``), psutil.Process(pid``=``1``, name``=``'launchd'``, started``=``'20:41:22'``), psutil.Process(pid``=``48``, name``=``'UserEventAgent'``, started``=``'20:41:27'``), psutil.Process(pid``=``50``, name``=``'uninstalld'``, started``=``'20:41:27'``), psutil.Process(pid``=``51``, name``=``'kextd'``, started``=``'20:41:27'``)]  ``# 每个都是一个Process对象``>>>  `

すべて偶然にも、天にまたは男性が密かにそれに取り組んでいるのどちらか。

おすすめ

転載: www.cnblogs.com/ham-731/p/12121619.html