Networking
定期監控單個程序以記錄日誌文件
基於這個問題,我想以一秒的頻率將特定程序的性能記錄到
csv
(逗號分隔值)日誌文件中。就像是:
timestamp(unix),cpu_activity(%),mem_usage(B),network_activity(B) 1355407327,24.6,7451518,345 1355407328,27.6,7451535,12 1355407329,31.6,7451789,467 ...
我試圖獲得 rx_bytes 和 tx_bytes 但沒有運氣,其他的東西正在工作..所以你可以使用下面的腳本來做同樣的事情
#!/bin/bash # /sys/class/net/eth0/statistics/rx_bytes # /sys/class/net/eth0/statistics/tx_bytes Process="$1" [[ -z $2 ]] && InterVal=1 || InterVal=$2 show_help() { cat <<_EOF Usage : $0 <ProcessName> <Interval (Default 1s)> _EOF } Show_Process_Stats() { pgrep "${Process}" >/dev/null 2>&1 || { echo "Error: Process($1) it not Running.."; exit 1;}; while : do # timestamp(unix),cpu_activity(%),mem_usage(B),network_activity(B) timestamp=$(date +%s) read cpu_activty mem_usage < <( ps --no-headers -o %cpu,rssize -C "${Process}" ) echo "${timestamp}","${cpu_activty}","${mem_usage}" sleep $InterVal done } Main() { case $1 in ""|-h|--help) show_help ;; *) Show_Process_Stats ;; esac } Main $*