Tüm barındırma hizmetlerinde 15% tasarruf edin

Becerilerini test et ve herhangi bir hosting planında İndirim kazan

Kodu kullanın: Skills Başlayın
Bölüm
Linux Yönetim

Crontab Kullanarak Cron İşlerini Görüntüleme ve Listeleme

Cron yardımcı programı, Unix benzeri işletim sistemlerinde en temel araçlardan biridir ve kullanıcıların ile yöneticilerin komutları ve betikleri tanımlı zamanlarda veya aralıklarla otomatik olarak çalışacak şekilde planlamasını sağlar. Bir üretim sunucusunu yönetiyor olsanız, bir VPS Hosting ortamını koruyorsanız veya yerel bir makinede görevleri otomatikleştiriyorsanız, cron işleriyle nasıl çalışılacağını anlamak herhangi bir sistem yöneticisi veya geliştirici için gerekli bir beceridir.

Bu kapsamlı rehber, crontab komutu kullanarak cron işlerini görüntüleme ve listeleme hakkında bilmeniz gereken her şeyi açıklar, böylece zamanlanmış görevlerinizi güvenle ve hassasiyetle yönetebilirsiniz.

Cron Nedir ve Neden Önemlidir?

Cron, Unix ve Linux işletim sistemlerine yerleşik bir zaman tabanlı iş planlayıcısıdır. Arka planda daemon işlemi olarak sürekli çalışır ve her dakika herhangi bir zamanlanmış görevin yürütülmesi gerekip gerekmediğini kontrol eder. Bu görevler — cron işleri olarak bilinir — otomatik veritabanı yedeklemeleri ve günlük rotasyonundan e-posta göndermeye ve bakım betikleri çalıştırmaya kadar değişebilir.

Dedicated Server veya paylaşılan bir ortamı yöneten herkes için cron işleri, sistemleri sağlıklı tutmak, tekrarlayan işlemleri otomatikleştirmek ve kritik işlemlerin manuel müdahale olmadan çalışmasını sağlamak için vazgeçilmezdir.

Crontab Komutu Nedir?

Crontab (kısaca “cron table”), zamanlanmış görevleri depolayan yapılandırma dosyasının adı ve bu dosyaları yönetmek için kullanılan komut satırı yardımcısıdır. Unix benzeri bir sistemdeki her kullanıcı — root kullanıcısı dahil — hangi görevlerin ne zaman çalışması gerektiğini tanımlayan kendi crontab dosyasını tutabilir.

Crontab Söz Dizimi Açıklandı

Bir crontab dosyasındaki her satır, kesin bir beş alan zaman belirtimini ve ardından yürütülecek komutu takip eder:

* * * * * command_to_be_executed
| | | | |
| | | | +----- Day of the week (0–7) [Sunday = 0 or 7]
| | | +---------- Month (1–12)
| | +--------------- Day of the month (1–31)
| +-------------------- Hour (0–23)
+------------------------- Minute (0–59)

Bu yapı, bir betiği yılda bir kez çalıştırmaktan her tek dakikada bir komut yürütmeye kadar görev planlaması üzerinde kesin, ayrıntılı kontrol sağlar.

Yaygın Crontab Zaman İfadesi Örnekleri

İfadeAnlamı
0 0 * * *Her gün gece yarısında
*/5 * * * *Her 5 dakikada bir
30 2 * * 7Her Pazar günü saat 02:30’da
0 3 1 * *Her ayın ilk günü saat 03:00’te
0 9-17 * * 1-5Pazartesi–Cuma, sabah 9’dan akşam 5’e kadar her saat

Crontab Kullanarak Cron İşlerini Listeleme

crontab komutu, cron işlerini yönetmek ve incelemek için birincil yardımcı programdır. Aşağıda bilmeniz gereken tüm yöntemler yer almaktadır.

1. Kendi Cron İşlerinizi Görüntüleme

Şu anda oturum açmış olan kullanıcı için zamanlanmış tüm cron işlerini görüntülemek için şunu çalıştırın:

crontab -l

Bu komut, geçerli kullanıcının crontab dosyasını okur ve çıktı verir. Hiçbir cron işi yapılandırılmamışsa, sistem boş bir çıktı döndürecek veya şöyle bir ileti görüntüleyecektir:

no crontab for username

Örnek Çıktı

# m h dom mon dow command
0 0 * * * /home/user/backup.sh
30 2 * * 7 /home/user/scripts/cleanup.sh

Bu örnekte:

  • Yedekleme betiği her gün gece yarısında (00:00) çalışır.
  • Temizleme betiği her Pazar saat 02:30’da çalışır.

2. Başka Bir Kullanıcının Cron İşlerini Listeleme

sudo veya root ayrıcalıklarınız varsa, -u bayrağını kullanarak sistemdeki başka herhangi bir kullanıcıya ait cron işlerini inceleyebilirsiniz:

sudo crontab -l -u username

username yerine gerçek hesap adını yazın. Örneğin:

sudo crontab -l -u john

Bu, sistem yöneticilerinin bir sunucu üzerinde birden fazla kullanıcı hesabı arasında zamanlanmış görevleri denetlemesi için özellikle yararlıdır.

3. Sistem Genelinde Cron İşlerini Listeleme

Kullanıcıya özgü crontab’ların ötesinde, Linux sistemleri sistem genelinde zamanlanmış görevler için çeşitli konumları korur. Bunlar tipik olarak root kullanıcı veya sistem hizmetleri tarafından yönetilir ve aşağıdaki konumlarda depolanır:

KonumAçıklama
/etc/crontabAna sistem genelinde crontab dosyası
/etc/cron.d/Ek sistem cron dosyaları için dizin
/var/spool/cron/crontabs/Bireysel kullanıcı crontab dosyalarını depolayan dizin
/etc/cron.hourly/Her saat çalıştırılan betikler
/etc/cron.daily/Her gün çalıştırılan betikler
/etc/cron.weekly/Her hafta çalıştırılan betikler
/etc/cron.monthly/Her ay çalıştırılan betikler

Ana Sistem Crontab’ını Görüntüleme

cat /etc/crontab

Örnek Çıktı

SHELL=/bin/sh
PATH=/usr/bin:/usr/sbin

# m h dom mon dow user command
17 *  * * * root cd / && run-parts --report /etc/cron.hourly
25 6  * * * root test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.daily )
47 6  * * 7 root test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.weekly )
52 6  1 * * root test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.monthly )

Kullanıcı crontab’larından farklı olarak, sistem /etc/crontab dosyası zaman belirtimi ile komut arasında bir kullanıcı alanı içerir ve her görevin hangi kullanıcı hesabı tarafından çalıştırılacağını belirtir.

Ek Sistem Cron Dosyalarını Listeleme

ls /etc/cron.d/

Bu dizindeki her dosya, sunucunuza yüklenen belirli sistem hizmetleri veya uygulamalar için ek zamanlanmış görevleri tanımlayabilir.

4. /var/spool/cron Dosyasında Depolanan Cron İşlerini Görüntüleme

Kullanıcıya özgü crontab dosyaları /var/spool/cron/crontabs/ dizininde diske depolanır. Etkin crontab’ları olan tüm kullanıcıları şu şekilde listeleyebilirsiniz:

ls /var/spool/cron/crontabs/

Belirli bir kullanıcının crontab dosyasının içeriğini doğrudan okumak için:

cat /var/spool/cron/crontabs/username

> Not: Bu, sudo crontab -l -u username ile aynı çıktıyı üretir, ancak bu dosyalara doğrudan erişim genellikle root ayrıcalıkları gerektirir.

5. Tüm Kullanıcılar İçin Tüm Cron İşlerini Aynı Anda Listeleme

Sistem yöneticisi olarak, tüm kullanıcılar arasında her cron işini aynı anda denetlemek isteyebilirsiniz. Aşağıdaki tek satırlık betik bunu gerçekleştirir:

for user in $(cut -f1 -d: /etc/passwd); do echo "--- Cron jobs for: $user ---"; crontab -l -u $user 2>/dev/null; done

Bu betik, /etc/passwd dosyasında tanımlanan her kullanıcı hesabını yineler ve zamanlanmış cron işlerini yazdırır, crontab’ı olmayan kullanıcılar için hata iletilerini bastırır.

Cron İşleri Nasıl Düzenlenir

Şu anda oturum açmış olan kullanıcı için cron işleri eklemek veya değiştirmek için şunu kullanın:

crontab -e

Bu, crontab dosyasını sisteminizin varsayılan metin düzenleyicisinde açar (genellikle nano veya vi). Kaydedip çıktıktan sonra, değişiklikler hemen yürürlüğe girer — hizmet yeniden başlatması gerekmez.

Örnek: Her Gün Saat 3:00’te Bir Komut Dosyası Çalıştırın

0 3 * * * /home/user/scripts/daily-report.sh

Örnek: Geçerli Kullanıcı için Tüm Cron İşlerini Silin

crontab -r

> Uyarı: -r bayrağı, geçerli kullanıcının tüm cron işlerini onay olmadan kaldırır. Dikkatli kullanın.

Hızlı Referans: Temel Crontab Komutları

GörevKomut
Geçerli kullanıcının cron işlerini listelecrontab -l
Başka bir kullanıcının cron işlerini listelesudo crontab -l -u username
Geçerli kullanıcının crontab’ını düzenlecrontab -e
Geçerli kullanıcı için tüm cron işlerini kaldırcrontab -r
Sistem crontab’ını görüntülecat /etc/crontab
/etc/cron.d/ içindeki cron dosyalarını listelels /etc/cron.d/
Tüm kullanıcı crontab dosyalarını listelels /var/spool/cron/crontabs/
Belirli bir kullanıcının crontab dosyasını görüntülecat /var/spool/cron/crontabs/username

Yaygın Cron İş Sorunlarını Giderme

Deneyimli yöneticiler bile cron ile ilgili sorunlarla karşılaşırlar. İşte en yaygın sorunlar ve bunları çözme yolları:

Cron işi çalışmıyor:

  • Crontab girişinizin sözdizimini çevrimiçi bir cron ifadesi doğrulayıcı kullanarak doğrulayın.
  • Komut dosyasının yürütme izinlerine sahip olduğundan emin olun: chmod +x /path/to/script.sh
  • Komut veya komut dosyasının tam mutlak yolunun belirtildiğini kontrol edin.

Ortam değişkeni sorunları:

  • Cron minimal bir ortamla çalışır. Her zaman komutlar ve ikililer için mutlak yollar kullanın.
  • Gerekli değişkenleri (PATH gibi) crontab dosyanızın başına tanımlayın.

Cron günlüklerini kontrol etme:

  • Debian/Ubuntu üzerinde: grep CRON /var/log/syslog
  • RHEL/CentOS üzerinde: grep CRON /var/log/cron

Yönetilen Hosting Ortamlarında Cron İşlerini Yönetme

Uygulamalarınızı yönetilen hosting üzerinde çalıştırıyorsanız, cron iş yönetimine erişim kontrol panelinize bağlı olarak değişebilir. cPanel ile VPS kullanan kullanıcılar, cPanel panosundaki sezgisel Cron İşleri bölümü aracılığıyla cron işlerini yönetebilir; bu bölüm, crontab dosyalarını manuel olarak düzenlemek zorunda kalmadan görevleri zamanlamak için grafik bir arayüz sağlar.

Tam komut satırı kontrolünü tercih edenler için, bir VPS Hosting planı, cron işlerini, sistem hizmetlerini ve otomasyon komut dosyalarını bu kılavuzda açıklandığı şekilde yönetmek için tam root erişimi sağlar. Altyapınız daha fazla kaynak ve izolasyon gerektiriyorsa, Dedicated Servers karmaşık, yüksek frekanslı zamanlanmış iş yükleri çalıştırmak için nihai ortamı sağlar.

Sonuç

crontab kullanarak cron işlerini görüntülemek ve listelemek, Unix benzeri sistemlerle çalışan herkes için temel bir beceridir. Kendi zamanlanmış görevlerinizi crontab -l ile incelemekten sistem genelindeki işleri /etc/crontab ve /etc/cron.d/ içinde denetlemeye kadar, bu kılavuzda ele alınan komutlar sunucunuzda neler çalıştığı ve ne zaman çalıştığı hakkında tam görünürlük sağlar.

Cron’u ustalıkla kullanarak, tekrarlayan görevleri otomatikleştirebilir, yedeklemeleri planlayabilir, günlük döndürmeyi yönetebilir ve tüm altyapınız genelinde tutarlı betik yürütmeyi sağlayabilirsiniz — tümü manuel müdahale olmadan. İster deneyimli bir sysadmin olun ister sunucu yönetimine yeni başlıyor olun, cron Linux ve Unix sistemlerinde mevcut olan en güçlü ve güvenilir otomasyon araçlarından biri olmaya devam etmektedir.