Cron, Linux'ta belirli zaman aralıklarında otomatik görev çalıştırmak için kullanılan zamanlayıcıdır. Bug bounty ve pentest'lerde otomasyon, log temizleme, backup ve monitoring için kullanılır.
# Cron tab'ı düzenle
crontab -e
# Cron tab'ı görüntüle
crontab -l
# Cron tab'ı temizle
crontab -r
# Sistem cron'ları
/etc/crontab
/etc/cron.d/
/etc/cron.hourly/
/etc/cron.daily/
/etc/cron.weekly/
/etc/cron.monthly/
* * * * * komut
│ │ │ │ │
│ │ │ │ └─── Haftanın günü (0-7, 0=Pazar)
│ │ │ └───── Ay (1-12)
│ │ └─────── Ayın günü (1-31)
│ └───────── Saat (0-23)
└─────────── Dakika (0-59)
# Her saat başı
0 * * * * /script.sh
# Her gece 02:00'de
0 2 * * * /backup.sh
# Her Pazartesi 05:00'de
0 5 * * 1 /weekly_report.sh
# Her 5 dakikada bir
*/5 * * * * /monitor.sh
# Her ayın ilk günü 00:00'de
0 0 1 * * /monthly_cleanup.sh
# Çalışma zamanını logla
0 2 * * * /backup.sh >> /var/log/backup.log 2>&1
# Her gün 03:00'de recon çalıştır
0 3 * * * /home/user/recon/recon.sh hedef.com >> /home/user/recon/recon.log 2>&1
# Her gün 00:00'de 30 günden eski logları sil
0 0 * * * find /var/log/ -name "*.log" -mtime +30 -delete
# Her gece 01:00'de backup al
0 1 * * * tar -czf /backup/daily_$(date +\%Y\%m\%d).tar.gz /var/www/html/
# Her 5 dakikada bir uptime kontrolü
*/5 * * * * curl -s https://hedef.com || echo "DOWN" | mail -s "Site Down" [email protected]
# Sadece belirli kullanıcılar cron kullanabilir
/etc/cron.allow
/etc/cron.deny
# Cron logları
/var/log/syslog | grep CRON
# Hatalı cron'ları bul
grep -i "failed" /var/log/syslog | grep CRON
# Systemd Timer (modern alternatif)
systemctl list-timers
# Timer oluştur
# /etc/systemd/system/myjob.service
[Service]
ExecStart=/script.sh
# /etc/systemd/system/myjob.timer
[Timer]
OnCalendar=daily
Persistent=true
[Install]
WantedBy=timers.target
systemctl enable myjob.timer
systemctl start myjob.timer
Cron Temel Kullanım
bash# Cron tab'ı düzenle
crontab -e
# Cron tab'ı görüntüle
crontab -l
# Cron tab'ı temizle
crontab -r
# Sistem cron'ları
/etc/crontab
/etc/cron.d/
/etc/cron.hourly/
/etc/cron.daily/
/etc/cron.weekly/
/etc/cron.monthly/
Cron Sözdizimi
text* * * * * komut
│ │ │ │ │
│ │ │ │ └─── Haftanın günü (0-7, 0=Pazar)
│ │ │ └───── Ay (1-12)
│ │ └─────── Ayın günü (1-31)
│ └───────── Saat (0-23)
└─────────── Dakika (0-59)
Cron Örnekleri
bash# Her saat başı
0 * * * * /script.sh
# Her gece 02:00'de
0 2 * * * /backup.sh
# Her Pazartesi 05:00'de
0 5 * * 1 /weekly_report.sh
# Her 5 dakikada bir
*/5 * * * * /monitor.sh
# Her ayın ilk günü 00:00'de
0 0 1 * * /monthly_cleanup.sh
# Çalışma zamanını logla
0 2 * * * /backup.sh >> /var/log/backup.log 2>&1
Pratik Kullanım Senaryoları
1. Recon Otomasyonu
bash# Her gün 03:00'de recon çalıştır
0 3 * * * /home/user/recon/recon.sh hedef.com >> /home/user/recon/recon.log 2>&1
2. Log Temizleme
bash# Her gün 00:00'de 30 günden eski logları sil
0 0 * * * find /var/log/ -name "*.log" -mtime +30 -delete
3. Backup
bash# Her gece 01:00'de backup al
0 1 * * * tar -czf /backup/daily_$(date +\%Y\%m\%d).tar.gz /var/www/html/
4. Monitoring
bash# Her 5 dakikada bir uptime kontrolü
*/5 * * * * curl -s https://hedef.com || echo "DOWN" | mail -s "Site Down" [email protected]
Cron Güvenlik İpuçları
bash# Sadece belirli kullanıcılar cron kullanabilir
/etc/cron.allow
/etc/cron.deny
# Cron logları
/var/log/syslog | grep CRON
# Hatalı cron'ları bul
grep -i "failed" /var/log/syslog | grep CRON
Cron vs Systemd Timer
bash# Systemd Timer (modern alternatif)
systemctl list-timers
# Timer oluştur
# /etc/systemd/system/myjob.service
[Service]
ExecStart=/script.sh
# /etc/systemd/system/myjob.timer
[Timer]
OnCalendar=daily
Persistent=true
[Install]
WantedBy=timers.target
systemctl enable myjob.timer
systemctl start myjob.timer
🔒 Bu içeriği görmek için giriş yapın