Disk I/O’ya Göre Sıralanmış Proses Listesi
Bu Python scripti, sistemdeki her bir süreç için disk okuma ve yazma işlemlerini ölçer, ardından disk I/O kullanımına göre bu süreçleri sıralar.
📜 Kod:
import psutil
import time
# Başlangıç snapshot'ı
disk_stats_start = {}
for proc in psutil.process_iter(['pid', 'name']):
try:
io = proc.io_counters()
disk_stats_start[proc.pid] = (io.read_bytes + io.write_bytes)
except (psutil.NoSuchProcess, psutil.AccessDenied, AttributeError):
continue
# Bir süre bekle ki fark ölçülebilsin
time.sleep(1)
# 1 saniye sonra tekrar disk I/O ölçülüyor
process_list = []
for proc in psutil.process_iter(['pid', 'name']):
try:
io = proc.io_counters()
current_total = io.read_bytes + io.write_bytes
previous_total = disk_stats_start.get(proc.pid, 0)
delta = current_total - previous_total
process_list.append({'pid': proc.pid, 'name': proc.info['name'], 'disk_usage': delta})
except (psutil.NoSuchProcess, psutil.AccessDenied, AttributeError):
continue
# Disk kullanımına göre sırala (azalan)
sorted_processes = sorted(process_list, key=lambda x: x['disk_usage'], reverse=True)
# Ekrana yazdır
print(f"{'PID':>6} {'Disk (Byte)':>12} {'Program Adı'}")
print("-" * 50)
for proc in sorted_processes:
print(f"{proc['pid']:>6} {proc['disk_usage']:>12} {proc['name']}")
# Program açık kalsın
input("\nÇıkmak için Enter tuşuna bas...")
📋 Kullanım Talimatları:
- Gerekli Kütüphane:
psutil
modülünü yüklemek için aşağıdaki komutu kullanabilirsiniz:pip install psutil
- Scripti Çalıştırma:
- Terminal veya komut istemcisinde scripti çalıştırın:
python disk_siralamali_proses_listesi.py
- Script çalıştığında, her bir süreç için disk okuma ve yazma işlemlerini ölçer ve disk kullanımına göre bu süreçleri sıralar.
- Sonuç:
- Script, her bir prosesin PID’sini, disk I/O kullanımını (byte cinsinden) ve proses adını yazdıracaktır. Disk I/O en yüksek olan süreçler en üstte yer alır.
🖥️ Çıktı Örneği:
PID Disk (Byte) Program Adı
--------------------------------------------------
12345 1048576 chrome.exe
23456 512000 python.exe
34567 256000 firefox.exe
45678 128000 explorer.exe
...
Çıkmak için Enter tuşuna bas...
🛠️ Açıklamalar:
io_counters()
: Bu fonksiyon, bir sürecin okuma ve yazma byte’larını döndürür.- Bekleme Süresi: İlk ölçümün daha doğru olabilmesi için 1 saniye beklenir.
- Sıralama: Disk I/O kullanımına göre süreçler sıralanır (en yüksek disk kullanımına sahip olan en üstte yer alır).