python psutil庫的使用示例
由于Bash實在太惡心,很多運維工程師開始使用Python代替Bash寫各種腳本。
雖然理論上可以用Python調(diào)用Bash指令實現(xiàn)各種功能,但是給各種命令寫B(tài)ash wrapper還要解析輸出實在太麻煩。所以我們還是希望用原生Python庫來實現(xiàn)各種功能。
今天我推薦一個好用的Python庫psutil。
psutil一個能夠跨平臺使用的庫。可以用來獲取系統(tǒng)信息(CPU、內(nèi)存、磁盤、網(wǎng)絡(luò))和進程信息。
它可以被用來替代這些UNIX的系統(tǒng)命令:ps, top, lsof, netstat, ifconfig, who, df, kill, free, nice, ionice, iostat, iotop, uptime, pidof, tty, taskset, pmap
下面是一些具體例子:
>>> import psutil # 加載庫CPU信息
CPU占用率
>>> psutil.cpu_percent(interval=5)12.9
CPU頻率
>>> psutil.cpu_freq()scpufreq(current=2300, min=2300, max=2300)
CPU load
>>> psutil.getloadavg()(2.21044921875, 2.4814453125, 2.74609375)內(nèi)存信息
內(nèi)存使用狀況
>>> psutil.virtual_memory()svmem(total=8589934592, available=1664913408, percent=80.6, used=5807058944, free=15069184, active=1651421184, inactive=1649065984, wired=4155637760)磁盤
磁盤分區(qū)信息
>>> psutil.disk_partitions()[sdiskpart(device=’/dev/disk1s5’, mountpoint=’/’, fstype=’apfs’, opts=’ro,local,rootfs,dovolfs,journaled,multilabel’, maxfile=255, maxpath=1024), ...]
磁盤占用率
>>> psutil.disk_usage(’/’)sdiskusage(total=250685575168, used=11233398784, free=14531440640, percent=43.6)
磁盤IO
>>> psutil.disk_io_counters()sdiskio(read_count=190236826, write_count=110716593, read_bytes=11349786423296, write_bytes=9505852936192, read_time=165443373, write_time=100234117)網(wǎng)絡(luò)
網(wǎng)絡(luò)連接 (netstat)
>>> import psutil>>> psutil.net_connections()[pconn(fd=115, family=<AddressFamily.AF_INET: 2>, type=<SocketType.SOCK_STREAM: 1>, laddr=addr(ip=’10.0.0.1’, port=48776), raddr=addr(ip=’93.186.135.91’, port=80), status=’ESTABLISHED’, pid=1254), pconn(fd=117, family=<AddressFamily.AF_INET: 2>, type=<SocketType.SOCK_STREAM: 1>, laddr=addr(ip=’10.0.0.1’, port=43761), raddr=addr(ip=’72.14.234.100’, port=80), status=’CLOSING’, pid=2987), pconn(fd=-1, family=<AddressFamily.AF_INET: 2>, type=<SocketType.SOCK_STREAM: 1>, laddr=addr(ip=’10.0.0.1’, port=60759), raddr=addr(ip=’72.14.234.104’, port=80), status=’ESTABLISHED’, pid=None), pconn(fd=-1, family=<AddressFamily.AF_INET: 2>, type=<SocketType.SOCK_STREAM: 1>, laddr=addr(ip=’10.0.0.1’, port=51314), raddr=addr(ip=’72.14.234.83’, port=443), status=’SYN_SENT’, pid=None) ...]
網(wǎng)絡(luò)接口(ifconfig)
>>> psutil.net_if_addrs(){’lo’: [snicaddr(family=<AddressFamily.AF_INET: 2>, address=’127.0.0.1’, netmask=’255.0.0.0’, broadcast=’127.0.0.1’, ptp=None), snicaddr(family=<AddressFamily.AF_INET6: 10>, address=’::1’, netmask=’ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff’, broadcast=None, ptp=None), snicaddr(family=<AddressFamily.AF_LINK: 17>, address=’00:00:00:00:00:00’, netmask=None, broadcast=’00:00:00:00:00:00’, ptp=None)], ’wlan0’: [snicaddr(family=<AddressFamily.AF_INET: 2>, address=’192.168.1.3’, netmask=’255.255.255.0’, broadcast=’192.168.1.255’, ptp=None), snicaddr(family=<AddressFamily.AF_INET6: 10>, address=’fe80::c685:8ff:fe45:641%wlan0’, netmask=’ffff:ffff:ffff:ffff::’, broadcast=None, ptp=None), snicaddr(family=<AddressFamily.AF_LINK: 17>, address=’c4:85:08:45:06:41’, netmask=None, broadcast=’ff:ff:ff:ff:ff:ff’, ptp=None)]}其它系統(tǒng)信息
電池
>>> psutil.sensors_battery()sbattery(percent=93, secsleft=15420, power_plugged=False)
當(dāng)前用戶
>>> psutil.users()[suser(name=’myname’, terminal=’console’, host=None, started=1604809088.0, pid=180), suser(name=’yuliji’, terminal=’ttys012’, host=None, started=1615375616.0, pid=13894)]進程信息
PID
>>> psutil.pids()[1, 2, 3, 5, 7, 8, 9, 10, 11, 12, 13, 14, 15, 17, 18, 19, ..., 32498]
所有進程
>>> for proc in psutil.process_iter([’pid’, ’name’, ’username’]):... print(proc.info)...{’name’: ’systemd’, ’pid’: 1, ’username’: ’root’}{’name’: ’kthreadd’, ’pid’: 2, ’username’: ’root’}{’name’: ’ksoftirqd/0’, ’pid’: 3, ’username’: ’root’}
詳細文檔,請參考: psutil.readthedocs.io/en/latest/
以上就是python psutil庫的使用示例的詳細內(nèi)容,更多關(guān)于python psutil庫的資料請關(guān)注好吧啦網(wǎng)其它相關(guān)文章!
相關(guān)文章:
1. ASP 信息提示函數(shù)并作返回或者轉(zhuǎn)向2. Python importlib動態(tài)導(dǎo)入模塊實現(xiàn)代碼3. android studio 打包自動生成版本號與日期,apk輸入路徑詳解4. 利用promise及參數(shù)解構(gòu)封裝ajax請求的方法5. 淺談python出錯時traceback的解讀6. 在Android中使用WebSocket實現(xiàn)消息通信的方法詳解7. .NET中l(wèi)ambda表達式合并問題及解決方法8. Nginx+php配置文件及原理解析9. python matplotlib:plt.scatter() 大小和顏色參數(shù)詳解10. JSP數(shù)據(jù)交互實現(xiàn)過程解析
