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.

Ceyhun Enki Aksan
Ceyhun Enki Aksan Girişimci, Maker

TL;DR

Konu20192026
AltyapıSabit sunucu (VPS/Dedicated)Serverless (Cloudflare, Vercel)
Zamanlayıcıcrontabsystemd timers, Inngest, Trigger.dev
Hata yönetimiManuel (log kontrolü)Otomatik retry, durable execution
TetiklemeYalnızca zaman tabanlıZaman + olay tabanlı (event-driven)
MaliyetSabit aylık sunucuKullandığın kadar öde
AI entegrasyonuYokHeartbeat pattern, MCP cron

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 etmekte. Her kullanıcı kendi crontab dosyasına sahip olup, sistem geneli görevler /etc/crontab üzerinden yönetilmekte1.

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ü 1.7.2 (Temmuz 2024) olup, aralık/adım değerlerinde doğrulama iyileştirmeleri ve crontab -l çıktısında yorum satırlarının renklendirilmesi gibi yenilikler içermektedir.


systemd Timers: Crontab’ın Modern Alternatifi

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

Ö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ırmakta.

Cloudflare Workers Cron Triggers

Cloudflare’in 300’den fazla lokasyonundaki edge sunucularında çalışan Worker’lar, cron trigger’lar ile belirli aralıklarla tetiklenebilmekte3:

# 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ı5250
CPU süresi (< 1 saat aralık)30 saniye30 saniye
CPU süresi (>= 1 saat aralık)15 dakika15 dakika

Vercel Cron Jobs

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

{
  "crons": [
    { "path": "/api/daily-digest", "schedule": "0 9 * * *" },
    { "path": "/api/cleanup", "schedule": "0 0 * * 0" }
  ]
}
HobbyPro
Cron sayısı100100
Minimum aralıkGünde birDakikada bir
HassasiyetSaatlik (+/- 59 dk)Dakika bazlı

Hobby planında günlük aralıktan daha sık çalışan cron ifadeleri deploy’u başarısız kılmakta.

GitHub Actions as Cron

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

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, 270’ten fazla AWS servisi ve 6.000’den fazla API operasyonunu hedefleyebilmekte6. Kalıcı ücretsiz katmanda ayda 14 milyon çağrı sunmakta.

Railway Cron

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

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 üstlenmekte7:

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 hala satın almadıysa tetikle” gibi dinamik koşullar

Ücretsiz planda ayda 50.000 fonksiyon çalıştırma, TypeScript, Python ve Go SDK’ları desteklenmekte.

Trigger.dev

Trigger.dev, arka plan görevleri, AI agent’lar ve durable iş akışları için açık kaynak bir platform. En güncel sürümü v4 (Şubat 2026) ile warm start (100-300ms), waitpoint’ler ve çalıştırma önceliklendirmesi sunmakta8:

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ı~13.000~4.800

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 sunmakta. Ü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 belirgin maliyet tasarrufu sağlamakta10:

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çlarla 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 icin ise Pipedream yazısına göz atabilirsiniz.

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