Я пытаюсь получить через CLI количество байтов, например 123456
, соответствующее использованию оперативной памяти заданным процессом на основе его PID. Это должно работать без какого-либо специального программного обеспечения и на всех дистрибутивах Linux. Никакого форматирования, "kB" или дополнительной информации. Просто целое значение в качестве вывода.
Как обычно, в Интернете полно статей, содержащих много шума, но не содержащих никакой полезной информации.
решение1
Попробуйте один из этих методов:
# process id
pid=$$
# memory page size
psz=$(grep -m1 KernelPageSize /proc/$pid/smaps |tr -d -c [0-9])
# assume by “RAM usage” OP wants “resident size”
printf '
1. with “ps” command : %d
2. from /proc/pid/status: %d
3. from /proc/pid/statm : %d
4. from /proc/pid/stat : %d
' $( ps -p $pid ho rsz ) \
$( grep -m1 VmRSS /proc/$pid/status |tr -d -c [0-9] ) \
$( read -a s < /proc/$pid/statm; echo $(( ${s[1]} * $psz )) ) \
$( read -a s < /proc/$pid/stat; echo $(( ${s[23]} * $psz )) )
1. with “ps” command : 12160
2. from /proc/pid/status: 12160
3. from /proc/pid/statm : 12160
4. from /proc/pid/stat : 12160
※ /proc
Информацию о файловой системе см.документация ядра Linux
※ Для ps
проверки командыего руководство