14 – Sistem ve Süreç Yönetimi – Bash Script ile İşlemleri Yönetmek

Bash script’leri, Linux ve UNIX tabanlı sistemlerde sistem ve süreç yönetimi için oldukça güçlü araçlardır. Bir sistem yöneticisi olarak, süreçlerin nasıl yönetileceği ve izleneceği konusunda bilgi sahibi olmak önemlidir. Bu makalede, çeşitli süreç yönetim komutları ve sistem yönetim araçları hakkında bilgi edineceğiz.
1. Süreç Yönetimi Nedir?
Süreç yönetimi, bilgisayar sistemlerinde çalışan programların ve hizmetlerin yönetimini ifade eder. Çalışan herhangi bir komut veya program, bir “süreç” olarak adlandırılır. Linux sistemlerinde bu süreçlerin kontrol edilmesi, sistem performansını artırmak, kaynakları en verimli şekilde kullanmak ve gereksiz süreçleri sonlandırmak için önemlidir.
Linux’ta Süreçlerin Yapısı
Linux işletim sistemi, her bir sürece benzersiz bir kimlik (PID – Process ID) atar. Bu PID’ler, süreci tanımlamak ve yönetmek için kullanılır. Bash script ile süreçleri izlemek, yönetmek ve gerektiğinde sonlandırmak mümkündür.
2. Süreçleri İzleme
Linux’ta sistemde çalışan süreçleri izlemek ve kontrol etmek için çeşitli komutlar kullanılır. Bu komutların bazıları, çalışan tüm süreçleri görmenizi sağlarken, bazıları ise belirli bir sürecin ayrıntılarını sunar.
ps Komutu
ps
komutu, sistemde çalışan süreçleri listelemek için kullanılır. Bu komut, kullanıcılara süreçlerin durumu hakkında bilgi verir.
ps aux
a
: Tüm kullanıcıların süreçlerini gösterir.u
: Süreçlerin sahiplerini ve daha ayrıntılı bilgileri gösterir.x
: Terminale bağlı olmayan süreçleri de dahil eder.
Bu komut, her bir sürecin PID’sini, CPU ve bellek kullanımını, çalıştırıldığı komutu ve sahibini gösterir. Özellikle bir sürecin PID’sine ihtiyacınız olduğunda bu komut oldukça kullanışlıdır.
top Komutu
top
komutu, çalışan süreçlerin gerçek zamanlı olarak izlenmesine olanak tanır. Bu komut, CPU ve bellek kullanımını sürekli olarak güncelleyerek sistemin performansını analiz etmenizi sağlar.
top
top
komutu, sistemde hangi süreçlerin en fazla kaynağı tükettiğini ve bu süreçlerin performans üzerindeki etkilerini görmenizi sağlar. Kullanıcı q
tuşuna basarak top
ekranından çıkabilir.
htop Komutu
htop
, top
komutuna benzer ancak daha kullanıcı dostu ve renkli bir arayüz sunar. htop
kullanarak süreçleri kolayca filtreleyebilir, sonlandırabilir veya detaylarına göz atabilirsiniz. Bu aracı kullanmak için sisteminizde htop
kurulu olmalıdır.
htop
3. Süreçleri Sonlandırma
Bazen sistemde çalışan belirli bir sürecin sonlandırılması gerekebilir. Bu, yüksek kaynak kullanımı veya yanlış çalışan bir uygulama durumunda gerekli olabilir.
kill Komutu
kill
komutu, belirli bir süreci PID’sine göre sonlandırmak için kullanılır. İlk olarak sonlandırmak istediğiniz sürecin PID’sini bulmak için ps
veya top
komutunu kullanabilirsiniz.
kill PID
Eğer normal bir kill
komutu süreç tarafından dikkate alınmazsa, -9
işareti ile zorla sonlandırılabilir:
kill -9 PID
Bu komut, süreci hemen sonlandırır ve çoğu durumda etkin bir şekilde sürecin çalışmasını durdurur.
killall Komutu
killall
komutu, belirli bir adı taşıyan tüm süreçleri sonlandırmak için kullanılır. Bu komut, aynı anda birden fazla süreci sonlandırmak gerektiğinde oldukça kullanışlıdır.
killall process_name
Örneğin, tüm nginx
süreçlerini sonlandırmak için killall nginx
komutunu kullanabilirsiniz.
pkill Komutu
pkill
komutu, süreçleri adlarına veya çeşitli özelliklerine göre sonlandırmak için kullanılır. Bu komut, killall
komutuna benzer, ancak daha esnek bir şekilde kullanılabilir.
pkill -u username
Bu komut, belirli bir kullanıcıya ait tüm süreçleri sonlandıracaktır.
4. Arka Plan İşlemleri Yönetmek
Arka Plan İşlemi Olarak Çalıştırmak (&
)
Bir komutu arka planda çalıştırmak, komutun başlatıldığı terminali kullanmaya devam edebilmenizi sağlar. Bir komutun sonuna &
ekleyerek bu komutu arka planda başlatabilirsiniz.
./script.sh &
Bu komut, script.sh
dosyasını arka planda çalıştırır ve terminali kullanılabilir halde tutar.
Arka Plan İşlemlerini Yönetmek (jobs
, fg
, bg
)
- jobs: Terminalde başlatılmış ve arka plana alınmış işlemleri listelemek için kullanılır.
jobs
fg: Arka planda çalışan bir işlemi ön plana almak için kullanılır.
fg %1
Bu komut, arka plandaki birinci işlemi (örneğin %1
) ön plana getirir.
bg: Durdurulmuş bir işlemi arka planda çalıştırmak için kullanılır.
bg %1
- Bu komut, durdurulmuş (
CTRL + Z
ile durdurulmuş) bir işlemi arka planda çalıştırmaya devam ettirir.
nohup Komutu
nohup
komutu, bir komutun terminalden bağımsız olarak çalıştırılmasını sağlar. Bu, terminal kapatıldığında bile komutun çalışmaya devam etmesini sağlar.
nohup ./script.sh &
Bu komut, script.sh
dosyasını arka planda ve terminalden bağımsız bir şekilde çalıştıracaktır. Çıktılar ise varsayılan olarak nohup.out
dosyasına kaydedilir.
5. Zamanlanmış Görevler (cron ve at)
Cron İle Zamanlanmış Görevler
cron
aracı, belirli zaman aralıklarında belirli komutların otomatik olarak çalıştırılmasını sağlar. Bir cron
görevi oluşturmak için crontab
dosyasını düzenleyebilirsiniz:
crontab -e
Bir cron
satırı aşağıdaki biçimdedir:
0 3 * * * /path/to/script.sh
Bu örnekte, script.sh
dosyası her gün saat 03:00’da çalıştırılır.
at Komutu İle Tek Seferlik Görevler
at
komutu, belirli bir zamanda bir komutun bir kez çalıştırılmasını sağlar. Örneğin, iki saat sonra bir komut çalıştırmak için:
echo "/path/to/script.sh" | at now + 2 hours
Bu komut, belirtilen script’i iki saat sonra çalıştıracaktır.
Linux ve UNIX sistemlerde süreç yönetimi, sistem performansının artırılması ve gereksiz kaynak tüketiminin önlenmesi açısından önemlidir. Bash script kullanarak süreçlerin izlenmesi ve yönetilmesi, sistem yöneticilerine güçlü ve esnek bir kontrol sağlar. Bu makalede, süreç izleme, sonlandırma ve arka plan işlemlerini yönetme gibi temel süreç yönetim tekniklerini öğrendik. Bu bilgiler, sistem yönetimi sırasında karşılaşılan zorlukları daha etkili bir şekilde çözmek için kullanılabilir.