Linux'ta jobs Komutu: Arka Plan İşlerini Listeleme ve Yönetme

Bash kabuğunda çalışan veya askıya alınan tüm arka plan işlemlerini listelemek için kullanılan 'jobs' komutunun detaylı kullanımı. İş ID'leri, durumları ve komut spesifikasyonları anlatılmaktadır.

L
Linuxize
12 görüntülenme
Linux'ta jobs Komutu: Arka Plan İşlerini Listeleme ve Yönetme

Linux'ta jobs Komutu: Arka Plan İşlerini Listeleme ve Yönetme

jobs komutu, Bash kabuğuna özgü (built-in) bir komuttur. Mevcut kabuk oturumuyla ilişkili olan tüm arka planda çalışan (background) ve askıya alınmış (suspended) işlemleri listeler. Bu komut, özellikle etkileşimli kabuklarda (interactive shells) iş kontrolünü (job control) yönetmek için temel bir araçtır.

jobs Komutunun Söz Dizimi

jobs komutunun genel söz dizimi oldukça basittir:

jobs [SEÇENEKLER] [İŞ_BELİRTİMLERİ...]

Herhangi bir argüman olmaksızın çağrıldığında, jobs mevcut kabuktaki tüm aktif işleri listeler.

İşleri Listeleme

Tüm arka plan ve askıya alınmış işleri görmek için argümansız jobs komutunu çalıştırın:

$ jobs

Çıktı, her bir iş için aşağıdaki bilgileri içerir:

  • Köşeli parantez içindeki iş numarası (Örn: [1], [2]).
  • + veya - işareti: + en son başlatılan/askıya alınan mevcut işi (current job), - ise bir önceki işi (previous job) belirtir.
  • İşin durumu (Örn: Running, Stopped, Done).
  • İşi başlatan komut.

İşlem Kimliğini (PID) Görüntüleme

İşlem Kimliğini (PID) çıktıya dahil etmek için -l seçeneği kullanılır. Bu, kill komutu ile belirli bir işleme sinyal göndermek istendiğinde kullanışlıdır:

$ jobs -l

İş Durumları

jobs komutu tarafından bildirilen işler aşağıdaki durumlarda olabilir:

  • Running: İşlem arka planda aktif olarak yürütülüyor.
  • Stopped: İşlem askıya alınmıştır (genellikle Ctrl+Z ile durdurulur).
  • Done: İşlem tamamlanmıştır. Bu durum bir kez gösterilir ve ardından listeden temizlenir.
  • Terminated: İşlem bir sinyal ile sonlandırılmıştır.

İş Belirtimleri (Job Specifications)

İş belirtimleri, fg (ön plana al), bg (arka planda devam ettir) veya kill gibi komutları belirli bir işe hedeflemek için kullanılır. Her zaman bir yüzde işareti (%) ile başlarlar:

  • %1, %2, …: İş numarasını belirtir.
  • %% veya %+: Mevcut işi (en son arka plana atılan veya askıya alınan).
  • %-: Önceki işi.
  • %string: Komutu string ile başlayan işi hedefler (Örn: %sleep).

Örnek: İşleri Yönetme

İki arka plan işi başlattıktan sonra:

$ sleep 300 & 
[1] 15001
$ ping -c 100 google.com & 
[2] 15005
$ jobs
[1]- Running sleep 300 &
[2]+ Running ping -c 100 google.com &

ping işini ön plana almak için:

$ fg %2

Seçenekler (Options)

jobs komutu aşağıdaki seçenekleri kabul eder:

  • -l: Normal çıktıya ek olarak işlem kimliklerini (PID) listeler.
  • -p: Yalnızca her işin işlem grubu liderinin PID'sini yazdırır (Betikler için kullanışlıdır).
  • -r: Yalnızca çalışan işleri listeler.
  • -s: Yalnızca durdurulmuş (askıya alınmış) işleri listeler.
Önemli Not: jobs komutu, yalnızca iş kontrolünün etkin olduğu etkileşimli kabuklarda anlamlıdır. Standart bir kabuk betiği (script) içinde genellikle hiçbir çıktı vermez. Betiklerde arka plan işlemleri için $! değişkeni ve wait komutu kullanılmalıdır.

Hızlı Başvuru

Komut Açıklama
jobs Tüm arka plan ve durdurulmuş işleri listeler
jobs -l PID'ler ile listeler
fg %1 İş 1'i ön plana alır
kill %1 İş 1'i sonlandırır

SSS

jobs ile ps arasındaki fark nedir?
jobs yalnızca mevcut kabuk oturumundan başlatılan işlemleri gösterirken, ps sistemdeki tüm işlemleri listeler.

Arka plan işini terminal kapandığında çalıştırmaya devam etmesi nasıl sağlanır?
İşi arka plana almadan önce nohup kullanın veya arka plana aldıktan sonra disown %N komutunu kullanın.

Kaynak

Linuxize