![Получить полное имя команды процесса с высоким использованием памяти в UNIX](https://rvso.com/image/191771/%D0%9F%D0%BE%D0%BB%D1%83%D1%87%D0%B8%D1%82%D1%8C%20%D0%BF%D0%BE%D0%BB%D0%BD%D0%BE%D0%B5%20%D0%B8%D0%BC%D1%8F%20%D0%BA%D0%BE%D0%BC%D0%B0%D0%BD%D0%B4%D1%8B%20%D0%BF%D1%80%D0%BE%D1%86%D0%B5%D1%81%D1%81%D0%B0%20%D1%81%20%D0%B2%D1%8B%D1%81%D0%BE%D0%BA%D0%B8%D0%BC%20%D0%B8%D1%81%D0%BF%D0%BE%D0%BB%D1%8C%D0%B7%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5%D0%BC%20%D0%BF%D0%B0%D0%BC%D1%8F%D1%82%D0%B8%20%D0%B2%20UNIX.png)
Я пытаюсь захватить имя процесса, который использует большую память на моем компьютере. Я запустил следующую команду, чтобы получить это
while [ 1 ]
do
ps -eo pid,ppid,cmd,%mem,%cpu --sort=-%mem | head
sleep 5
done
Но проблема в том, что он не дает мне полных данных cmd, которые работают с PID. Вывод, который я получаю, такой:
PID PPID CMD %MEM %CPU
916 915 /usr/bin/perl /release/data/ 11.9 0.2
831 830 /usr/bin/perl -w /release/da 6.5 0.0
608 607 /etc/alternatives/java_sdk_ 2.4 1.2
135 134 /etc/alternatives/java_sdk_ 1.4 1.6
Я хочу захватить полный cmd PID.
решение1
Я предполагаю, что под "полными сведениями о cmd" вы подразумеваете, включая список аргументов? Если так, попробуйте это ниже. Это даст вам до 100 символов в ширину для столбца CMD. Вы можете настроить по мере необходимости.
ps -eo pid,ppid,cmd:100,%mem,%cpu --sort=-%mem | head
решение2
Вы всегда можете использоватьвершинакоманда с переключателями для управления выводом:
top -b -c -n 1 -o +%MEM | sed -n '7,17p'