Tüm işlemlerin listesini ve hafızayı görebiliyorum
ps aux
ve VSZ ve RSS’den geçerek
Bu komutun çıktısını RSS değerindeki azalan sıraya göre sıralamanın bir yolu var mı?
--sort
ilişkin ek örnekler burada: alvinalexander.com/linux/…
Tüm işlemlerin listesini ve hafızayı görebiliyorum
ps aux
ve VSZ ve RSS’den geçerek
Bu komutun çıktısını RSS değerindeki azalan sıraya göre sıralamanın bir yolu var mı?
--sort
ilişkin ek örnekler burada: alvinalexander.com/linux/…
Yanıtlar:
Aşağıdaki komutu kullanın:
ps aux --sort -rss
Daha fazla Linux işlem belleği kullanımı için burayı kontrol edin
head
gibi ps aux --sort -rss | head -n15
ps: illegal option -- -
ps aux --sort=rss
?
ps aux | sort -rn -k 6
Hızlı ve kirli bir yöntem, komutun çıktısını yalnızca boruya ps aux
bağlamaktır sort
:
$ ps aux | sort -rn -k 5,6
$ ps aux | sort -rn -k 5,6
...
root 1584 0.0 0.0 22540 1236 ? S 07:04 0:01 hald-addon-storage: polling /dev/sr0 (every 2 sec)
root 1575 0.0 0.0 22536 872 ? S 07:04 0:00 /usr/libexec/hald-addon-generic-backlight
root 1574 0.0 0.0 22536 880 ? S 07:04 0:00 /usr/libexec/hald-addon-leds
root 1565 0.0 0.0 22536 876 ? S 07:04 0:00 /usr/libexec/hald-addon-rfkill-killswitch
saml 2507 0.0 0.0 22232 500 ? S 07:05 0:00 dbus-launch --sh-syntax --exit-with-session
root 1671 0.0 0.0 22156 936 ? Ss 07:04 0:00 xinetd -stayalive -pidfile /var/run/xinetd.pid
...
Bu, çıktıya karışan sütun başlıkları için uygun değildir, ancak komut satırında hatırlamak kolaydır ve bu tür bir çıktıyı manüel olarak görüntülerken istediğiniz şeyi yapmanın kabul edilebilir bir yoludur.
root 1791 0.0 0.0 4140 536 tty2 Ss+ 07:04 0:00 /sbin/mingetty /dev/tty2
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
root 996 0.0 0.0 0 0 ? S 07:04 0:01 [kdmflush]
root 982 0.0 0.0 0 0 ? S 07:04 0:00 [kvm-irqfd-clean]
Ek bir ipucu, çıktının tamamını gibi başka bir komuta göndermek olacaktır less
. Bu, bilgilere her seferinde bir sayfaya bakmanıza ve ayrıca çıkışta ileri geri gitmek için ok tuşlarını ve sayfa yukarı / aşağı tuşlarını kullanmanıza olanak tanır.
$ ps aux | sort -rn -k 5,6 | less
Çıktınız çok sarılıyorsa -S
düğmeyi daha az kullanabilirsiniz, bu da tüm çıktının tek bir satırda kalmasını sağlar. Ok tuşlarını kullanarak hepsini görmek için sola / sağa / yukarı / aşağı hareket ettirebilirsiniz.
$ ps aux | sort -rn -k 5,6 | less -S
Bazı sürümleri ps
kullanma yeteneği sağlar --sort
. Bu anahtar daha sonra sıralama düzenini belirtmek için a +
veya a ile eklenmiş anahtarları alabilir -
... en küçükten en büyüğe veya en büyükten en küçüğe.
vsz, -rss
$ ps aux --sort=vsz,-rss | head -5
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
root 2 0.0 0.0 0 0 ? S 07:03 0:00 [kthreadd]
root 3 0.0 0.0 0 0 ? S 07:03 0:00 [ksoftirqd/0]
root 4 0.0 0.0 0 0 ? S 07:03 0:01 [migration/0]
root 5 0.0 0.0 0 0 ? S 07:03 0:00 [watchdog/0]
+ Vsz + RSS
$ ps aux --sort=+vsz,+rss | head -5
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
root 2 0.0 0.0 0 0 ? S 07:03 0:00 [kthreadd]
root 3 0.0 0.0 0 0 ? S 07:03 0:00 [ksoftirqd/0]
root 4 0.0 0.0 0 0 ? S 07:03 0:01 [migration/0]
root 5 0.0 0.0 0 0 ? S 07:03 0:00 [watchdog/0]
-vsz, -rss
$ ps aux --sort=-vsz,-rss | head -5
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
root 1832 0.0 0.0 2088924 3312 ? Sl 07:04 0:00 /usr/sbin/console-kit-daemon --no-daemon
saml 3517 0.2 1.2 2073196 100492 ? Sl 07:06 0:34 /home/saml/.dropbox-dist/dropbox
saml 3516 0.0 0.8 2071032 67388 ? Sl 07:06 0:07 /home/saml/.dropbox-dist/dropbox
saml 2657 0.1 0.7 1580936 57788 ? Sl 07:05 0:27 nautilus
ps
hep beklediğiniz şekilde çıkış sütunları sort
görmek / süreç onları?
... | less
, iyi bir tavsiyedir, ancak bazen işleminiz çok büyük bir komut satırına sahiptir ve çıktıları tutar. Bu gibi durumlarda ... | less -S
daha iyi çalışır.
-S
böylece görmek istediklerinizin bir kısmını kaybedebilirsiniz, ancak yalnızca en çok kalan sütunları ilgileniyorsanız iyi bir tavsiye.
less -S
. less
Görünümü kapattığınızda her şey kaybolur, ancak görünümdeyken, dikey olarak da yatay olarak kaydırma yapabilirsiniz. Yine de kopyalama zor olabilir.
ps aux --sort - rss güzeldir:
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
user 5984 0.8 7.4 1632488 296056 ? Sl 06:30 6:18 /usr/lib/chromium-browser/chromium-browser --type=ren
user 23934 21.7 6.0 1565600 241228 ? Sl 15:45 40:10 /opt/atom/atom --type=renderer --enable-experimental-
user 5533 0.9 5.1 3154096 206376 ? SLl 06:30 6:47 /usr/lib/chromium-browser/chromium-browser --enable-p
user 17306 1.7 4.9 1360648 196124 ? Sl 18:14 0:36 /usr/lib/chromium-browser/chromium-browser --type=ren
user 22272 30.1 4.6 1347784 185032 ? Sl 18:43 1:54 /usr/lib/chromium-browser/chromium-browser --type=ren
user 19318 0.6 3.3 1304324 133452 ? Sl 18:27 0:09 /usr/lib/chromium-browser/chromium-browser --type=ren
user 22098 1.0 3.3 1298500 133216 ? Sl 18:43 0:04 /usr/lib/chromium-browser/chromium-browser --type=ren
ancak uygulamaya göre bellek ve cpu kullanımlarını görmek istiyorsanız (komutlar ile gruplandırılmış):
python3.6 sum_process_resources.py
==== CPU% ====
0. /opt/atom/atom | 27.8
1. /usr/lib/chromium-browser/chromium-browser | 11.2
2. python3.6 | 11.0
3. /opt/google/chrome/chrome | 1.6
4. /usr/lib/xorg/Xorg | 1.4
5. /opt/Franz/franz | 0.7
==== MEM% ====
0. /usr/lib/chromium-browser/chromium-browser | 37.2
1. /opt/google/chrome/chrome | 11.3
2. /opt/Franz/franz | 10.6
3. /opt/atom/atom | 10.1
4. /usr/lib/xorg/Xorg | 2.0
5. com.google.android.gms.persistent | 1.4
==== RSS MB ====
0. /usr/lib/chromium-browser/chromium-browser | 1475.07 MB
1. /opt/google/chrome/chrome | 461.35 MB
2. /opt/Franz/franz | 429.04 MB
3. /opt/atom/atom | 402.18 MB
4. /usr/lib/xorg/Xorg | 78.53 MB
5. com.google.android.gms.persistent | 58.02 MB
kod:
#sum_process_resources.py
from collections import OrderedDict
import subprocess
def run_cmd(cmd_string):
"""Runs commands and saves output to variable"""
cmd_list = cmd_string.split(" ")
popen_obj = subprocess.Popen(cmd_list, stdout=subprocess.PIPE)
output = popen_obj.stdout.read()
output = output.decode("utf8")
return output
def sum_process_resources():
"""Sums top X cpu and memory usages grouped by processes"""
ps_memory, ps_cpu, ps_rss = {}, {}, {}
top = 6
output = run_cmd('ps aux').split("\n")
for i, line in enumerate(output):
cleaned_list = " ".join(line.split())
line_list = cleaned_list.split(" ")
if i > 0 and len(line_list) > 10:
cpu = float(line_list[2])
memory = float(line_list[3])
rss = float(line_list[5])
command = line_list[10]
ps_cpu[command] = round(ps_cpu.get(command, 0) + cpu, 2)
ps_memory[command] = round(ps_memory.get(command, 0) + memory, 2)
ps_rss[command] = round(ps_rss.get(command, 0) + rss, 2)
sorted_cpu = OrderedDict(sorted(ps_cpu.items(), key=lambda x: x[1], reverse=True))
sorted_memory = OrderedDict(sorted(ps_memory.items(), key=lambda x: x[1], reverse=True))
sorted_rss = OrderedDict(sorted(ps_rss.items(), key=lambda x: x[1], reverse=True))
print("==== CPU% ====")
for i, k in enumerate(sorted_cpu.items()):
if i < top:
print("{}. {} | {}".format(i, k[0], k[1]))
print("==== MEM% ====")
for i, k in enumerate(sorted_memory.items()):
if i < top:
print("{}. {} | {}".format(i, k[0], k[1]))
print("==== RSS MB ====")
for i, k in enumerate(sorted_rss.items()):
if i < top:
print("{}. {} | {} MB".format(i, k[0], round((k[1]/1024), 2)))
if __name__ == '__main__':
sum_process_resources()
Kullanılan bellek, işlem adına göre nasıl toplanır:
Bazen en büyük tek işlemlere bile bakıldığında hâlâ bilinmeyen çok fazla kullanılmış bellek var. Belleği kullanarak aynı küçük işlemlerin çoğunun olup olmadığını kontrol etmek için, aynı isimdeki işlemlerin kullandığı toplam hafızayı toplamak için awk kullanan aşağıdaki gibi bir komut kullanabilirsiniz:
ps -e -orss=,args= |awk '{print $1 " " $2 }'| awk '{tot[$2]+=$1;count[$2]++} END {for (i in tot) {print tot[i],i,count[i]}}' | sort -n
örneğin çıktı
9344 docker 1
9948 nginx: 4
22500 /usr/sbin/NetworkManager 1
24704 sleep 69
26436 /usr/sbin/sshd 15
34828 -bash 19
39268 sshd: 10
58384 /bin/su 28
59876 /bin/ksh 29
73408 /usr/bin/python 2
78176 /usr/bin/dockerd 1
134396 /bin/sh 84
5407132 bin/naughty_small_proc 1432
28061916 /usr/local/jdk/bin/java 7
ps