İçeriğe geç
ceaksan
cli

Crontab, Cron Job ve Modern Zamanlanmış Görevler

Crontab temellerinden systemd timer'lara, Cloudflare Workers Cron Triggers'dan Inngest'e, AI agent heartbeat pattern'dan MCP entegrasyonuna uzanan kapsamlı bir zamanlanmış görev rehberi.

3 Nis 2019 7 dk okuma Güncellendi: 9 Şub 2026
TL;DR

Cron job'lar, 2019'da bir sunucuya SSH ile bağlanıp crontab -e yazmaktan ibaretti. 2026'da ise tamamen serverless, event-driven ve stateful bir yapıya evrildi. Cloudflare Workers Cron Triggers edge'de çalışırken, Inngest ve Trigger.dev durable execution ile hata toleransı sağlamakta. AI agent'lar için cron artık bir heartbeat mekanizması haline geldi: belirli aralıklarla uyandırılan agent'lar veriyi analiz edip tekrar uyumakta. Bu yazı, crontab temellerinden modern zamanlanmış görev ekosisteminin tamamına uzanan bir perspektif sunmakta.


Bu yazının ilk versiyonu 2019 yılında yayınlanmıştı. O tarihten bu yana cron job dünyası, “bir sunucuda Linux terminaline girip crontab -e yazmak” noktasından, tamamen serverless, event-driven ve stateful bir yapıya evrildi. 2026 itibarıyla cron artık işletim sisteminin bir parçası değil, bulut mimarisinin bir orkestrasyon aracıdır.

Crontab Temelleri

Cron, Unix temelli sistemlerde (Linux, macOS, BSD) zamanlanmış görevleri yöneten daemon’dur. crontab ise bu görevlerin tanımlandığı dosya ve komutu ifade eder. Her kullanıcı kendi crontab dosyasına sahip olup, sistem geneli görevler /etc/crontab üzerinden yönetilir1.

Zaman İfadesi Sözdizimi

* * * * * [komut-veya-script]
┬ ┬ ┬ ┬ ┬
│ │ │ │ └───── haftanın günü (0-6, 0=Pazar)
│ │ │ └────────── ay (1-12)
│ │ └─────────────── gün (1-31)
│ └──────────────────── saat (0-23)
└───────────────────────── dakika (0-59)

Temel İşlemler

# Görev listesini görüntüle
crontab -l

# Görev düzenle (varsayılan editör ile)
crontab -e

# nano ile düzenle (tek seferlik)
env EDITOR=nano crontab -e

# Tüm görevleri sil (dikkatli kullan)
crontab -r

Sık Kullanılan Zaman İfadeleri

İfadeAçıklama
* * * * *Her dakika
0 * * * *Her saat başı
0 9 * * *Her gün saat 09:00
0 9 * * 1-5Hafta içi her gün 09:00
0 0 1 * *Her ayın ilk günü gece yarısı
*/15 * * * *Her 15 dakikada bir
0 9,18 * * *Her gün 09:00 ve 18:00

Kısayol İfadeleri

KısayolKarşılıkAçıklama
@reboot-Sistem başlangıcında bir kez
@hourly0 * * * *Saatte bir
@daily0 0 * * *Günde bir
@weekly0 0 * * 0Haftada bir
@monthly0 0 1 * *Ayda bir
@yearly0 0 1 1 *Yılda bir

Basit Bir Örnek

Her dakika rastgele bir sayı üreten ve dosyaya yazan bir görev:

# random.sh oluştur
cat > ~/random.sh << 'SCRIPT'
#!/bin/bash
NUMBER=$[ ( $RANDOM % 100 ) + 1 ] && echo $NUMBER >> ~/number.log
SCRIPT
chmod +x ~/random.sh

# Crontab'a ekle
crontab -e
# Eklenecek satır:
* * * * * ~/random.sh

cronie (en yaygın cron daemon) en güncel sürümü, GitHub release sayfasındaki kayda göre 1.7.2 (1 Temmuz 2024). Bu minör sürüm 1.7.0’da çıkan bir regresyonu kapatıyor ve SAST taramasında bulunan bellek sızıntılarını yamalıyor.

systemd Timers: Crontab’ın Modern Alternatifi

systemd tabanlı Linux dağıtımlarında, systemd timer’lar crontab’a göre belirgin avantajlar sunar2:

Özellikcrontabsystemd Timers
KurulumTek satırİki birim dosyası (service + timer)
LoglamaSınırlı (mail, syslog)Tam journald entegrasyonu
Kaçırılan görevlerSessizce atlanırPersistent=true ile yakalanır
Çakışma önlemeYok (yeni instance başlar)Tek instance garantisi
BağımlılıklarYokAğ, disk, diğer servislere bağımlılık
Kaynak kontrolüYokcgroups (CPU, bellek limiti)
TaşınabilirlikBSD, macOS, tüm UnixYalnızca systemd Linux

systemd Timer Örneği

# /etc/systemd/system/yedekleme.service
[Unit]
Description=Gunluk Yedekleme

[Service]
Type=oneshot
ExecStart=/opt/scripts/yedekleme.sh

# /etc/systemd/system/yedekleme.timer
[Unit]
Description=Gunluk Yedekleme Zamanlayici

[Timer]
OnCalendar=*-*-* 03:00:00
Persistent=true

[Install]
WantedBy=timers.target
# Aktifleştir ve başlat
systemctl enable --now yedekleme.timer

# Durumu kontrol et
systemctl list-timers
journalctl -u yedekleme.service

Ne zaman hangisi? Basit zamanlamalar, macOS/BSD ortamları ve hızlı tek satırlık görevler için crontab; üretim sunucularında loglama, bağımlılık yönetimi ve kaynak kontrolü gereken görevler için systemd timers.

Klasik Cron’dan Cloud-Native Cron’a

2019’da zamanlanmış görev çalıştırmak, sabit bir sunucunun (EC2, Droplet vb.) ayakta kalmasını gerektiriyordu. 2026’da ise sunucusuz (serverless) platformlar, yalnızca çalışma süresi kadar ücretlendirme yaparak bu ihtiyacı ortadan kaldırır.

Cloudflare Workers Cron Triggers

Cloudflare’in resmi network sayfasına göre 330’dan fazla şehirdeki edge sunucularında çalışan Worker’lar, cron trigger’lar ile belirli aralıklarla tetiklenebilir3:

# wrangler.toml
[triggers]
crons = ["0 3 * * *", "*/30 * * * *"]
export default {
  async scheduled(controller, env, ctx) {
    ctx.waitUntil(async () => {
      // E-ticaret verilerini çek ve işle
      const data = await env.DB.prepare("SELECT * FROM orders WHERE date = ?")
        .bind(today())
        .all();
      await processOrders(data);
    });
  },
};
ÜcretsizÜcretli ($5/ay)
Trigger sayısı (hesap başına)5250
CPU süresi (scheduled handler)10 ms30 saniye (< 1 saat aralık) / 15 dakika (>= 1 saat aralık)

CF dokümantasyonu ücretsiz planda scheduled handler için CPU süresini 10 milisaniye olarak veriyor; uzun süren cron işleri için Paid plan zorunlu.

Vercel Cron Jobs

Vercel, Serverless ve Edge Function’ları cron ile tetikleyebilir4:

{
  "crons": [
    { "path": "/api/daily-digest", "schedule": "0 9 * * *" },
    { "path": "/api/cleanup", "schedule": "0 0 * * 0" }
  ]
}
HobbyPro
Cron sayısı (proje başına)100100
Cron sayısı (team başına)240
Minimum aralıkGünde birDakikada bir
Execution timeout10 sn300 sn

Hobby planında günlük aralıktan daha sık çalışan cron ifadeleri deploy başarısız olur. Proje başına 100 cron limiti tüm planlarda aynı; gerçek darboğaz team-bazlı toplam limit (Hobby 2, Pro 40).

GitHub Actions as Cron

Basit veri çekme işleri için GitHub Actions’ın schedule tetikleyicisi yaygın biçimde kullanılır5:

on:
  schedule:
    - cron: "0 */6 * * *" # Her 6 saatte bir

jobs:
  veri-cek:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - run: python scripts/veri_cek.py

Ancak dikkat edilmesi gereken sınırlamalar mevcut: minimum 5 dakika aralık, yoğun saatlerde gecikme veya atlama riski, ve halka açık depolarda 60 gün aktivite yoksa otomatik devre dışı bırakma. Public depolarda tamamen ücretsiz, private depolarda ayda 2.000 dakika ücretsiz süre sunulmakta.

AWS EventBridge Scheduler

CloudWatch Events’in halefi olan EventBridge Scheduler, AWS resmi sayfasına göre 200’den fazla AWS servisi ve 6.000’den fazla API operasyonunu hedefleyebilir6. Kalıcı ücretsiz katmanda ayda 14 milyon çağrı sunar; bu free tier süresiz ve tüm bölgeler arasında ortak.

Railway Cron

Railway, dashboard üzerinden 5 dakika minimum aralıklı cron yapılandırması sunar. Yalnızca UTC destekler ve servisin görevi tamamladıktan sonra çıkış yapması gerekir.

Karşılaştırma Tablosu

PlatformMin. AralıkÜcretsiz KatmanRetryDurableYapılandırma
crontab1 dakikaN/A (OS)YokYokcrontab
systemd timers1 saniyeN/A (OS)YokPersistentUnit dosyaları
CF Workers Cron1 dakika5 trigger, 100k istek/günYokYokwrangler.toml
Vercel Cron1 dk (Pro), 1/gün (Hobby)100 cronYokYokvercel.json
GitHub Actions5 dakika2k dk/ay (private)YokYokYAML
EventBridge1 dakika14M çağrı/ayYapılandırılabilirYokConsole/SDK
Railway5 dakikaPlan dahiliYokYokDashboard

Stateful ve Reliable Scheduling

2019’da cron job hata verdiğinde, o iş sessizce ölürdü. Modern platformlar bunu değiştirdi.

Inngest

Inngest, olay güdümlü (event-driven) durable execution platformudur. Fonksiyonları cron, olay veya webhook ile tetikleyebilmekte; kuyruk, durum, yeniden deneme ve zamanlama yönetimini tamamen üstlenir7:

import { inngest } from "./client";

export const haftalikRapor = inngest.createFunction(
  { id: "haftalik-rapor" },
  { cron: "TZ=Europe/Istanbul 0 9 * * 1" },
  async ({ step }) => {
    const veriler = await step.run("veri-cek", async () => {
      return db.orders.findAll({ lastWeek: true });
    });

    const analiz = await step.run("ai-analiz", async () => {
      return llm.analyze(veriler, "Haftalık satış trendlerini özetle");
    });

    await step.run("bildirim-gonder", async () => {
      await slack.send("#raporlar", analiz);
    });
  },
);

Inngest’in geleneksel cron’dan temel farkları:

  • Durable execution: Her step.run() sonucu saklanır; hata durumunda yalnızca başarısız adım yeniden çalıştırılır
  • Otomatik retry: Varsayılan 4 yeniden deneme, eksponansiyel geri çekilme (backoff) ile
  • Saat dilimi desteği: TZ=Europe/Istanbul ile doğrudan cron ifadesinde
  • Olay + zaman hibrit: “Kullanıcı sepete ürün ekledikten 2 saat sonra hâlâ satın almadıysa tetikle” gibi dinamik koşullar

Inngest dokümantasyonuna göre ücretsiz plan ayda 50.000 fonksiyon çalıştırma hakkı veriyor; TypeScript, Python ve Go SDK’ları resmi olarak destekleniyor.

Trigger.dev

Trigger.dev, arka plan görevleri, AI agent’lar ve durable iş akışları için açık kaynak bir platformdur. v4 sürümü 18 Ağustos 2025’te GA olarak yayınlandı (Launchweek 2 duyurusu); warm start (100-300ms), waitpoint’ler ve çalıştırma önceliklendirmesi getiriyor8:

export const gunlukTemizlik = schedules.task({
  id: "gunluk-temizlik",
  cron: "0 3 * * *",
  run: async (payload) => {
    await temizlikYap();
  },
});
Trigger.devInngest
MimariYönetilen worker’lar kodunuzu çalıştırırEvent-driven, HTTP endpoint’lerinizi çağırır
Dil desteğiTypeScriptTypeScript, Python, Go
Warm startEvet (v4)N/A (serverless)
GitHub yıldızı (2026-05)~15.100~5.400

Upstash QStash

QStash, serverless HTTP tabanlı mesaj kuyruğu ve görev zamanlayıcıdır9. Hedef URL’ye HTTP isteği göndererek çalışır; yeniden deneme, dead letter queue ve zamanlama desteği sunar. Ücretsiz planda günde 1.000 mesaj ve 10 aktif zamanlama.

AI Agent’lar ve Zamanlanmış Görevler

Cron job’lar, 2019’da “zamanı gelince bir script çalıştıran” basit tetikleyicilerdi. 2026’da ise AI agent’ların yaşam döngüsünü yöneten bir heartbeat mekanizması haline geldi.

Heartbeat Pattern

Agent sürekli çalışmak yerine, cron tarafından belirli aralıklarla uyandırılır, görevini yapar ve tekrar uyur. Bu yaklaşım, idle compute oranına bağlı olarak belirgin maliyet tasarrufu sağlayabilir10:

Her saat başı (cron) -> Agent uyanır -> Veriyi analiz eder -> Rapor gönderir -> Agent uyur

Sürekli çalışan agent: 7/24 compute maliyeti, boşta bekleme. Zamanlanmış agent: Yalnızca çalışma süresi kadar maliyet. Toplu (batch) ve periyodik işler için ideal.

MCP ve Cron Entegrasyonu

Anthropic tarafından standartlaştırılan ve Aralık 2025’te Linux Foundation altındaki Agentic AI Foundation’a (AAIF) devredilen MCP (Model Context Protocol), AI modellerinin yerel dosyalar, veritabanları ve araçlar ile iletişim kurmasını sağlamakta.

Modern kullanımda bir cron job artık yalnızca Python script’i çalıştırmıyor; bir MCP sunucusunu tetikleyerek AI agent’ı belirli bir bağlam (context) ile uyandırmakta:

Cron (her gece 00:00)
  -> MCP üzerinden veritabanına bağlan
  -> Son 24 saatin satış verilerini çek
  -> LLM'e context olarak gönder
  -> "Anormallikleri bul" komutu ver
  -> Sonucu Slack'e raporla

Bu amaçla geliştirilmiş MCP sunucuları mevcut: mcp-cron, shell komutu veya AI prompt görevlerini cron ifadeleriyle zamanlayabilmekte11. scheduler-mcp ise shell komutları, API çağrıları ve AI görevlerini cron, aralık ve tarih tabanlı tetikleyicilerle yönetebilmekte.

Olay + Zaman Hibrit Tetikleme

Artık yalnızca “Cuma günü çalış” değil, koşullu tetikleme de mümkün:

"Stok %10'un altına düşerse (olay)
 VE saat 18:00'den sonraysa (zaman koşulu)
 -> AI satın alma agent'ını çalıştır"

Inngest ve Trigger.dev bu tür hibrit yapıları doğrudan desteklemekte. Agent, olay gerçekleştiğinde tetiklenir ancak zaman koşulu da sağlanmalıdır.

Semantic Cron: Veri Analitiğinde Yeni Yaklaşım

Modern cron iş akışları, veriyi yalnızca taşımak yerine taşıma sırasında işlemekte:

  • LLM tabanlı veri temizliği: Cron ile çekilen verideki eksik kategori isimlerini AI ile tahmin edip tabloya ekleme
  • Otomatik hipotez testi: Her hafta e-ticaret verilerini pivot table yapıp, “Geçen haftaya göre neden bu kategoride düşüş var?” sorusunu AI agent’a sorarak hipotez üretme
  • Token optimizasyonu: Ham veri yerine pivot edilmiş ve flag eklenmiş özet tabloları AI’a göndererek maliyet düşürme ve doğruluk artırma

Kimlik ve Yetkilendirme Bağlamı

Clerk, Auth0 gibi kimlik yönetim platformları, cron işlemleriyle webhook’lar üzerinden bağlanmakta:

  • Kullanıcı bakımı: “30 gündür giriş yapmayan kullanıcıları pasife al” gibi görevler, Clerk webhook’ları ile tetiklenen zamanlanmış fonksiyonlarla yönetilmekte
  • Abonelik yönetimi: Stripe veya Paddle gibi ödeme sistemleriyle senkronizasyon, edge servisler üzerinden periyodik görevlerle gerçekleştirilmekte
  • Token yenileme: API token’larının periyodik yenilenmesi ve sertifika rotasyonu

Oyun ve Gerçek Zamanlı Sistemlerde Cron

Cron job’lar yalnızca veri analitiği ve DevOps alanında değil, oyun ve gerçek zamanlı sistemlerde de kullanılmakta:

  • Enerji dolumu: Oyun içi enerji sistemlerinin belirli aralıklarla yenilenmesi
  • Günlük ödüller: Her gün sıfırlanan ödül mekanizmaları
  • Ekonomi dengelemesi: Oyun içi ekonomi parametrelerinin periyodik güncellenmesi
  • Sıralama güncellemesi: Liderlik tablolarının belirli aralıklarla yeniden hesaplanması

Bu görevler artık merkezi bir sunucu saati yerine, global olarak dağıtılmış cron trigger’lar (Cloudflare Workers, AWS EventBridge) ile yönetilmekte.

2026 Best Practice Rehberi

Basit Görev (Klasik Cron)

# Her gece 03:00'te yedekleme
0 3 * * * /opt/scripts/yedekleme.sh >> /var/log/yedekleme.log 2>&1

Güvenilir Görev (Inngest)

inngest.createFunction(
  { id: "gece-yedekleme", retries: 5 },
  { cron: "TZ=Europe/Istanbul 0 3 * * *" },
  async ({ step }) => {
    await step.run("yedekle", yedekleVeDogrula);
    await step.run("bildir", () => slack.send("Yedekleme tamamlandı"));
  },
);

Edge Cron (Cloudflare Workers)

# wrangler.toml
[triggers]
crons = ["0 */6 * * *"]

Senaryo Bazlı Tercih

SenaryoÖnerilen PlatformNeden
Basit script, VPScrontabEk bağımlılık yok
Üretim sunucusu, Linuxsystemd timersLoglama, kaynak kontrolü
Serverless, düşük maliyetCloudflare Workers CronEdge, kullandığın kadar öde
Hata toleransı gereken iş akışıInngest / Trigger.devDurable execution, retry
Basit veri çekme, ücretsizGitHub ActionsPublic repo’da ücretsiz
AWS ekosistemiEventBridge Scheduler14M/ay ücretsiz
AI agent heartbeatInngest + MCPOlay + zaman, durable
E-ticaret rapor pipelineInngestAdım bazlı, retry, Slack entegrasyonu

Sonuç

Cron, Unix felsefesinin temel taşlarından biri olarak “zamanı geldiğinde çalıştır” ilkesiyle onlarca yıldır görev yapmakta. Ancak modern geliştirme iş akışlarında bu basit mekanizma, serverless platformlar (Cloudflare Workers, Vercel), durable execution araçları (Inngest, Trigger.dev) ve event-driven mimarilerle zenginleştirilmiş durumda.

AI agent’ların yaygınlaşmasıyla birlikte cron, bir zamanlayıcı olmaktan çıkıp otonom agent’ların vites kutusuna dönüştü. MCP sunucuları ile entegre cron görevleri, agent’lara veritabanı ve dosya erişimi bağlamı sağlayarak veriyi analiz etme, hipotez üretme ve aksiyon alma döngüsünü otomatikleştirmekte.

2019’da cron bir zamanlayıcıydı; 2026’da ise bulut mimarisinin bir orkestrasyon aracıdır.

Cron ile sıkça birlikte kullanılan araçlar hakkında rsync, wget ve grep yazılarına, modern otomasyon alternatifleri için ise Pipedream yazısına göz atabilirsiniz.

Cron Pipeline'ınızı Modernize Edin

VPS crontab'tan serverless durable execution mimarisine geçiş, Inngest/Trigger.dev tasarımı, AI agent heartbeat entegrasyonu ve CF Workers Cron migrasyon planı. Mağazanıza özel mimari değerlendirmesi.

İletişime Geçin

Footnotes

  1. cronie - Cron Daemon
  2. Linux Task Scheduling: cron vs systemd timers
  3. Cloudflare Workers Cron Triggers
  4. Vercel Cron Jobs
  5. GitHub Actions - Scheduled Events
  6. AWS EventBridge Scheduler
  7. Inngest - Scheduled Functions
  8. Trigger.dev v4
  9. Upstash QStash
  10. Ambient Agents and Always-On Intelligence
  11. mcp-cron - MCP Server for Scheduled Tasks
Önemli Noktalar
  • 01 Cron job'lar sunucu bağımlı yapıdan serverless ve event-driven mimariye evrildi
  • 02 systemd timer'lar üretim ortamlarında crontab'a göre log, kaynak kontrolü ve bağımlılık yönetimi avantajı sunmakta
  • 03 Inngest ve Trigger.dev, durable execution ile hata toleranslı zamanlanmış iş akışları sağlamakta
  • 04 AI agent'lar için cron, heartbeat pattern ile maliyet optimizasyonu aracı haline geldi
  • 05 Cloudflare Workers Cron Triggers ücretsiz planda 5, ücretli planda 250 trigger desteklemekte
Sık Sorulan Sorular (FAQ)
+ systemd timer ile crontab arasındaki fark nedir?

crontab tek satırlık basit zamanlama sunarken, systemd timer'lar journald ile tam log entegrasyonu, Persistent=true ile kaçırılan görevleri yakalama, cgroups ile kaynak kontrolü ve diğer servis birimlerine bağımlılık tanımlama imkanı sunmaktadır. Ancak systemd yalnızca Linux'ta çalışırken, crontab BSD, macOS ve tüm Unix sistemlerinde kullanılabilmektedir.

+ Serverless cron nedir ve neden tercih edilmeli?

Serverless cron, sabit bir sunucu gerektirmeden zamanlanmış görevleri çalıştıran bulut hizmetleridir. Cloudflare Workers Cron Triggers, Vercel Cron Jobs ve AWS EventBridge gibi platformlar, yalnızca çalışma süresi kadar ücretlendirme yapmakta ve altyapı yönetimi gerektirmemektedir. Sabit sunucu maliyeti yerine kullandığın kadar öde modeli sunmaktadırlar.

+ Inngest ve Trigger.dev geleneksel cron'dan nasıl farklı?

Geleneksel cron bir komutu tetikler ve hata durumunda sessizce başarısız olur. Inngest ve Trigger.dev ise durable execution sunmaktadır: her adımın sonucu saklanır, hata durumunda otomatik yeniden deneme yapılır ve iş akışı kaldığı yerden devam eder. Ayrıca zaman tabanlı tetiklemenin yanı sıra olay tabanlı (event-driven) tetikleme de desteklenmektedir.

+ AI agent'lar cron job'ları nasıl kullanıyor?

Heartbeat pattern ile AI agent'lar belirli aralıklarla (örneğin her saat başı) cron tarafından uyandırılır, veriyi analiz eder ve tekrar uyur. Bu yaklaşım, sürekli çalışan agent'lara göre belirgin maliyet tasarrufu sağlamaktadır. MCP sunucuları cron ile tetiklenerek agent'lara veritabanı ve dosya erişimi bağlamı (context) sağlanabilmekte.