Cron Hakkında Temel Bilgiler ve Birkaç Örnek
Warning: mysqli_query(): (HY000/3): Error writing file '/tmp/MY22Il5T' (Errcode: 28 - No space left on device) in /usr/share/nginx/html/syslogs/wp-includes/class-wpdb.php on line 2349
linux/unix sistemlerde zamanlanmış görevler oluşturmak üzere kullanılan cron, bir komutun, scriptin ya da uygulamanın belirli bir zamanda ya da zaman periyodunda çalıştırılmasını sağlamaktadır.
Cron girdileri /etc/crontab isimli dosyada crontab isimli araç ile düzenlenmektedir. Bu aracın temel kullanım şekilleri aşağıdaki gibidir. |
Crontab'ın Editlenmesi
Crontab'ı vi editorü ile editmeke üzere -e parametresi kullanılır.
# crontab -e
Cron Girdilerinin Listelenmesi
Tüm cron girdilerini listelemek için ise -l paramteresi kullanılır.
# crontab -l
Cron Girdilerinin Kaldırılması
Tüm cron girdilerini silmek için ise -r paramteresi kullanılır.
# crontab -r
Cron Girdileri
Bir cron girdisi oluşturmak, crontab dosyasını editlemek ve girdi satırını düzgün dosyaya yazmaktan ibarettir. Temel bir cron girdisi aşağıdaki gibidir:
* * * * * /calistirilacak/komut/yada/script
Yukarıdaki cron girdisindeki (*) işaretleri zaman ve tarih değerlerinin tanımlanmasında kullanılır. Yukarıda görüldüğü şekilde bir cron girdisi tanımlarsanız çalıştırılmasını istediğiniz komut ya da script dosyası dakikada bir çalıştırılacaktır. Ancak belirli bir zaman set etmek isterseniz ilgili * işaretlerinin yerine doğru değerleri girmeniz gerekecektir.
* işaretlerinin sıralaması ve manaları ise aşağıdaki gibidir
.---------------- dakika (0 - 59) | .------------- saat (0 - 23) | | .---------- Ayın Günleri (1 - 31) | | | .------- Ay (1 - 12) | | | | .---- Haftanın Günleri (0 - 6) (Pazar=0 ya da 7) | | | | | * * * * * Çalıştırılacak komut
Görüldüğü gibi ilk sıradaki yıldız 0 ile 59 arasında bir değer olabilen dakikayı ifade eder, sonraki 0 ile 23 arasında bir değer verebileceğiniz saat ifadesidir. Üçüncü yıldız da 31 gün üzerinden belirlenen ayın günlerini belirler, dördüncü alan ay ve sonunucu alan da haftanın günlerini ifade eder.
Konuyu daha iyi kavramak için aşağıdaki örneklerden yararlanabilirsiniz.
Örnekler
10 Dakikada Bir Çalışacak Cron Girdisi
*/10 * * * * /komut/yada/script
- */10 – Her On Dakika
- * – Her Saat
- * – Her Gün
- * – Her Ay
- * – Haftanın Her Günü
Hergün öğlen 12 ve akşam 18'de Çalışacak Cron Girdisi
00 12,18 * * * /komut/yada/script
- 00 – Her Saat (00 Saat başlangıcı)
- 12,18 – Öğlen 12'de ve Akşam 18'de
- * – Her Gün
- * – Her Ay
- * – Haftanın Her Günü
Sabah 9 Akşam 18 Arasında Her Saat Çalışacak Cron Girdisi
00 09-18 * * * /komut/yada/script
- 00 – Her Saat (00 Saat başlangıcı)
- 09-18 – Sabah 09'dan Akşam 18'e (09, 10, 11, 12, 13, 14, 15, 16, 17, 18)
- * – Her Gün
- * – Her Ay
- * – Haftanın Her Günü
Hafta İçi Günler Sabah 9 Akşam 18 Arasında Her Saat Çalışacak Cron Girdisi
00 09-18 * * 1-5 /komut/yada/script
- 00 – Her Saat (00 Saat başlangıcı)
- 09-18 – Sabah 09'dan Akşam 18'e her saat. (09, 10, 11, 12, 13, 14, 15, 16, 17, 18)
- * – Her Gün
- * – Her Ay
- 1-5 – Pazartesi (1), Salı(2), Çarşamba(3), Perşembe(4), Cuma(5)
Örnekleri çoğaltmak mümkün ancak yazım şekli genel olarak böyledir ve kendi cron girdilerinizi kendi ihtiyaçlarınıza göre aynı mantıkla düzenleyebilirsiniz.
Detaylı bilgi için bkz:
http://en.wikipedia.org/wiki/Cron
Bu yazılar da ilginizi çekebilir:
- Daily Security Cron Job ve Disk I/O Yoğunluğu.
- MySQL Replication durumunu bir script ile check etmek
- SUID ve SGID Bit’ler ve Bu Bitlere Sahip Dosyaların Bulunması
- diff ile Dizin Karşılaştırma ve Fark Tespiti
- CPU Limit ile Süreçlerin İşlemci Kullanımını Sınırlamak
Merhaba benim sorum cronu 1 dakikadan daha az sürede çalıştırmak örnek 30 sn. bunu nasıl yapabilirim
[Cevapla]
Malesef cron’da en dusuk zaman dilimi 1 dakikadir…
[Cevapla]
Örnek verecek olursak;
*/1 * * * * command
*/1 * * * * sleep 30 && command
[Cevapla]
çok teşekkürler sık kulanılanlara ekledim
[Cevapla]
merhaba.benim istedğim bir bilgisayarda oluşturulan klasörün içeriğinin her 10 dk da bir silinmesi..bunun için ne yapmalıyım.yardımcı olursanız sevinirim.
[Cevapla]
etc nin içinde crontab -l yaptigim zaman
crontab -l
crontab: no crontab for root
diye bir uyari aliyorum sanirim crontab calismiyor sebebi nedir veya nasıl çözebilirim bu problemi?
[Cevapla]
Selamlar,
Uyari, root kullancisi icin herhangi bir cron girdisi olmadigini soyluyor. Bir tane cron girdisi eklerseniz crontab -l ciktisinda goruntuleyebilirsiniz.
[Cevapla]