{"id":31298,"date":"2025-10-08T10:41:05","date_gmt":"2025-10-08T07:41:05","guid":{"rendered":"https:\/\/fatihsoysal.com\/blog\/?p=31298"},"modified":"2025-10-08T10:41:05","modified_gmt":"2025-10-08T07:41:05","slug":"ubuntu-18-04te-gorevleri-otomatiklestirmek-icin-cron-nasil-kullanilir","status":"publish","type":"post","link":"https:\/\/fatihsoysal.com\/blog\/ubuntu-18-04te-gorevleri-otomatiklestirmek-icin-cron-nasil-kullanilir\/","title":{"rendered":"Ubuntu 18.04&#8217;te G\u00f6revleri Otomatikle\u015ftirmek \u0130\u00e7in Cron Nas\u0131l Kullan\u0131l\u0131r?"},"content":{"rendered":"<p><body><\/p>\n<h2>Ubuntu 18.04&#8217;te G\u00f6revleri Otomatikle\u015ftirmek \u0130\u00e7in Cron Nas\u0131l Kullan\u0131l\u0131r?<\/h2>\n<p>Otomasyon, modern bilgi i\u015flem sistemlerinin ve sunucu y\u00f6netiminin temel ta\u015flar\u0131ndan biridir. Tekrarlayan g\u00f6revleri manuel olarak y\u00fcr\u00fctmek zaman al\u0131c\u0131, hataya a\u00e7\u0131k ve verimsizdir. Bu nedenle, i\u015fletim sistemleri belirli g\u00f6revleri \u00f6nceden tan\u0131mlanm\u0131\u015f zamanlarda veya olaylara g\u00f6re otomatik olarak \u00e7al\u0131\u015ft\u0131rmak i\u00e7in \u00e7e\u015fitli ara\u00e7lar sunar. Linux tabanl\u0131 sistemlerde, bu t\u00fcr otomasyonun en g\u00fc\u00e7l\u00fc ve yayg\u0131n kullan\u0131lan ara\u00e7lar\u0131ndan biri Cron&#8217;dur. Bu makalede, \u00f6zellikle Ubuntu 18.04 ortam\u0131nda Cron&#8217;un nas\u0131l kullan\u0131laca\u011f\u0131n\u0131, temel kavramlar\u0131n\u0131, s\u00f6zdizimini, en iyi uygulamalar\u0131n\u0131 ve sorun giderme y\u00f6ntemlerini ayr\u0131nt\u0131l\u0131 olarak inceleyece\u011fiz.<\/p>\n<h3>Giri\u015f: Otomasyon ve Cron&#8217;un \u00d6nemi<\/h3>\n<p>Sunucu y\u00f6neticileri, geli\u015ftiriciler ve hatta g\u00fcnl\u00fck kullan\u0131c\u0131lar bile belirli g\u00f6revleri d\u00fczenli aral\u0131klarla \u00e7al\u0131\u015ft\u0131rma ihtiyac\u0131 duyarlar. Veritaban\u0131 yedeklemeleri, log dosyas\u0131 temizli\u011fi, sistem g\u00fcncellemeleri, \u00f6zel betiklerin y\u00fcr\u00fct\u00fclmesi veya belirli bir servis durumunun kontrol edilmesi gibi i\u015flemler, manuel olarak yap\u0131ld\u0131\u011f\u0131nda \u00f6nemli bir i\u015f y\u00fck\u00fc olu\u015fturabilir. \u0130\u015fte bu noktada otomasyon devreye girer. Otomasyon, bu tekrarlayan g\u00f6revleri otomatikle\u015ftirerek insan m\u00fcdahalesini en aza indirir, hatalar\u0131 azalt\u0131r ve operasyonel verimlili\u011fi art\u0131r\u0131r.<\/p>\n<p>Cron, Unix benzeri i\u015fletim sistemlerinde zamanlanm\u0131\u015f g\u00f6revleri (cron i\u015fleri veya cronjob&#8217;lar olarak da bilinir) y\u00fcr\u00fctmek i\u00e7in kullan\u0131lan bir yard\u0131mc\u0131 programd\u0131r. Ad\u0131, Yunanca &#8220;zaman&#8221; anlam\u0131na gelen &#8220;chronos&#8221; kelimesinden t\u00fcremi\u015ftir. Cron, sistemin arka plan\u0131nda s\u00fcrekli \u00e7al\u0131\u015fan bir &#8220;daemon&#8221; (cron daemon&#8217;u veya <code>crond<\/code>) olarak g\u00f6rev yapar ve belirli aral\u0131klarla <code>crontab<\/code> (cron table) dosyalar\u0131n\u0131 kontrol ederek zamanlanm\u0131\u015f g\u00f6revleri y\u00fcr\u00fct\u00fcr. Ubuntu 18.04, Cron&#8217;u varsay\u0131lan olarak i\u00e7erir ve onu g\u00f6rev otomasyonu i\u00e7in g\u00fcvenilir bir ara\u00e7 haline getirir. Cron&#8217;un sa\u011flad\u0131\u011f\u0131 esneklik sayesinde, dakikal\u0131k, saatlik, g\u00fcnl\u00fck, haftal\u0131k, ayl\u0131k veya hatta sistem ba\u015flang\u0131c\u0131nda \u00e7al\u0131\u015facak g\u00f6revler tan\u0131mlayabilirsiniz.<\/p>\n<h3>Cron Temelleri: Nas\u0131l \u00c7al\u0131\u015f\u0131r?<\/h3>\n<p>Cron&#8217;un \u00e7al\u0131\u015fma prensibi olduk\u00e7a basittir ancak g\u00fc\u00e7l\u00fcd\u00fcr. Sistemde <code>cron<\/code> ad\u0131nda bir servis (daemon) \u00e7al\u0131\u015f\u0131r. Bu servis, belirli dizinlerde ve kullan\u0131c\u0131lara ait \u00f6zel dosyalarda tan\u0131mlanm\u0131\u015f zamanlanm\u0131\u015f g\u00f6revleri (crontab giri\u015fleri) s\u00fcrekli olarak denetler. Zaman\u0131 gelen bir g\u00f6rev oldu\u011funda, <code>cron<\/code> daemon&#8217;u bu g\u00f6revi y\u00fcr\u00fct\u00fcr.<\/p>\n<h4>Crontab Dosyalar\u0131<\/h4>\n<p>Cron i\u015fleri, <code>crontab<\/code> ad\u0131 verilen dosyalarda saklan\u0131r. \u0130ki ana t\u00fcr crontab dosyas\u0131 vard\u0131r:<\/p>\n<p>1.  <strong>Kullan\u0131c\u0131ya \u00d6zel Crontab&#8217;lar:<\/strong> Her sistem kullan\u0131c\u0131s\u0131n\u0131n kendi <code>crontab<\/code> dosyas\u0131 olabilir. Bu dosyalar genellikle <code>\/var\/spool\/cron\/crontabs\/<\/code> dizini alt\u0131nda kullan\u0131c\u0131n\u0131n ad\u0131yla saklan\u0131r (\u00f6rne\u011fin, <code>\/var\/spool\/cron\/crontabs\/kullaniciadi<\/code>). Bu dosyalar\u0131 do\u011frudan d\u00fczenlemek yerine, <code>crontab<\/code> komutu arac\u0131l\u0131\u011f\u0131yla d\u00fczenlemek en iyi uygulamad\u0131r.<br \/>\n2.  <strong>Sistem \u00c7ap\u0131nda Crontab&#8217;lar:<\/strong> Bu dosyalar, t\u00fcm sistem i\u00e7in ge\u00e7erli olan g\u00f6revleri tan\u0131mlar ve genellikle root kullan\u0131c\u0131s\u0131 taraf\u0131ndan y\u00f6netilir.<br \/>\n    *   <code>\/etc\/crontab<\/code>: Ana sistem crontab dosyas\u0131d\u0131r. Di\u011fer crontab dosyalar\u0131ndan farkl\u0131 olarak, bu dosyada \u00e7al\u0131\u015ft\u0131r\u0131lacak komutun hangi kullan\u0131c\u0131 taraf\u0131ndan \u00e7al\u0131\u015ft\u0131r\u0131laca\u011f\u0131n\u0131 belirten ek bir alan bulunur.<br \/>\n    *   <code>\/etc\/cron.d\/<\/code>: Bu dizin, paketler veya sistem y\u00f6neticileri taraf\u0131ndan eklenen \u00f6zel cron i\u015flerini bar\u0131nd\u0131r\u0131r. Buradaki her dosya, <code>\/etc\/crontab<\/code> ile ayn\u0131 s\u00f6zdizimini kullan\u0131r (yani kullan\u0131c\u0131 alan\u0131 i\u00e7erir).<br \/>\n    *   <code>\/etc\/cron.hourly\/<\/code>, <code>\/etc\/cron.daily\/<\/code>, <code>\/etc\/cron.weekly\/<\/code>, <code>\/etc\/cron.monthly\/<\/code>: Bu dizinler, s\u0131ras\u0131yla saatlik, g\u00fcnl\u00fck, haftal\u0131k ve ayl\u0131k olarak \u00e7al\u0131\u015ft\u0131r\u0131lacak betikleri i\u00e7erir. Bu dizinlerdeki betikler do\u011frudan cron taraf\u0131ndan de\u011fil, genellikle <code>\/etc\/crontab<\/code> veya <code>\/etc\/cron.d\/anacron<\/code> taraf\u0131ndan \u00e7a\u011fr\u0131lan bir betik (\u00f6rne\u011fin <code>run-parts<\/code>) arac\u0131l\u0131\u011f\u0131yla \u00e7al\u0131\u015ft\u0131r\u0131l\u0131r. Bu yap\u0131, \u00f6zellikle sunucu kapal\u0131yken ka\u00e7\u0131r\u0131lan g\u00f6revlerin daha sonra \u00e7al\u0131\u015ft\u0131r\u0131lmas\u0131n\u0131 sa\u011flayan <code>anacron<\/code> servisi i\u00e7in kullan\u0131\u015fl\u0131d\u0131r.<\/p>\n<h4>Crontab Komutu<\/h4>\n<p>Kullan\u0131c\u0131ya \u00f6zel crontab dosyalar\u0131n\u0131 y\u00f6netmek i\u00e7in <code>crontab<\/code> komutu kullan\u0131l\u0131r:<\/p>\n<p>*   <code>crontab -e<\/code>: Mevcut kullan\u0131c\u0131n\u0131n crontab dosyas\u0131n\u0131 d\u00fczenler veya yoksa yeni bir tane olu\u015fturur. Bu komut, varsay\u0131lan metin d\u00fczenleyicinizi (genellikle <code>vi<\/code> veya <code>nano<\/code>) a\u00e7ar.<br \/>\n*   <code>crontab -l<\/code>: Mevcut kullan\u0131c\u0131n\u0131n crontab dosyas\u0131ndaki t\u00fcm zamanlanm\u0131\u015f g\u00f6revleri listeler.<br \/>\n*   <code>crontab -r<\/code>: Mevcut kullan\u0131c\u0131n\u0131n crontab dosyas\u0131n\u0131 tamamen siler. Bu i\u015flem geri al\u0131namaz, bu y\u00fczden dikkatli kullan\u0131lmal\u0131d\u0131r.<br \/>\n*   <code>crontab -i<\/code>: <code>crontab -r<\/code> komutuyla ayn\u0131d\u0131r, ancak silmeden \u00f6nce onay ister.<br \/>\n*   <code>crontab -u [kullan\u0131c\u0131_ad\u0131] -e<\/code>: Belirli bir kullan\u0131c\u0131n\u0131n crontab dosyas\u0131n\u0131 d\u00fczenlemek i\u00e7in kullan\u0131l\u0131r (sadece root veya sudo yetkisine sahip kullan\u0131c\u0131lar i\u00e7in).<\/p>\n<p>\u00d6rne\u011fin, kendi crontab dosyan\u0131z\u0131 d\u00fczenlemek i\u00e7in terminalde <code>crontab -e<\/code> yaz\u0131n. A\u00e7\u0131lan dosyaya g\u00f6revlerinizi ekleyebilir, de\u011fi\u015ftirebilir veya silebilirsiniz.<\/p>\n<h3>Crontab S\u00f6zdizimi: G\u00f6revleri Zamanlama<\/h3>\n<p>Bir cron i\u015finin ana yap\u0131s\u0131, be\u015f zaman alan\u0131 ve ard\u0131ndan \u00e7al\u0131\u015ft\u0131r\u0131lacak komuttan olu\u015fur. Kullan\u0131c\u0131 crontab&#8217;lar\u0131 i\u00e7in s\u00f6zdizimi \u015f\u00f6yledir:<\/p>\n<pre><code class=\"language-\">dakika saat ay\u0131n_g\u00fcn\u00fc ay haftan\u0131n_g\u00fcn\u00fc komut<\/code><\/pre>\n<p>Sistem \u00e7ap\u0131ndaki crontab dosyalar\u0131 (<code>\/etc\/crontab<\/code> ve <code>\/etc\/cron.d\/<\/code> alt\u0131ndaki dosyalar) i\u00e7in ek bir kullan\u0131c\u0131 alan\u0131 bulunur:<\/p>\n<pre><code class=\"language-\">dakika saat ay\u0131n_g\u00fcn\u00fc ay haftan\u0131n_g\u00fcn\u00fc kullan\u0131c\u0131 komut<\/code><\/pre>\n<p>\u015eimdi bu alanlar\u0131 ve kullan\u0131labilecek \u00f6zel karakterleri inceleyelim:<\/p>\n<p>1.  <strong>Dakika (Minute):<\/strong> (0-59) Bir saatin hangi dakikas\u0131nda \u00e7al\u0131\u015faca\u011f\u0131n\u0131 belirtir.<br \/>\n2.  <strong>Saat (Hour):<\/strong> (0-23) Bir g\u00fcn\u00fcn hangi saatinde \u00e7al\u0131\u015faca\u011f\u0131n\u0131 belirtir (24 saatlik format).<br \/>\n3.  <strong>Ay\u0131n G\u00fcn\u00fc (Day of Month):<\/strong> (1-31) Ay\u0131n hangi g\u00fcn\u00fcnde \u00e7al\u0131\u015faca\u011f\u0131n\u0131 belirtir.<br \/>\n4.  <strong>Ay (Month):<\/strong> (1-12 veya JAN-DEC) Y\u0131l\u0131n hangi ay\u0131nda \u00e7al\u0131\u015faca\u011f\u0131n\u0131 belirtir.<br \/>\n5.  <strong>Haftan\u0131n G\u00fcn\u00fc (Day of Week):<\/strong> (0-7 veya SUN-SAT) Haftan\u0131n hangi g\u00fcn\u00fcnde \u00e7al\u0131\u015faca\u011f\u0131n\u0131 belirtir. Hem 0 hem de 7 Pazar&#8217;\u0131 temsil eder.<\/p>\n<p>Bu alanlarda kullan\u0131labilecek \u00f6zel karakterler:<\/p>\n<p><em>   <code><\/em><\/code> (Y\u0131ld\u0131z): T\u00fcm olas\u0131 de\u011ferleri temsil eder. \u00d6rne\u011fin, dakika alan\u0131nda <code>*<\/code> her dakika anlam\u0131na gelir.<br \/>\n*   <code>,<\/code> (Virg\u00fcl): Birden fazla de\u011feri listelemek i\u00e7in kullan\u0131l\u0131r. \u00d6rne\u011fin, <code>1,15,30<\/code> dakika alan\u0131nda 1, 15 ve 30. dakikalarda \u00e7al\u0131\u015ft\u0131r anlam\u0131na gelir.<br \/>\n*   <code>-<\/code> (Tire): Bir aral\u0131\u011f\u0131 belirtir. \u00d6rne\u011fin, <code>9-17<\/code> saat alan\u0131nda sabah 9&#8217;dan ak\u015fam 5&#8217;e kadar her saat anlam\u0131na gelir.<br \/>\n<em>   <code>\/<\/code> (B\u00f6l\u00fc): Bir ad\u0131m de\u011ferini belirtir. \u00d6rne\u011fin, <code><\/em>\/5<\/code> dakika alan\u0131nda her 5 dakikada bir anlam\u0131na gelir. <code>0-23\/2<\/code> saat alan\u0131nda her iki saatte bir anlam\u0131na gelir (0, 2, 4, &#8230; 22).<\/p>\n<p><strong>\u00d6rnekler:<\/strong><\/p>\n<p><em>   <code><\/em> <em> <\/em> <em> <\/em> komut<\/code>: Her dakika \u00e7al\u0131\u015ft\u0131r.<br \/>\n<em>   <code>0 3 <\/em> <em> <\/em> komut<\/code>: Her g\u00fcn sabah 3:00&#8217;te \u00e7al\u0131\u015ft\u0131r.<br \/>\n<em>   <code>0 0 1 <\/em> * komut<\/code>: Her ay\u0131n ilk g\u00fcn\u00fc gece yar\u0131s\u0131 \u00e7al\u0131\u015ft\u0131r.<br \/>\n<em>   <code>0 0 <\/em> <em> 0 komut<\/code>: Her Pazar gece yar\u0131s\u0131 \u00e7al\u0131\u015ft\u0131r (veya <code>0 0 <\/em> * 7 komut<\/code>).<br \/>\n<em>   <code><\/em>\/15 <em> <\/em> <em> <\/em> komut<\/code>: Her 15 dakikada bir \u00e7al\u0131\u015ft\u0131r (0, 15, 30, 45. dakikalarda).<br \/>\n<em>   <code>30 9-17 <\/em> <em> <\/em> komut<\/code>: Hafta i\u00e7i (Pazartesi-Cuma) sabah 9:30&#8217;dan ak\u015fam 5:30&#8217;a kadar her yar\u0131m saatte bir \u00e7al\u0131\u015ft\u0131r. (Yanl\u0131\u015f \u00f6rnek, 9-17 aras\u0131 her saatin 30. dakikas\u0131nda. Do\u011frusu: 9:30, 10:30, &#8230;, 17:30)<br \/>\n<em>   <code>30 9-17 <\/em> * 1-5 komut<\/code>: Pazartesiden Cumaya, sabah 9:30&#8217;dan ak\u015fam 5:30&#8217;a kadar her saatin 30. dakikas\u0131nda \u00e7al\u0131\u015ft\u0131r.<\/p>\n<h3>Ortam De\u011fi\u015fkenleri ve Cron<\/h3>\n<p>Cron ortam\u0131, tipik bir kullan\u0131c\u0131 kabuk ortam\u0131ndan farkl\u0131d\u0131r. Bir terminalde bir komut \u00e7al\u0131\u015ft\u0131rd\u0131\u011f\u0131n\u0131zda, kabu\u011funuzun (\u00f6rne\u011fin Bash) tan\u0131mlad\u0131\u011f\u0131 bir\u00e7ok ortam de\u011fi\u015fkeni bulunur (PATH, HOME, SHELL vb.). Ancak Cron, bu de\u011fi\u015fkenlerin \u00e7o\u011funa varsay\u0131lan olarak sahip de\u011fildir. Bu durum, Cron i\u015flerinin beklendi\u011fi gibi \u00e7al\u0131\u015fmamas\u0131na neden olan yayg\u0131n bir sorundur.<\/p>\n<p>\u00d6zellikle <code>PATH<\/code> de\u011fi\u015fkeni \u00f6nemlidir. Cron i\u015fleri \u00e7al\u0131\u015ft\u0131r\u0131ld\u0131\u011f\u0131nda, <code>PATH<\/code> genellikle \u00e7ok k\u0131s\u0131tl\u0131d\u0131r (\u00f6rne\u011fin, <code>\/usr\/bin:\/bin<\/code>). Bu, betiklerinizde veya komutlar\u0131n\u0131zda tam yolu belirtmedi\u011finizde (\u00f6rne\u011fin, <code>python<\/code> yerine <code>\/usr\/bin\/python<\/code>) komutun bulunamamas\u0131na neden olabilir.<\/p>\n<p>Bu sorunu \u00e7\u00f6zmek i\u00e7in:<\/p>\n<p>1.  <strong>Mutlak Yollar Kullan\u0131n:<\/strong> Her zaman komutlar\u0131n ve betiklerin tam yolunu belirtin. \u00d6rne\u011fin, <code>myscript.sh<\/code> yerine <code>\/home\/kullanici\/scripts\/myscript.sh<\/code> ve <code>python<\/code> yerine <code>\/usr\/bin\/python<\/code>.<br \/>\n2.  <strong>Crontab Dosyas\u0131na Ortam De\u011fi\u015fkenleri Ekleyin:<\/strong> Crontab dosyan\u0131z\u0131n ba\u015f\u0131na ortam de\u011fi\u015fkenlerini tan\u0131mlayabilirsiniz.<\/p>\n<pre><code class=\"language-crontab\">SHELL=\/bin\/bash\n    PATH=\/usr\/local\/sbin:\/usr\/local\/bin:\/usr\/sbin:\/usr\/bin:\/sbin:\/bin:\/usr\/games:\/usr\/local\/games:\/snap\/bin\n    MAILTO=\"kullanici@example.com\" # \u0130\u015f \u00e7\u0131kt\u0131s\u0131n\u0131 bu adrese g\u00f6nderir\n    HOME=\/home\/kullanici\n\n    <em> <\/em> <em> <\/em> * \/usr\/bin\/python3 \/home\/kullanici\/scripts\/my_script.py<\/code><\/pre>\n<p>    <code>MAILTO<\/code> de\u011fi\u015fkeni, bir cron i\u015finin \u00e7\u0131kt\u0131s\u0131n\u0131 veya hatalar\u0131n\u0131 belirli bir e-posta adresine y\u00f6nlendirmek i\u00e7in \u00e7ok kullan\u0131\u015fl\u0131d\u0131r. E\u011fer <code>MAILTO<\/code> tan\u0131mlanmam\u0131\u015fsa veya bo\u015fsa, \u00e7\u0131kt\u0131 varsay\u0131lan olarak yerel sistem kullan\u0131c\u0131s\u0131na e-posta olarak g\u00f6nderilir.<\/p>\n<h3>\u00d6zel Cron Dizeleri (Special Cron Strings)<\/h3>\n<p>Cron, s\u0131k kullan\u0131lan zamanlama \u015fablonlar\u0131 i\u00e7in baz\u0131 \u00f6zel dizeler sunar. Bu dizeler, yukar\u0131da belirtilen be\u015f zaman alan\u0131n\u0131n yerine kullan\u0131labilir ve okunabilirli\u011fi art\u0131r\u0131r:<\/p>\n<p>*   <code>@reboot<\/code>: Sunucu her yeniden ba\u015flat\u0131ld\u0131\u011f\u0131nda \u00e7al\u0131\u015ft\u0131r.<br \/>\n<em>   <code>@yearly<\/code> veya <code>@annually<\/code>: Y\u0131lda bir kez \u00e7al\u0131\u015ft\u0131r (0 0 1 1 <\/em>).<br \/>\n<em>   <code>@monthly<\/code>: Ayda bir kez \u00e7al\u0131\u015ft\u0131r (0 0 1 <\/em> *).<br \/>\n<em>   <code>@weekly<\/code>: Haftada bir kez \u00e7al\u0131\u015ft\u0131r (0 0 <\/em> * 0).<br \/>\n<em>   <code>@daily<\/code> veya <code>@midnight<\/code>: G\u00fcnde bir kez \u00e7al\u0131\u015ft\u0131r (0 0 <\/em> <em> <\/em>).<br \/>\n<em>   <code>@hourly<\/code>: Saatte bir kez \u00e7al\u0131\u015ft\u0131r (0 <\/em> <em> <\/em> *).<\/p>\n<p><strong>\u00d6rnekler:<\/strong><\/p>\n<pre><code class=\"language-crontab\">@reboot \/home\/kullanici\/scripts\/startup_script.sh\n@daily \/usr\/bin\/apt update && \/usr\/bin\/apt upgrade -y\n@hourly \/usr\/bin\/php \/var\/www\/html\/artisan schedule:run<\/code><\/pre>\n<h3>Cron \u0130\u015flerini Y\u00f6netme<\/h3>\n<p>Cron i\u015flerini y\u00f6netmek, <code>crontab -e<\/code> ile d\u00fczenlemekten daha fazlas\u0131n\u0131 i\u00e7erir. \u0130zinler, kullan\u0131c\u0131 y\u00f6netimi ve genel sistem sa\u011fl\u0131\u011f\u0131 gibi konular da \u00f6nemlidir.<\/p>\n<h4>Kullan\u0131c\u0131 \u0130zinleri<\/h4>\n<p>Sistemin hangi kullan\u0131c\u0131lar\u0131n <code>crontab<\/code> komutunu kullanabilece\u011fini kontrol etmek i\u00e7in iki dosya kullan\u0131l\u0131r:<\/p>\n<p>*   <code>\/etc\/cron.allow<\/code>: E\u011fer bu dosya varsa, sadece burada listelenen kullan\u0131c\u0131lar <code>crontab<\/code> komutunu kullanabilir. Di\u011fer t\u00fcm kullan\u0131c\u0131lar engellenir.<br \/>\n*   <code>\/etc\/cron.deny<\/code>: E\u011fer <code>\/etc\/cron.allow<\/code> yoksa, bu dosya kullan\u0131l\u0131r. Burada listelenen kullan\u0131c\u0131lar <code>crontab<\/code> komutunu kullanamaz. Di\u011fer t\u00fcm kullan\u0131c\u0131lar kullanabilir.<\/p>\n<p>Her iki dosya da yoksa, \u00e7o\u011fu sistemde t\u00fcm kullan\u0131c\u0131lar\u0131n <code>crontab<\/code> kullanmas\u0131na izin verilir. Genellikle, <code>\/etc\/cron.deny<\/code> dosyas\u0131 bulunur ve root ile baz\u0131 sistem kullan\u0131c\u0131lar\u0131 (daemon, bin vb.) varsay\u0131lan olarak engellenir.<\/p>\n<h4>Cron Servisinin Durumu<\/h4>\n<p>Cron daemon&#8217;unun \u00e7al\u0131\u015f\u0131p \u00e7al\u0131\u015fmad\u0131\u011f\u0131n\u0131 kontrol etmek i\u00e7in <code>systemctl<\/code> komutunu kullanabilirsiniz:<\/p>\n<pre><code class=\"language-bash\">sudo systemctl status cron<\/code><\/pre>\n<p>E\u011fer servis \u00e7al\u0131\u015fm\u0131yorsa, ba\u015flatmak i\u00e7in:<\/p>\n<pre><code class=\"language-bash\">sudo systemctl start cron<\/code><\/pre>\n<p>Yeniden ba\u015flatmak i\u00e7in:<\/p>\n<pre><code class=\"language-bash\">sudo systemctl restart cron<\/code><\/pre>\n<h3>Sistem \u00c7ap\u0131nda Cron \u0130\u015fleri<\/h3>\n<p>Kullan\u0131c\u0131 crontab&#8217;lar\u0131n\u0131n yan\u0131 s\u0131ra, sistem y\u00f6neticilerinin veya paketlerin tan\u0131mlad\u0131\u011f\u0131 sistem \u00e7ap\u0131nda cron i\u015fleri de bulunur.<\/p>\n<h4><code>\/etc\/crontab<\/code><\/h4>\n<p>Bu dosya, sistemin ana crontab dosyas\u0131d\u0131r. Di\u011fer crontab&#8217;lardan fark\u0131, her zamanlanm\u0131\u015f g\u00f6rev i\u00e7in \u00e7al\u0131\u015ft\u0131r\u0131lacak kullan\u0131c\u0131y\u0131 belirten ek bir alana sahip olmas\u0131d\u0131r.<\/p>\n<pre><code class=\"language-crontab\">SHELL=\/bin\/sh\nPATH=\/usr\/local\/sbin:\/usr\/local\/bin:\/sbin:\/bin:\/usr\/sbin:\/usr\/bin\nMAILTO=root\n<h2>Example of job definition:<\/h2>\n<h2>.---------------- minute (0 - 59)<\/h2>\n<h2>|  .------------- hour (0 - 23)<\/h2>\n<h2>|  |  .---------- day of month (1 - 31)<\/h2>\n<h2>|  |  |  .------- month (1 - 12) OR jan,feb,mar,apr ...<\/h2>\n<h2>|  |  |  |  .---- day of week (0 - 6) OR sun,mon,tue ...<\/h2>\n<h2>|  |  |  |  |<\/h2>\n<h2><em>  <\/em>  <em>  <\/em>  * user-name command to be executed<\/h2>\n17 <em>    <\/em> <em> <\/em>   root    cd \/ && run-parts --report \/etc\/cron.hourly\n25 6    <em> <\/em> *   root    test -x \/usr\/sbin\/anacron || ( cd \/ && run-parts --report \/etc\/cron.daily )\n47 6    <em> <\/em> 7   root    test -x \/usr\/sbin\/anacron || ( cd \/ && run-parts --report \/etc\/cron.weekly )\n52 6    1 <em> <\/em>   root    test -x \/usr\/sbin\/anacron || ( cd \/ && run-parts --report \/etc\/cron.monthly )<\/code><\/pre>\n<p>Bu \u00f6rnekte, <code>\/etc\/cron.hourly<\/code>, <code>\/etc\/cron.daily<\/code> vb. dizinlerdeki betiklerin nas\u0131l <code>root<\/code> kullan\u0131c\u0131s\u0131 taraf\u0131ndan <code>run-parts<\/code> komutuyla \u00e7al\u0131\u015ft\u0131r\u0131ld\u0131\u011f\u0131 g\u00f6r\u00fclmektedir.<\/p>\n<h4><code>\/etc\/cron.d\/<\/code> Dizini<\/h4>\n<p>Bu dizin, genellikle yaz\u0131l\u0131m paketleri taraf\u0131ndan y\u00fcklenen veya sistem y\u00f6neticileri taraf\u0131ndan \u00f6zel sistem g\u00f6revleri i\u00e7in kullan\u0131lan crontab dosyalar\u0131n\u0131 i\u00e7erir. Bu dizindeki her dosya, <code>\/etc\/crontab<\/code> ile ayn\u0131 s\u00f6zdizimini (yani <code>kullan\u0131c\u0131<\/code> alan\u0131 dahil) kullan\u0131r. Bu, farkl\u0131 paketlerin veya hizmetlerin kendi cron i\u015flerini ayr\u0131 dosyalarda y\u00f6netmesini sa\u011flar, bu da organizasyonu ve bak\u0131m\u0131 kolayla\u015ft\u0131r\u0131r.<\/p>\n<p>\u00d6rne\u011fin, <code>certbot<\/code> gibi bir SSL sertifikas\u0131 y\u00f6netim arac\u0131, sertifikalar\u0131 yenilemek i\u00e7in bu dizine bir dosya (<code>\/etc\/cron.d\/certbot<\/code>) yerle\u015ftirebilir.<\/p>\n<h4><code>\/etc\/cron.{hourly,daily,weekly,monthly}\/<\/code> Dizini<\/h4>\n<p>Bu dizinler, daha basit ve tekil betikler i\u00e7in tasarlanm\u0131\u015ft\u0131r. Bu dizinlere yerle\u015ftirilen herhangi bir \u00e7al\u0131\u015ft\u0131r\u0131labilir betik, ilgili zaman aral\u0131\u011f\u0131nda otomatik olarak \u00e7al\u0131\u015ft\u0131r\u0131l\u0131r. Bu dizinlerdeki betikler do\u011frudan cron taraf\u0131ndan de\u011fil, genellikle <code>\/etc\/crontab<\/code> veya <code>\/etc\/cron.d\/anacron<\/code> taraf\u0131ndan \u00e7a\u011fr\u0131lan <code>run-parts<\/code> komutu arac\u0131l\u0131\u011f\u0131yla \u00e7al\u0131\u015ft\u0131r\u0131l\u0131r.<\/p>\n<p>\u00d6rne\u011fin, her g\u00fcn \u00e7al\u0131\u015fmas\u0131n\u0131 istedi\u011finiz bir temizlik beti\u011fi varsa, bunu <code>\/etc\/cron.daily\/<\/code> dizinine yerle\u015ftirebilirsiniz. Beti\u011fin \u00e7al\u0131\u015ft\u0131r\u0131labilir izinlerine sahip oldu\u011fundan emin olun (<code>chmod +x \/etc\/cron.daily\/benim_temizlik_betigim<\/code>).<\/p>\n<h3>Cron \u0130\u015flerinde Dikkat Edilmesi Gerekenler ve En \u0130yi Uygulamalar<\/h3>\n<p>Cron i\u015flerini verimli ve g\u00fcvenli bir \u015fekilde kullanmak i\u00e7in baz\u0131 \u00f6nemli noktalar ve en iyi uygulamalar vard\u0131r.<\/p>\n<h4>G\u00fcvenlik<\/h4>\n<p>*   <strong>En Az Ayr\u0131cal\u0131k Prensibi:<\/strong> Cron i\u015flerini her zaman g\u00f6revi yerine getirmek i\u00e7in gereken en az ayr\u0131cal\u0131\u011fa sahip kullan\u0131c\u0131 alt\u0131nda \u00e7al\u0131\u015ft\u0131r\u0131n. <code>root<\/code> kullan\u0131c\u0131s\u0131 alt\u0131nda gereksiz yere g\u00f6rev \u00e7al\u0131\u015ft\u0131rmaktan ka\u00e7\u0131n\u0131n.<br \/>\n*   <strong>Betik \u0130zinleri:<\/strong> Cron taraf\u0131ndan \u00e7al\u0131\u015ft\u0131r\u0131lan betiklerin dosya izinlerini dikkatlice ayarlay\u0131n. Yaln\u0131zca ilgili kullan\u0131c\u0131 ve root taraf\u0131ndan okunabilir ve \u00e7al\u0131\u015ft\u0131r\u0131labilir olmal\u0131d\u0131r.<br \/>\n*   <strong>Hassas Bilgiler:<\/strong> Betikler i\u00e7inde hassas bilgileri (\u015fifreler, API anahtarlar\u0131) do\u011frudan bulundurmaktan ka\u00e7\u0131n\u0131n. Bunun yerine, bunlar\u0131 g\u00fcvenli bir \u015fekilde saklay\u0131n (\u00f6rne\u011fin, ortam de\u011fi\u015fkenleri veya izinleri k\u0131s\u0131tlanm\u0131\u015f yap\u0131land\u0131rma dosyalar\u0131 arac\u0131l\u0131\u011f\u0131yla) ve betik i\u00e7inde \u00e7a\u011f\u0131r\u0131n.<\/p>\n<h4>\u00c7\u0131kt\u0131 Y\u00f6netimi ve Loglama<\/h4>\n<p>*   <strong>\u00c7\u0131kt\u0131y\u0131 Y\u00f6nlendirme:<\/strong> Cron i\u015fleri \u00e7al\u0131\u015ft\u0131r\u0131ld\u0131\u011f\u0131nda, standart \u00e7\u0131kt\u0131 (stdout) ve standart hata (stderr) genellikle bir e-posta olarak g\u00f6nderilir (e\u011fer <code>MAILTO<\/code> ayarlanm\u0131\u015fsa). E\u011fer \u00e7\u0131kt\u0131ya ihtiyac\u0131n\u0131z yoksa ve e-posta almak istemiyorsan\u0131z, \u00e7\u0131kt\u0131y\u0131 <code>\/dev\/null<\/code>&#8216;a y\u00f6nlendirebilirsiniz:<\/p>\n<pre><code class=\"language-crontab\"><em> <\/em> <em> <\/em> * \/path\/to\/my_script.sh > \/dev\/null 2>&1<\/code><\/pre>\n<p>    Burada <code>> \/dev\/null<\/code> standart \u00e7\u0131kt\u0131y\u0131 \u00e7\u00f6pe atar, <code>2>&1<\/code> ise standart hatay\u0131 da standart \u00e7\u0131kt\u0131n\u0131n gitti\u011fi yere (yani <code>\/dev\/null<\/code>&#8216;a) y\u00f6nlendirir.<br \/>\n*   <strong>Loglama:<\/strong> \u00d6nemli cron i\u015fleri i\u00e7in her zaman bir loglama mekanizmas\u0131 kullan\u0131n. \u00c7\u0131kt\u0131y\u0131 bir dosyaya y\u00f6nlendirebilirsiniz:<\/p>\n<pre><code class=\"language-crontab\"><em> <\/em> <em> <\/em> * \/path\/to\/my_script.sh >> \/var\/log\/my_cron_job.log 2>&1<\/code><\/pre>\n<p>    Bu, \u00e7\u0131kt\u0131y\u0131 mevcut log dosyas\u0131n\u0131n sonuna ekler. Beti\u011finizin i\u00e7ine daha ayr\u0131nt\u0131l\u0131 loglama mant\u0131\u011f\u0131 eklemek de iyi bir uygulamad\u0131r.<br \/>\n*   <strong><code>logger<\/code> Komutu:<\/strong> Betiklerinizden sistem g\u00fcnl\u00fc\u011f\u00fcne (syslog) mesaj g\u00f6ndermek i\u00e7in <code>logger<\/code> komutunu kullanabilirsiniz. Bu, <code>journalctl<\/code> veya <code>\/var\/log\/syslog<\/code> arac\u0131l\u0131\u011f\u0131yla kolayca izlenebilir.<\/p>\n<pre><code class=\"language-bash\">#!\/bin\/bash\n    echo \"Cron i\u015fi ba\u015flad\u0131.\" | logger -t my_cron_job\n    # ... i\u015f mant\u0131\u011f\u0131 ...\n    if [ $? -ne 0 ]; then\n        echo \"Cron i\u015fi ba\u015far\u0131s\u0131z oldu!\" | logger -t my_cron_job -p user.err\n    else\n        echo \"Cron i\u015fi ba\u015far\u0131yla tamamland\u0131.\" | logger -t my_cron_job\n    fi<\/code><\/pre>\n<h4>Hata Y\u00f6netimi<\/h4>\n<p>*   <strong>Betik \u0130\u00e7inde Hata Kontrol\u00fc:<\/strong> Betiklerinizde her zaman hata kontrol\u00fc yap\u0131n. Komutlar\u0131n ba\u015far\u0131yla tamamlan\u0131p tamamlanmad\u0131\u011f\u0131n\u0131 kontrol etmek i\u00e7in <code>$?<\/code> de\u011fi\u015fkenini kullan\u0131n (0 ba\u015far\u0131, di\u011fer de\u011ferler hata).<br \/>\n*   <strong>E-posta Bildirimleri:<\/strong> <code>MAILTO<\/code> de\u011fi\u015fkenini ayarlayarak \u00f6nemli cron i\u015flerinin hatalar\u0131n\u0131 veya \u00e7\u0131kt\u0131lar\u0131n\u0131 e-posta ile bildirin. Bu, sorunlar\u0131 h\u0131zl\u0131 bir \u015fekilde tespit etmenizi sa\u011flar.<\/p>\n<h4>Yol Sorunlar\u0131<\/h4>\n<p>Daha \u00f6nce de belirtildi\u011fi gibi, cron ortam\u0131ndaki <code>PATH<\/code> de\u011fi\u015fkeni k\u0131s\u0131tl\u0131d\u0131r. Her zaman komutlar\u0131n ve betiklerin tam yolunu kullan\u0131n veya crontab dosyan\u0131z\u0131n ba\u015f\u0131nda <code>PATH<\/code> de\u011fi\u015fkenini a\u00e7\u0131k\u00e7a tan\u0131mlay\u0131n.<\/p>\n<h4>Test Etme<\/h4>\n<p>Bir cron i\u015fini canl\u0131 sisteme eklemeden \u00f6nce, beti\u011fi manuel olarak \u00e7al\u0131\u015ft\u0131rarak test edin. Beti\u011fin bekledi\u011finiz gibi \u00e7al\u0131\u015ft\u0131\u011f\u0131ndan ve do\u011fru \u00e7\u0131kt\u0131y\u0131 verdi\u011finden emin olun. Cron ortam\u0131n\u0131 sim\u00fcle etmek i\u00e7in beti\u011fi <code>sudo -u [kullan\u0131c\u0131_ad\u0131] env -i \/path\/to\/script.sh<\/code> gibi bir komutla \u00e7al\u0131\u015ft\u0131rabilirsiniz.<\/p>\n<h4>Zaman Dilimi<\/h4>\n<p>Cron, sunucunun yerel zaman dilimini kullan\u0131r. E\u011fer sunucunuz farkl\u0131 bir zaman dilimindeyse veya DST (Yaz Saati Uygulamas\u0131) ge\u00e7i\u015fleri varsa, cron i\u015flerinizin zamanlamas\u0131n\u0131 buna g\u00f6re ayarlaman\u0131z gerekebilir.<\/p>\n<h4>Sistem Kaynaklar\u0131<\/h4>\n<p>\u00c7ok s\u0131k \u00e7al\u0131\u015fan veya yo\u011fun kaynak t\u00fcketen cron i\u015fleri, sistem performans\u0131n\u0131 etkileyebilir. \u0130\u015flerinizi dikkatlice zamanlay\u0131n ve m\u00fcmk\u00fcn oldu\u011funca verimli olmalar\u0131n\u0131 sa\u011flay\u0131n. \u00d6zellikle her dakika \u00e7al\u0131\u015fan i\u015fler i\u00e7in dikkatli olun.<\/p>\n<h4>\u00c7ak\u0131\u015fmalar\u0131 \u00d6nleme (Concurrency)<\/h4>\n<p>Ayn\u0131 anda birden fazla \u00f6rne\u011fi \u00e7al\u0131\u015fmamas\u0131 gereken bir cron i\u015finiz varsa, \u00e7ak\u0131\u015fmalar\u0131 \u00f6nlemek i\u00e7in bir kilitleme mekanizmas\u0131 kullan\u0131n. <code>flock<\/code> komutu bunun i\u00e7in yayg\u0131n olarak kullan\u0131l\u0131r:<\/p>\n<pre><code class=\"language-crontab\"><em> <\/em> <em> <\/em> * \/usr\/bin\/flock -n \/tmp\/my_cron_job.lock -c \"\/path\/to\/my_script.sh\"<\/code><\/pre>\n<p>Burada <code>-n<\/code> parametresi, kilit al\u0131namazsa komutun hemen ba\u015far\u0131s\u0131z olmas\u0131n\u0131 sa\u011flar (yani \u00f6nceki \u00f6rnek hala \u00e7al\u0131\u015f\u0131yorsa yeni bir \u00f6rnek ba\u015flatmaz).<\/p>\n<h3>Pratik \u00d6rnekler<\/h3>\n<p>\u015eimdi Cron&#8217;un nas\u0131l kullan\u0131labilece\u011fine dair baz\u0131 pratik \u00f6rneklere g\u00f6z atal\u0131m. Bu \u00f6rnekleri kendi <code>crontab -e<\/code> dosyan\u0131za ekleyebilirsiniz.<\/p>\n<p>1.  <strong>Her G\u00fcn Sabah 03:00&#8217;te Veritaban\u0131 Yedeklemesi:<\/strong><\/p>\n<pre><code class=\"language-crontab\">0 3 <em> <\/em> * \/usr\/bin\/mysqldump -u [kullanici] -p[sifre] [veritabani_adi] > \/var\/backups\/db_backup_$(date +\\%Y\\%m\\%d).sql 2>> \/var\/log\/db_backup.log<\/code><\/pre>\n<p>    <em>Not: \u015eifreyi do\u011frudan crontab&#8217;a yazmak yerine, <code>~\/.my.cnf<\/code> gibi bir dosyada saklamak daha g\u00fcvenlidir.<\/em><\/p>\n<p>2.  <strong>Her Saat Ba\u015f\u0131 Bir Beti\u011fi \u00c7al\u0131\u015ft\u0131rma:<\/strong><\/p>\n<pre><code class=\"language-crontab\">0 <em> <\/em> <em> <\/em> \/home\/kullanici\/scripts\/check_service_status.sh >> \/var\/log\/service_checks.log 2>&1<\/code><\/pre>\n<p>3.  <strong>Her Pazar Gece Yar\u0131s\u0131 Log Dosyalar\u0131n\u0131 Temizleme:<\/strong><\/p>\n<pre><code class=\"language-crontab\">0 0 <em> <\/em> 0 \/usr\/bin\/find \/var\/log -type f -name \"*.log\" -mtime +7 -delete >> \/var\/log\/log_cleanup.log 2>&1<\/code><\/pre>\n<p>    Bu komut, <code>\/var\/log<\/code> dizini alt\u0131ndaki <code>.log<\/code> uzant\u0131l\u0131 ve 7 g\u00fcnden eski dosyalar\u0131 siler.<\/p>\n<p>4.  <strong>Belirli Bir Ay\u0131n Belirli Bir G\u00fcn\u00fcnde Bir G\u00f6revi \u00c7al\u0131\u015ft\u0131rma (\u00d6rn: Her Ocak Ay\u0131n\u0131n 15&#8217;i Sabah 08:00):<\/strong><\/p>\n<pre><code class=\"language-crontab\">0 8 15 1 * \/home\/kullanici\/scripts\/yearly_report_generator.sh<\/code><\/pre>\n<p>5.  <strong>Sunucu Yeniden Ba\u015flat\u0131ld\u0131\u011f\u0131nda Bir Beti\u011fi \u00c7al\u0131\u015ft\u0131rma:<\/strong><\/p>\n<pre><code class=\"language-crontab\">@reboot \/home\/kullanici\/scripts\/start_my_application.sh >> \/var\/log\/app_startup.log 2>&1<\/code><\/pre>\n<p>6.  <strong>Her 10 Dakikada Bir Bir Web Sayfas\u0131n\u0131 Curl ile \u0130stek Atma (Uptime Kontrol\u00fc):<\/strong><\/p>\n<pre><code class=\"language-crontab\"><em>\/10 <\/em> <em> <\/em> * \/usr\/bin\/curl -s -o \/dev\/null http:\/\/example.com\/health-check<\/code><\/pre>\n<h3>Sorun Giderme (Troubleshooting Cron Jobs)<\/h3>\n<p>Bir cron i\u015finin \u00e7al\u0131\u015fmad\u0131\u011f\u0131n\u0131 fark etti\u011finizde, sorunu te\u015fhis etmek i\u00e7in izleyebilece\u011finiz ad\u0131mlar vard\u0131r:<\/p>\n<p>1.  <strong>Crontab Dosyas\u0131n\u0131 Kontrol Edin:<\/strong><br \/>\n    *   <code>crontab -l<\/code> komutuyla i\u015fin hala listede olup olmad\u0131\u011f\u0131n\u0131 kontrol edin.<br \/>\n    *   S\u00f6zdiziminde bir hata olup olmad\u0131\u011f\u0131n\u0131 dikkatlice inceleyin (dakika, saat, vb. alanlar do\u011fru mu?).<br \/>\n    *   Yorum sat\u0131rlar\u0131n\u0131 (<code>#<\/code>) kontrol edin; bazen yanl\u0131\u015fl\u0131kla bir i\u015f yorum sat\u0131r\u0131 haline gelebilir.<\/p>\n<p>2.  <strong>Sistem G\u00fcnl\u00fcklerini Kontrol Edin:<\/strong><br \/>\n    *   Cron&#8217;un kendisi genellikle <code>\/var\/log\/syslog<\/code> veya <code>journalctl<\/code>&#8216;ye giri\u015f yapar. Cron i\u015finizin \u00e7al\u0131\u015ft\u0131r\u0131l\u0131p \u00e7al\u0131\u015ft\u0131r\u0131lmad\u0131\u011f\u0131n\u0131, bir hata olup olmad\u0131\u011f\u0131n\u0131 g\u00f6rmek i\u00e7in bu g\u00fcnl\u00fckleri kontrol edin:<\/p>\n<pre><code class=\"language-bash\">grep CRON \/var\/log\/syslog\n        journalctl -u cron | grep 'CMD (.*)' # Daha spesifik cron komutlar\u0131n\u0131 bulmak i\u00e7in<\/code><\/pre>\n<p>    *   Bu g\u00fcnl\u00fckler, <code>cron<\/code> daemon&#8217;unun bir i\u015fi ba\u015flatmaya \u00e7al\u0131\u015ft\u0131\u011f\u0131n\u0131 ancak ba\u015far\u0131s\u0131z oldu\u011funu g\u00f6sterebilir.<\/p>\n<p>3.  <strong>Ortam De\u011fi\u015fkenlerini Kontrol Edin:<\/strong><br \/>\n    *   Betik i\u00e7inde tam yollar\u0131 kulland\u0131\u011f\u0131n\u0131zdan emin olun.<br \/>\n    *   <code>crontab<\/code> dosyan\u0131z\u0131n ba\u015f\u0131nda <code>PATH<\/code>, <code>SHELL<\/code> gibi de\u011fi\u015fkenleri a\u00e7\u0131k\u00e7a tan\u0131mlamay\u0131 deneyin.<br \/>\n    *   Betik i\u00e7inde ortam\u0131 g\u00f6rmek i\u00e7in, cron i\u015finize ge\u00e7ici olarak <code>env > \/tmp\/cron_env.log<\/code> komutunu ekleyin ve \u00e7al\u0131\u015ft\u0131r\u0131n. Bu, cron&#8217;un beti\u011fi hangi ortam de\u011fi\u015fkenleriyle \u00e7al\u0131\u015ft\u0131rd\u0131\u011f\u0131n\u0131 g\u00f6sterir.<\/p>\n<p>4.  <strong>Betik \u0130zinleri ve \u00c7al\u0131\u015ft\u0131r\u0131labilirlik:<\/strong><br \/>\n    *   Betik dosyas\u0131n\u0131n do\u011fru izinlere sahip oldu\u011fundan emin olun (<code>chmod +x \/path\/to\/script.sh<\/code>).<br \/>\n    *   Betik dosyas\u0131n\u0131n kullan\u0131c\u0131 taraf\u0131ndan okunabilir oldu\u011fundan emin olun.<\/p>\n<p>5.  <strong>Betik \u0130\u00e7indeki Hatalar:<\/strong><br \/>\n    *   Betik dosyas\u0131n\u0131 manuel olarak, cron&#8217;un \u00e7al\u0131\u015ft\u0131raca\u011f\u0131 kullan\u0131c\u0131 ve ortamda \u00e7al\u0131\u015ft\u0131rmay\u0131 deneyin. \u00d6rne\u011fin:<\/p>\n<pre><code class=\"language-bash\">sudo -u [kullanici_adi] \/bin\/bash -c \"\/path\/to\/script.sh\"<\/code><\/pre>\n<p>    *   Betik \u00e7\u0131kt\u0131s\u0131n\u0131 bir dosyaya y\u00f6nlendirin (<code>>> \/tmp\/cron_output.log 2>&1<\/code>) ve hatalar\u0131 inceleyin.<br \/>\n    *   <code>MAILTO<\/code> de\u011fi\u015fkenini kullanarak hatalar\u0131n e-posta ile size g\u00f6nderilmesini sa\u011flay\u0131n.<\/p>\n<p>6.  <strong><code>cron<\/code> Servisinin Durumu:<\/strong><br \/>\n    *   <code>sudo systemctl status cron<\/code> komutuyla <code>cron<\/code> daemon&#8217;unun \u00e7al\u0131\u015f\u0131p \u00e7al\u0131\u015fmad\u0131\u011f\u0131n\u0131 kontrol edin.<\/p>\n<p>7.  <strong>Zamanlama Hatalar\u0131:<\/strong><br \/>\n    *   Cron s\u00f6zdiziminin do\u011fru oldu\u011fundan ve bekledi\u011finiz zamanda \u00e7al\u0131\u015facak \u015fekilde ayarland\u0131\u011f\u0131ndan emin olun. \u00d6zellikle haftan\u0131n g\u00fcn\u00fc ve ay\u0131n g\u00fcn\u00fc alanlar\u0131 \u00e7ak\u0131\u015fabilir (\u00f6rne\u011fin, hem ay\u0131n g\u00fcn\u00fc hem de haftan\u0131n g\u00fcn\u00fc belirtilirse, bunlardan herhangi biri do\u011fru oldu\u011funda \u00e7al\u0131\u015f\u0131r).<\/p>\n<p>8.  <strong>Sunucunun Zaman Dilimi:<\/strong><br \/>\n    *   Sunucunuzun zaman diliminin do\u011fru ayarland\u0131\u011f\u0131ndan ve cron i\u015flerinizin bu zaman dilimine g\u00f6re beklenen zamanda \u00e7al\u0131\u015ft\u0131\u011f\u0131ndan emin olun.<\/p>\n<h3>Sonu\u00e7<\/h3>\n<p>Cron, Linux sistemlerinde g\u00f6rev otomasyonu i\u00e7in vazge\u00e7ilmez bir ara\u00e7t\u0131r. Do\u011fru kullan\u0131ld\u0131\u011f\u0131nda, tekrarlayan g\u00f6revleri otomatikle\u015ftirerek zaman kazand\u0131r\u0131r, hatalar\u0131 azalt\u0131r ve sistem y\u00f6netimini kolayla\u015ft\u0131r\u0131r. Ubuntu 18.04&#8217;te Cron&#8217;u etkili bir \u015fekilde kullanmak i\u00e7in <code>crontab<\/code> s\u00f6zdizimini, ortam de\u011fi\u015fkenlerinin \u00f6nemini ve en iyi uygulamalar\u0131 anlamak kritik \u00f6neme sahiptir. G\u00fcvenlik, \u00e7\u0131kt\u0131 y\u00f6netimi ve sorun giderme tekniklerini uygulayarak, otomatik g\u00f6revlerinizin sorunsuz ve g\u00fcvenilir bir \u015fekilde \u00e7al\u0131\u015fmas\u0131n\u0131 sa\u011flayabilirsiniz. Cron&#8217;u kullanarak, sunucu y\u00f6netimindeki verimlili\u011finizi \u00f6nemli \u00f6l\u00e7\u00fcde art\u0131rabilir ve daha karma\u015f\u0131k sistemler \u00fczerinde kontrol sahibi olabilirsiniz.<\/body><\/p>\n","protected":false},"excerpt":{"rendered":"Ubuntu 18.04&#8217;te G\u00f6revleri Otomatikle\u015ftirmek \u0130\u00e7in Cron Nas\u0131l Kullan\u0131l\u0131r?\nOtomasyon, modern bilgi i\u015flem sistemlerinin ve sunucu y\u00f6netiminin te","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"csco_page_header_type":"","csco_page_load_nextpost":"","csco_page_subscribe_form":"","csco_page_contact_form":"","footnotes":""},"categories":[1468],"tags":[],"class_list":{"0":"post-31298","1":"post","2":"type-post","3":"status-publish","4":"format-standard","6":"category-ubuntu","7":"cs-entry","8":"cs-video-wrap"},"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v20.5 (Yoast SEO v25.3.1) - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Ubuntu 18.04&#039;te G\u00f6revleri Otomatikle\u015ftirmek \u0130\u00e7in Cron Nas\u0131l Kullan\u0131l\u0131r? - Kodlar\u0131n Gizemli D\u00fcnyas\u0131<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/fatihsoysal.com\/blog\/ubuntu-18-04te-gorevleri-otomatiklestirmek-icin-cron-nasil-kullanilir\/\" \/>\n<meta property=\"og:locale\" content=\"tr_TR\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Ubuntu 18.04&#039;te G\u00f6revleri Otomatikle\u015ftirmek \u0130\u00e7in Cron Nas\u0131l Kullan\u0131l\u0131r?\" \/>\n<meta property=\"og:description\" content=\"Ubuntu 18.04&#039;te G\u00f6revleri Otomatikle\u015ftirmek \u0130\u00e7in Cron Nas\u0131l Kullan\u0131l\u0131r? Otomasyon, modern bilgi i\u015flem sistemlerinin ve sunucu y\u00f6netiminin te\" \/>\n<meta property=\"og:url\" content=\"https:\/\/fatihsoysal.com\/blog\/ubuntu-18-04te-gorevleri-otomatiklestirmek-icin-cron-nasil-kullanilir\/\" \/>\n<meta property=\"og:site_name\" content=\"Kodlar\u0131n Gizemli D\u00fcnyas\u0131\" \/>\n<meta property=\"article:published_time\" content=\"2025-10-08T07:41:05+00:00\" \/>\n<meta name=\"author\" content=\"Fatih Soysal\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Yazan:\" \/>\n\t<meta name=\"twitter:data1\" content=\"Fatih Soysal\" \/>\n\t<meta name=\"twitter:label2\" content=\"Tahmini okuma s\u00fcresi\" \/>\n\t<meta name=\"twitter:data2\" content=\"19 dakika\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/ubuntu-18-04te-gorevleri-otomatiklestirmek-icin-cron-nasil-kullanilir\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/ubuntu-18-04te-gorevleri-otomatiklestirmek-icin-cron-nasil-kullanilir\/\"},\"author\":{\"name\":\"Fatih Soysal\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1\"},\"headline\":\"Ubuntu 18.04&#8217;te G\u00f6revleri Otomatikle\u015ftirmek \u0130\u00e7in Cron Nas\u0131l Kullan\u0131l\u0131r?\",\"datePublished\":\"2025-10-08T07:41:05+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/ubuntu-18-04te-gorevleri-otomatiklestirmek-icin-cron-nasil-kullanilir\/\"},\"wordCount\":3072,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1\"},\"articleSection\":[\"Ubuntu\"],\"inLanguage\":\"tr\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/fatihsoysal.com\/blog\/ubuntu-18-04te-gorevleri-otomatiklestirmek-icin-cron-nasil-kullanilir\/#respond\"]}],\"copyrightYear\":\"2025\",\"copyrightHolder\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/ubuntu-18-04te-gorevleri-otomatiklestirmek-icin-cron-nasil-kullanilir\/\",\"url\":\"https:\/\/fatihsoysal.com\/blog\/ubuntu-18-04te-gorevleri-otomatiklestirmek-icin-cron-nasil-kullanilir\/\",\"name\":\"Ubuntu 18.04'te G\u00f6revleri Otomatikle\u015ftirmek \u0130\u00e7in Cron Nas\u0131l Kullan\u0131l\u0131r? - Kodlar\u0131n Gizemli D\u00fcnyas\u0131\",\"isPartOf\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#website\"},\"datePublished\":\"2025-10-08T07:41:05+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/ubuntu-18-04te-gorevleri-otomatiklestirmek-icin-cron-nasil-kullanilir\/#breadcrumb\"},\"inLanguage\":\"tr\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/fatihsoysal.com\/blog\/ubuntu-18-04te-gorevleri-otomatiklestirmek-icin-cron-nasil-kullanilir\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/ubuntu-18-04te-gorevleri-otomatiklestirmek-icin-cron-nasil-kullanilir\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Anasayfa\",\"item\":\"https:\/\/fatihsoysal.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Ubuntu 18.04&#8217;te G\u00f6revleri Otomatikle\u015ftirmek \u0130\u00e7in Cron Nas\u0131l Kullan\u0131l\u0131r?\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#website\",\"url\":\"https:\/\/fatihsoysal.com\/blog\/\",\"name\":\"Fatihsoysal.com\",\"description\":\"Blog - Yaz\u0131l\u0131m D\u00fcnyas\u0131 Tecr\u00fcbelerim\",\"publisher\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/fatihsoysal.com\/blog\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"tr\"},{\"@type\":[\"Person\",\"Organization\"],\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1\",\"name\":\"Fatih Soysal\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"tr\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/fatihsoysal.com\/blog\/wp-content\/uploads\/2024\/04\/cropped-replicate-prediction-3kgg1hgjn5rgp0cf0p5tr0jw7w-1.png\",\"contentUrl\":\"https:\/\/fatihsoysal.com\/blog\/wp-content\/uploads\/2024\/04\/cropped-replicate-prediction-3kgg1hgjn5rgp0cf0p5tr0jw7w-1.png\",\"width\":512,\"height\":512,\"caption\":\"Fatih Soysal\"},\"logo\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/image\/\"},\"description\":\"Kullan\u0131m ve kodlama m\u00fckemmeliyetini odak alan uygulamalar olu\u015fturma deneyimine sahip, profesyonel olarak 15+ y\u0131l \u00fczeri deneyime sahip bir yaz\u0131l\u0131m m\u00fchendisi.\",\"url\":\"https:\/\/fatihsoysal.com\/blog\/author\/fatihsoysal\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Ubuntu 18.04'te G\u00f6revleri Otomatikle\u015ftirmek \u0130\u00e7in Cron Nas\u0131l Kullan\u0131l\u0131r? - Kodlar\u0131n Gizemli D\u00fcnyas\u0131","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/fatihsoysal.com\/blog\/ubuntu-18-04te-gorevleri-otomatiklestirmek-icin-cron-nasil-kullanilir\/","og_locale":"tr_TR","og_type":"article","og_title":"Ubuntu 18.04'te G\u00f6revleri Otomatikle\u015ftirmek \u0130\u00e7in Cron Nas\u0131l Kullan\u0131l\u0131r?","og_description":"Ubuntu 18.04'te G\u00f6revleri Otomatikle\u015ftirmek \u0130\u00e7in Cron Nas\u0131l Kullan\u0131l\u0131r? Otomasyon, modern bilgi i\u015flem sistemlerinin ve sunucu y\u00f6netiminin te","og_url":"https:\/\/fatihsoysal.com\/blog\/ubuntu-18-04te-gorevleri-otomatiklestirmek-icin-cron-nasil-kullanilir\/","og_site_name":"Kodlar\u0131n Gizemli D\u00fcnyas\u0131","article_published_time":"2025-10-08T07:41:05+00:00","author":"Fatih Soysal","twitter_card":"summary_large_image","twitter_misc":{"Yazan:":"Fatih Soysal","Tahmini okuma s\u00fcresi":"19 dakika"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/fatihsoysal.com\/blog\/ubuntu-18-04te-gorevleri-otomatiklestirmek-icin-cron-nasil-kullanilir\/#article","isPartOf":{"@id":"https:\/\/fatihsoysal.com\/blog\/ubuntu-18-04te-gorevleri-otomatiklestirmek-icin-cron-nasil-kullanilir\/"},"author":{"name":"Fatih Soysal","@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1"},"headline":"Ubuntu 18.04&#8217;te G\u00f6revleri Otomatikle\u015ftirmek \u0130\u00e7in Cron Nas\u0131l Kullan\u0131l\u0131r?","datePublished":"2025-10-08T07:41:05+00:00","mainEntityOfPage":{"@id":"https:\/\/fatihsoysal.com\/blog\/ubuntu-18-04te-gorevleri-otomatiklestirmek-icin-cron-nasil-kullanilir\/"},"wordCount":3072,"commentCount":0,"publisher":{"@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1"},"articleSection":["Ubuntu"],"inLanguage":"tr","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/fatihsoysal.com\/blog\/ubuntu-18-04te-gorevleri-otomatiklestirmek-icin-cron-nasil-kullanilir\/#respond"]}],"copyrightYear":"2025","copyrightHolder":{"@id":"https:\/\/fatihsoysal.com\/blog\/#organization"}},{"@type":"WebPage","@id":"https:\/\/fatihsoysal.com\/blog\/ubuntu-18-04te-gorevleri-otomatiklestirmek-icin-cron-nasil-kullanilir\/","url":"https:\/\/fatihsoysal.com\/blog\/ubuntu-18-04te-gorevleri-otomatiklestirmek-icin-cron-nasil-kullanilir\/","name":"Ubuntu 18.04'te G\u00f6revleri Otomatikle\u015ftirmek \u0130\u00e7in Cron Nas\u0131l Kullan\u0131l\u0131r? - Kodlar\u0131n Gizemli D\u00fcnyas\u0131","isPartOf":{"@id":"https:\/\/fatihsoysal.com\/blog\/#website"},"datePublished":"2025-10-08T07:41:05+00:00","breadcrumb":{"@id":"https:\/\/fatihsoysal.com\/blog\/ubuntu-18-04te-gorevleri-otomatiklestirmek-icin-cron-nasil-kullanilir\/#breadcrumb"},"inLanguage":"tr","potentialAction":[{"@type":"ReadAction","target":["https:\/\/fatihsoysal.com\/blog\/ubuntu-18-04te-gorevleri-otomatiklestirmek-icin-cron-nasil-kullanilir\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/fatihsoysal.com\/blog\/ubuntu-18-04te-gorevleri-otomatiklestirmek-icin-cron-nasil-kullanilir\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Anasayfa","item":"https:\/\/fatihsoysal.com\/blog\/"},{"@type":"ListItem","position":2,"name":"Ubuntu 18.04&#8217;te G\u00f6revleri Otomatikle\u015ftirmek \u0130\u00e7in Cron Nas\u0131l Kullan\u0131l\u0131r?"}]},{"@type":"WebSite","@id":"https:\/\/fatihsoysal.com\/blog\/#website","url":"https:\/\/fatihsoysal.com\/blog\/","name":"Fatihsoysal.com","description":"Blog - Yaz\u0131l\u0131m D\u00fcnyas\u0131 Tecr\u00fcbelerim","publisher":{"@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/fatihsoysal.com\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"tr"},{"@type":["Person","Organization"],"@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1","name":"Fatih Soysal","image":{"@type":"ImageObject","inLanguage":"tr","@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/image\/","url":"https:\/\/fatihsoysal.com\/blog\/wp-content\/uploads\/2024\/04\/cropped-replicate-prediction-3kgg1hgjn5rgp0cf0p5tr0jw7w-1.png","contentUrl":"https:\/\/fatihsoysal.com\/blog\/wp-content\/uploads\/2024\/04\/cropped-replicate-prediction-3kgg1hgjn5rgp0cf0p5tr0jw7w-1.png","width":512,"height":512,"caption":"Fatih Soysal"},"logo":{"@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/image\/"},"description":"Kullan\u0131m ve kodlama m\u00fckemmeliyetini odak alan uygulamalar olu\u015fturma deneyimine sahip, profesyonel olarak 15+ y\u0131l \u00fczeri deneyime sahip bir yaz\u0131l\u0131m m\u00fchendisi.","url":"https:\/\/fatihsoysal.com\/blog\/author\/fatihsoysal\/"}]}},"yoast_meta":{"yoast_wpseo_title":"","yoast_wpseo_metadesc":"","yoast_wpseo_canonical":""},"amp_enabled":true,"_links":{"self":[{"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/posts\/31298","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/comments?post=31298"}],"version-history":[{"count":1,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/posts\/31298\/revisions"}],"predecessor-version":[{"id":31299,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/posts\/31298\/revisions\/31299"}],"wp:attachment":[{"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/media?parent=31298"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/categories?post=31298"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/tags?post=31298"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}