Das sollte tun, was Sie brauchen. Es holt die Informationen von /proc/$PID/statm
und druckt (von man stat
):
size total program size (same as VmSize in /proc/[pid]/status) resident resident set size (same as VmRSS in /proc/[pid]/status) share shared pages (from shared mappings) data data + stack
Das Skript:
#!/usr/bin/env bash ## Print header echo -e "Size\tResid.\tShared\tData\t%" while [ 1 ]; do ## Get the PID of the process name given as argument 1 pidno=`pgrep $1` ## If the process is running, print the memory usage if [ -e /proc/$pidno/statm ]; then ## Get the memory info m=`awk '' /proc/$pidno/statm` ## Get the memory percentage perc=`top -bd .10 -p $pidno -n 1 | grep $pidno | gawk ''` ## print the results echo -e "$m\t$perc"; ## If the process is not running else echo "$1 is not running"; fi done
Sie können das Skript dann aufrufen und ihm einen Prozessnamen als Eingabe geben. Zum Beispiel:
$ memusage.sh firefox Size Resid. Shared Data % 517193 261902 9546 400715 12.8 517193 261902 9546 400715 12.8 517193 261902 9546 400715 12.8 517193 262100 9546 400715 12.8 517193 262100 9546 400715 12.8 517193 262100 9546 400715 12.8 517209 261899 9546 400731 12.8 517209 261899 9546 400731 12.8
ANMERKUNGEN:
- Dies setzt voraus, dass nur ein einzelner Prozess mit dem angegebenen Namen ausgeführt wird.