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
| İfade | Anlamı |
|---|---|
0 0 * * * | Her gün gece yarısında |
*/5 * * * * | Her 5 dakikada bir |
30 2 * * 7 | Her Pazar günü saat 02:30’da |
0 3 1 * * | Her ayın ilk günü saat 03:00’te |
0 9-17 * * 1-5 | Pazartesi–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 -lBu 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.shBu ö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 usernameusername yerine gerçek hesap adını yazın. Örneğin:
sudo crontab -l -u johnBu, 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:
| Konum | Açıklama |
|---|---|
/etc/crontab | Ana 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; doneBu 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 -eBu, 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örev | Komut |
|---|---|
| Geçerli kullanıcının cron işlerini listele | crontab -l |
| Başka bir kullanıcının cron işlerini listele | sudo crontab -l -u username |
| Geçerli kullanıcının crontab’ını düzenle | crontab -e |
| Geçerli kullanıcı için tüm cron işlerini kaldır | crontab -r |
| Sistem crontab’ını görüntüle | cat /etc/crontab |
| /etc/cron.d/ içindeki cron dosyalarını listele | ls /etc/cron.d/ |
| Tüm kullanıcı crontab dosyalarını listele | ls /var/spool/cron/crontabs/ |
| Belirli bir kullanıcının crontab dosyasını görüntüle | cat /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 (
PATHgibi) 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.
tasarruf edin