前言:
記錄top命令,查看內(nèi)存使用情況,追蹤進程運行情況。
方法
1、在Python中,你可以使用subprocess模塊來運行top命令,并將輸出重定向到一個帶時間戳的文件中。:
- 在此服務(wù)器創(chuàng)建目錄:/root/top_output
- 將python腳本存放到此目錄,
- 編輯腳本內(nèi)容如下:vim top.py
import subprocess
import time
import os
# 自定義環(huán)境變量,防止crontab 輸出列不全
os.environ['COLUMNS'] = '300'
# 創(chuàng)建帶有時間戳的文件名
timestamp = time.strftime("%Y-%m-%d_%H-%M-%S")
filename = f"top_output_{timestamp}.txt"
# 運行top命令,并將輸出重定向到文件
with open(filename, 'w') as file:
subprocess.run(['top','-c','-o','%MEM', '-b', '-n', '1'], stdout=file)
這段代碼使用subprocess.run函數(shù)運行top命令,-b和-n是top命令的參數(shù),-b表示批處理模式,-n后跟數(shù)字表示運行次數(shù)。這里設(shè)置為1表示top命令將只運行一次,并將輸出存儲到指定的文件中。文件名包含了時間戳,確保每個文件名都是唯一的。
top -c:顯示命令完整路徑,就是COMMAND字段對應(yīng)的值
top -o %MEM:統(tǒng)計各進程內(nèi)存占用,默認降序
2、定時任務(wù)
- 將它添加到crontab中,定時執(zhí)行。例如,每5分鐘自動執(zhí)行一次
*/5 * * * * cd /root/top_output/ && python3 top.py
這里需要注意一下,先cd到目錄,再執(zhí)行python 腳本。
在哪個目錄執(zhí)行python,輸出會在此目錄。