Crontab -e Komutu Cron Görevi Ekleme ve Düzenleme

KomutYayın: Güncellendi: 6 dk okumaHazırlayan: cronjob.com.tr Editörleri

crontab -e, Linux ve Unix sistemlerinde kişisel zamanlanmış görev tablosunu güvenli şekilde düzenlemenin standart yoludur. Dosyayı doğrudan /var/spool altında açmak yerine bu komut geçici kopya oluşturur, editör açar, sözdizimini kontrol eder ve cron daemon'a yeni tabloyu yükletir.

Bu rehberde editör seçimi, adım adım görev ekleme, gerçek hata mesajları, yedekleme ve başka kullanıcı adına düzenleme yer alır. Beş alanlı zaman ifadelerinin anlamı için crontab sözdizimi; örnek satırlar için crontab örnekleri rehberlerine bakın. Resmi özet: crontab(1) man sayfası.

SSH erişiminiz yoksa veya yalnızca bir URL'yi periyodik çağırmanız gerekiyorsa sunucu crontab'ı yerine cronjob.com.tr HTTP zamanlayıcısı kullanılabilir; bu sayfanın sonunda kısaca anlatılır.

macOS'ta da crontab -e kullanılabilir; ancak betiğin eriştiği dosyalar ve sistem izinleri Linux sunucudan farklıdır. macOS cron ve launchd kurulum ayrıntıları, görevi crontab'da tutmak ile bir LaunchAgent'a taşımak arasındaki seçimi değerlendirmenize yardımcı olur.

crontab -e Ne Yapar?

Komut çalıştırıldığında sırayla şunlar olur:

  1. Mevcut kullanıcı crontab'ının geçici bir kopyası oluşturulur (yoksa boş şablon).
  2. VISUAL veya EDITOR ortam değişkenindeki (yoksa sistem varsayılanı) editör açılır.
  3. Kaydedip çıktığınızda crontab sözdizimi doğrulanır.
  4. Hata yoksa tablo kurulur; genelde crontab: installing new crontab mesajı görünür.
  5. Cron daemon bir sonraki dakikadan itibaren yeni satırları kullanır.
crontab -e

İlgili komutlar: listelemek için crontab -l; silmek için crontab -r (bazı sürümlerde onay için -i); dosyadan yüklemek için crontab dosya.txt.

İlk Kullanım ve Editör Seçimi

Debian/Ubuntu'da ilk çağrıda editör menüsü çıkabilir:

Select an editor.  To change later, run 'select-editor'.
  1. /bin/nano        <---- easiest
  2. /usr/bin/vim.basic
  3. /usr/bin/vim.tiny
  4. /bin/ed

Choose 1-4 [1]:

Yeni başlayanlar için nano yeterlidir. Sonradan değiştirmek:

select-editor
export EDITOR=nano
export VISUAL=nano
echo 'export EDITOR=nano' >> ~/.bashrc
source ~/.bashrc

Adım Adım Cron Görevi Ekleme

  1. Yedek alın: crontab -l > ~/crontab-yedek-$(date +%Y%m%d).txt (tablo yoksa hata normaldir).
  2. crontab -e ile editörü açın.
  3. Dosyanın sonuna gidin (nano: Ctrl+End; vim: G).
  4. Yorum satırı ve görev satırını ekleyin; satırın sonunda newline olsun.
  5. Kaydedip çıkın (nano: Ctrl+O, Enter, Ctrl+X; vim: Esc, :wq).
  6. crontab -l ile satırın göründüğünü doğrulayın.
# Her gün 03:00 veritabanı yedeği
0 3 * * * /home/kullanici/scripts/yedek.sh >> /var/log/yedek.log 2>&1

Başarılı kurulumda tipik çıktı:

crontab: installing new crontab

İfadeyi görsel olarak üretmek için cron ifade oluşturucu kullanabilirsiniz; sonra satırı crontab'a yapıştırın.

Gerçek Senaryolar

Senaryo 1: Gece yedek + log

Her gece 03:15'te yedek script'i çalışır; stdout/stderr aynı loga yazılır. PATH dar olduğu için script içinde mutlak yollar kullanın.

15 3 * * * /usr/bin/bash /home/kullanici/scripts/yedek.sh >> /home/kullanici/logs/yedek.log 2>&1

Senaryo 2: URL sağlık kontrolü (5 dakika)

Uygulama bir HTTP endpoint sunuyorsa curl ile kontrol edilebilir. Çıktıyı loglamak, sessiz 404/timeout'ları yakalar.

*/5 * * * * /usr/bin/curl -fsS -o /dev/null -w "\%{http_code}\n" https://ornek.com/health >> /var/log/health-cron.log 2>&1

Başka Kullanıcının Crontab'ı

Root yetkisiyle web veya veritabanı kullanıcısı adına düzenleme:

sudo crontab -u www-data -e
sudo crontab -u postgres -l

Kullanıcı crontab satırında kullanıcı adı alanı yoktur. /etc/crontab formatını buraya kopyalamayın. Web uygulaması dosyalarına www-data (veya hosting panelindeki eşdeğer kullanıcı) yazıyorsa görevi o kullanıcının tablosuna koymak izin hatalarını azaltır. Tersine, yalnızca root'un okuyabildiği yedek dizinleri için root crontab gerekir; gereksiz yere root ile çalıştırmayın.

Paylaşımlı hosting'de crontab -u genelde kapalıdır; panelin "Cron Jobs" arayüzü aynı kullanıcı tablosuna yazar. Panel ile crontab -e aynı tabloyu paylaşır; birinde sildiğiniz satır diğerinde de kaybolur.

Sık Hatalar ve Çözümleri

errors in crontab file, can't install

Neden: Geçersiz dakika/saat, fazla alan veya bozuk satır. Önceki tablo yerinde kalır. Çözüm: y ile editöre dönün; satırı beş alan + komut olacak şekilde düzeltin. Debian'da satır numarası bazen hatalı satırın bir üstünü gösterir.

crontab: installing new crontab
"/tmp/crontab.XXXXXX/crontab":10: bad minute
errors in crontab file, can't install.
Do you want to retry the same edit? (y/n)

bad minute / bad hour

Neden: Dakika alanı 0–59 veya saat alanı 0–23 aralığının dışındadır. Çözüm: Kullanıcı crontab'ında tam olarak beş zaman alanı kullanın.

Komut hiç çalışmıyor, kurulum mesajı geldi

Neden: Son satırda newline eksik (klasik Vixie cron tuzağı); göreli yol; veya dar PATH. Çözüm: Dosya sonunda boş satır bırakın; /usr/bin/php gibi mutlak yollar yazın; >> /tmp/cron-test.log 2>&1 ile loglayın.

permission denied veya script çalışmıyor

Neden: Çalıştırma izni yok veya yanlış kullanıcı. Çözüm: chmod +x script.sh; görevi dosya sahibinin crontab'ına koyun. Ayrıntı: Permission denied.

you are not allowed to use this program (crontab)

Neden: Kullanıcı /etc/cron.deny listesinde veya cron.allow dışındadır. Çözüm: Sistem yöneticisinden allow listesine eklenmesini isteyin.

İyi Alışkanlıklar

Crontab düzenlemesi nadiren yapılır; bu yüzden okunabilirlik, yedek ve gözlemlenebilirlik sonradan sorun çıkmasını engeller. Özellikle birden fazla kişinin aynı sunucuya dokunduğu ortamlarda yorum satırı ve tarihli yedek dosyası standart olmalıdır.

Bazı dağıtımlarda crontab -T dosya.txt sözdizimini kurmadan test eder. Destekleniyorsa yedek dosyanızı önce bu bayrakla doğrulayıp sonra crontab dosya.txt ile yükleyin. Desteklenmiyorsa staging sunucuda veya geçici dakikalık satırla canlı doğrulama yapın.

SHELL=/bin/bash
PATH=/usr/local/bin:/usr/bin:/bin
MAILTO=""

# Log temizliği — her Pazar 00:00
0 0 * * 0 /home/kullanici/scripts/log-temizle.sh >> /var/log/log-temizle.log 2>&1

cronjob.com.tr ile Alternatif

crontab -e sunucu içinde komut çalıştırır. İşiniz herkese açık bir HTTPS URL'yi çağırmaksa (sağlık kontrolü, webhook, wp-cron.php) panelden zamanlayabilirsiniz:

  1. Ücretsiz kayıt (kredi kartı yok).
  2. URL, HTTP metodu, isteğe bağlı header (ör. X-Cron-Token) ve zamanlama girin.
  3. En kısa aralık 60 saniye; başarı HTTP 200–399; loglar yaklaşık 7 gün; ardışık hatalarda e-posta.

Yerel script, veritabanı dump veya localhost servisleri dış zamanlayıcıya uymaz; bunlar için sunucu içi bir zamanlayıcı gerekir.

Sıkça Sorulan Sorular (SSS)

crontab -e ile eklediğim görev hemen çalışır mı?

Hayır. Kayıt anında cron daemon yeni tabloyu yükler; komut yalnızca beş alanlı zaman ifadesi eşleştiğinde çalışır. Test için geçici olarak her dakika (* * * * *) satırı kullanıp sonra aralığı düzeltin.

crontab -e dosyası nereye kaydediliyor?

Kullanıcı crontab dosyaları Debian/Ubuntu'da /var/spool/cron/crontabs/, RHEL/CentOS'ta genelde /var/spool/cron/ altındadır. Bu dosyaları doğrudan düzenlemeyin; her zaman crontab -e veya crontab dosya yolu kullanın.

crontab -e ile eklediklerimi nasıl geri alabilirim?

Yerleşik geri alma yoktur. Düzenlemeden önce crontab -l > yedek.txt alın. Geri yüklemek için crontab yedek.txt yazın. Tüm tabloyu silmek için crontab -r (destekleyen sürümlerde onay için -i) kullanın.

crontab -e ile /etc/crontab aynı mıdır?

Hayır. crontab -e kullanıcı tablosudur; satırda kullanıcı adı alanı yoktur. /etc/crontab ve /etc/cron.d dosyalarında zaman alanlarından sonra kullanıcı adı gerekir. Yanlışlıkla kullanıcı adını kullanıcı crontab'ına yazarsanız komut bulunamadı hatası alırsınız.

Sonuç

crontab -e zamanlanmış görev yönetiminin temel aracıdır. Yedek alın, mutlak yol ve log kullanın, sözdizimi uyarısını yok saymayın. Tabloyu anlamak için crontab nedir rehberine geçebilirsiniz.

Hemen Ücretsiz Cron Job Oluşturun

Sunucu crontab'ı olmadan HTTPS URL zamanlamak için cronjob.com.tr. Ücretsiz; kayıtta kredi kartı istenmez.

Ücretsiz Başla →

İlgili Rehberler