Bu makale, Python’ın gücü ve esnekliği ile geliştirilmiş toplu iş dosyaları kullanarak çalışan işlemleri sonlandırmayı ele alıyor. os
modülünü ve daha sağlam psutil
kütüphanesini kullanan iki Python yöntemini inceleyeceğiz ve bunları kullanıcı dostu toplu iş dosyalarına entegre edeceğiz.
İçindekiler
- Python’ın
os
Modülünü Kullanma - Python’ın
psutil
Kütüphanesini Kullanma - Toplu İş Dosyası Oluşturma
- En İyi Uygulamalar ve Dikkat Edilmesi Gerekenler
- Sorun Giderme
Python’ın os
Modülünü Kullanma
Python’ın os
modülü, işlem sonlandırma dahil olmak üzere temel işletim sistemi etkileşimleri sunar. Bununla birlikte, psutil
‘den daha az güvenilirdir, tam İşlem Kimliği’ne (PID) ihtiyaç duyar ve aynı ada sahip birden çok işlem için hata işleme özelliğinden yoksundur. Bu yöntem daha basittir ancak potansiyel olarak daha az sağlamdır.
import os
import sys
def kill_process(pid):
try:
os.kill(int(pid), 9) # SIGKILL sinyali
print(f"PID'si {pid} olan işlem sonlandırıldı.")
except OSError as e:
print(f"{pid} numaralı işlemi sonlandırırken hata: {e}")
if __name__ == "__main__":
if len(sys.argv) != 2:
print("Kullanım: python kill_process.py ")
sys.exit(1)
kill_process(sys.argv[1])
Bu komut dosyası PID’yi komut satırı bağımsız değişkeni olarak kabul eder ve zorla sonlandırma için 9 (SIGKILL) sinyali ile os.kill()
kullanır. SIGKILL kullanımı veri kaybına neden olabilir; dikkatli kullanın.
Python’ın psutil
Kütüphanesini Kullanma
psutil
kütüphanesi, işlem yönetimi için daha gelişmiş ve platformlar arası bir yaklaşım sağlar. Ada göre tanımlamaya olanak tanır ve birden çok örneği etkili bir şekilde ele alır.
import psutil
import sys
def kill_process_by_name(process_name):
for proc in psutil.process_iter(['pid', 'name']):
try:
if proc.info['name'].lower() == process_name.lower(): #büyük/küçük harf duyarlılığı olmadan eşleştirme
proc.kill()
print(f"'{process_name}' işlemi (PID: {proc.info['pid']}) sonlandırıldı.")
except (psutil.NoSuchProcess, psutil.AccessDenied, psutil.ZombieProcess) as e:
print(f"'{process_name}' işlemini sonlandırırken hata: {e}")
if __name__ == "__main__":
if len(sys.argv) != 2:
print("Kullanım: python kill_process_by_name.py ")
sys.exit(1)
kill_process_by_name(sys.argv[1])
Bu komut dosyası işlem adını girdi olarak alır ve çalışan işlemler arasında yineleyerek ada uyanları sonlandırır. Hata işleme dahildir. psutil
‘ü şu şekilde yükleyin: pip install psutil
Toplu İş Dosyası Oluşturma
psutil
komut dosyasını çalıştıran bir toplu iş dosyası oluşturalım (yukarıdaki komut dosyasını kill_process_by_name.py
olarak kaydedin). Bir toplu iş dosyası oluşturun (örneğin, kill_process.bat
):
@echo off
python kill_process_by_name.py "notepad"
pause
“notepad” yerine hedef işlem adını yazın. Python’ın sisteminizin PATH ortam değişkeninde olduğundan emin olun.
En İyi Uygulamalar ve Dikkat Edilmesi Gerekenler
Sağlamlığı nedeniyle her zaman psutil
yöntemini tercih edin. İşlemleri zorla sonlandırırken dikkatli olun, çünkü veri kaybı olasıdır. Kritik sistem işlemlerini sonlandırmaktan kaçının. Daha iyi izleme ve hata takibi için Python komut dosyanıza günlük kaydı eklemeyi düşünün.
Sorun Giderme
- “Erişim Reddedildi”: Toplu iş dosyasını çalıştırmak için yönetici ayrıcalıkları gerekir.
- Python komut dosyası çalışmıyor: Python’ın PATH’inizde olduğunu, Python yorumlayıcısının doğru şekilde belirtildiğini ve komut dosyası yolunun doğru olduğunu doğrulayın.
- İşlem bulunamadı: İşlem adını iki kez kontrol edin (bazı durumlarda büyük/küçük harfe duyarlıdır). Tam adı doğrulamak için Görev Yöneticisi’ni kullanın.
Bu gelişmiş kılavuz, toplu iş dosyasından işlemleri yönetmek için daha sağlam ve güvenli bir yaklaşım sağlar. İşlemleri sonlandırırken dikkatli davranmayı unutmayın.