{"id":3526,"date":"2025-12-27T19:59:59","date_gmt":"2025-12-27T16:59:59","guid":{"rendered":"https:\/\/www.dchost.com\/blog\/linux-crontab-en-iyi-uygulamalar-rehberi-yedek-rapor-ve-bakim-isleri-icin-guvenli-zamanlama\/"},"modified":"2025-12-27T19:59:59","modified_gmt":"2025-12-27T16:59:59","slug":"linux-crontab-en-iyi-uygulamalar-rehberi-yedek-rapor-ve-bakim-isleri-icin-guvenli-zamanlama","status":"publish","type":"post","link":"https:\/\/www.dchost.com\/blog\/linux-crontab-en-iyi-uygulamalar-rehberi-yedek-rapor-ve-bakim-isleri-icin-guvenli-zamanlama\/","title":{"rendered":"Linux Crontab En \u0130yi Uygulamalar Rehberi: Yedek, Rapor ve Bak\u0131m \u0130\u015fleri \u0130\u00e7in G\u00fcvenli Zamanlama"},"content":{"rendered":"<div class=\"dchost-blog-content-wrapper\"><div id=\"toc_container\" class=\"toc_transparent no_bullets\"><p class=\"toc_title\">\u0130&ccedil;indekiler<\/p><ul class=\"toc_list\"><li><a href=\"#Linux_crontab_ile_otomasyonun_omurgasini_kurmak\"><span class=\"toc_number toc_depth_1\">1<\/span> Linux crontab ile otomasyonun omurgas\u0131n\u0131 kurmak<\/a><\/li><li><a href=\"#Linux_crontab_temelleri_Ne_nerede_nasil_calisir\"><span class=\"toc_number toc_depth_1\">2<\/span> Linux crontab temelleri: Ne, nerede, nas\u0131l \u00e7al\u0131\u015f\u0131r?<\/a><\/li><li><a href=\"#Cron_zamanlama_soz_dizimini_dogru_anlamak\"><span class=\"toc_number toc_depth_1\">3<\/span> Cron zamanlama s\u00f6z dizimini do\u011fru anlamak<\/a><\/li><li><a href=\"#Yedekleme_isleri_icin_guvenli_cron_stratejisi\"><span class=\"toc_number toc_depth_1\">4<\/span> Yedekleme i\u015fleri i\u00e7in g\u00fcvenli cron stratejisi<\/a><ul><li><a href=\"#1_Yedekleme_scriptini_ayri_tutun_crontabe_minimum_yazin\"><span class=\"toc_number toc_depth_2\">4.1<\/span> 1. Yedekleme script\u2019ini ayr\u0131 tutun, crontab\u2019e minimum yaz\u0131n<\/a><\/li><li><a href=\"#2_3-2-1_yedek_stratejisini_cron_ile_hayata_gecirmek\"><span class=\"toc_number toc_depth_2\">4.2<\/span> 2. 3-2-1 yedek stratejisini cron ile hayata ge\u00e7irmek<\/a><\/li><li><a href=\"#3_Uzak_object_storage_yedekleri_cron_ile_senkronize_etmek\"><span class=\"toc_number toc_depth_2\">4.3<\/span> 3. Uzak (object storage) yedekleri cron ile senkronize etmek<\/a><\/li><li><a href=\"#4_Performans_ve_trafik_saatlerini_hesaba_katmak\"><span class=\"toc_number toc_depth_2\">4.4<\/span> 4. Performans ve trafik saatlerini hesaba katmak<\/a><\/li><\/ul><\/li><li><a href=\"#Raporlama_ve_log_isleri_Cron_ile_gorunurluk_kazanmak\"><span class=\"toc_number toc_depth_1\">5<\/span> Raporlama ve log i\u015fleri: Cron ile g\u00f6r\u00fcn\u00fcrl\u00fck kazanmak<\/a><ul><li><a href=\"#1_Haftalikaylik_raporlari_e-posta_ile_gondermek\"><span class=\"toc_number toc_depth_2\">5.1<\/span> 1. Haftal\u0131k\/ayl\u0131k raporlar\u0131 e-posta ile g\u00f6ndermek<\/a><\/li><li><a href=\"#2_Log_temizligi_ve_disk_dolulugunu_kontrol_etmek\"><span class=\"toc_number toc_depth_2\">5.2<\/span> 2. Log temizli\u011fi ve disk dolulu\u011funu kontrol etmek<\/a><\/li><\/ul><\/li><li><a href=\"#Bakim_ve_temizlik_isleri_Sunucunun_gunluk_ev_isleri\"><span class=\"toc_number toc_depth_1\">6<\/span> Bak\u0131m ve temizlik i\u015fleri: Sunucunun g\u00fcnl\u00fck ev i\u015fleri<\/a><ul><li><a href=\"#1_Cache_ve_gecici_dosya_temizleme\"><span class=\"toc_number toc_depth_2\">6.1<\/span> 1. Cache ve ge\u00e7ici dosya temizleme<\/a><\/li><li><a href=\"#2_Veritabani_bakim_gorevleri\"><span class=\"toc_number toc_depth_2\">6.2<\/span> 2. Veritaban\u0131 bak\u0131m g\u00f6revleri<\/a><\/li><li><a href=\"#3_Sertifika_yenileme_ve_saglik_kontrolleri\"><span class=\"toc_number toc_depth_2\">6.3<\/span> 3. Sertifika yenileme ve sa\u011fl\u0131k kontrolleri<\/a><\/li><\/ul><\/li><li><a href=\"#Guvenlik_ortam_degiskenleri_ve_hata_ayiklama\"><span class=\"toc_number toc_depth_1\">7<\/span> G\u00fcvenlik, ortam de\u011fi\u015fkenleri ve hata ay\u0131klama<\/a><ul><li><a href=\"#1_Ortam_degiskenlerini_net_tanimlayin\"><span class=\"toc_number toc_depth_2\">7.1<\/span> 1. Ortam de\u011fi\u015fkenlerini net tan\u0131mlay\u0131n<\/a><\/li><li><a href=\"#2_Kullanici_ve_yetki_yonetimi\"><span class=\"toc_number toc_depth_2\">7.2<\/span> 2. Kullan\u0131c\u0131 ve yetki y\u00f6netimi<\/a><\/li><li><a href=\"#3_Loglama_ve_hata_ayiklama_stratejisi\"><span class=\"toc_number toc_depth_2\">7.3<\/span> 3. Loglama ve hata ay\u0131klama stratejisi<\/a><\/li><li><a href=\"#4_Izleme_ve_alarmlar_ile_cronu_gorunur_kilmak\"><span class=\"toc_number toc_depth_2\">7.4<\/span> 4. \u0130zleme ve alarmlar ile cron\u2019u g\u00f6r\u00fcn\u00fcr k\u0131lmak<\/a><\/li><\/ul><\/li><li><a href=\"#Cron_mu_systemd_timer_mi_Ne_zaman_hangisini_secmeli\"><span class=\"toc_number toc_depth_1\">8<\/span> Cron mu systemd timer m\u0131? Ne zaman hangisini se\u00e7meli?<\/a><\/li><li><a href=\"#DCHost_altyapisinda_crontab_planlarken_pratik_oneriler\"><span class=\"toc_number toc_depth_1\">9<\/span> DCHost altyap\u0131s\u0131nda crontab planlarken pratik \u00f6neriler<\/a><ul><li><a href=\"#1_Paylasimli_hosting_ve_kontrol_panelli_ortamlar\"><span class=\"toc_number toc_depth_2\">9.1<\/span> 1. Payla\u015f\u0131ml\u0131 hosting ve kontrol panelli ortamlar<\/a><\/li><li><a href=\"#2_DCHost_Linux_VPS_ve_dedicated_sunucularda_crontab_yaklasimi\"><span class=\"toc_number toc_depth_2\">9.2<\/span> 2. DCHost Linux VPS ve dedicated sunucularda crontab yakla\u015f\u0131m\u0131<\/a><\/li><li><a href=\"#3_Colocation_veya_karma_mimarilerde_cron_koordinasyonu\"><span class=\"toc_number toc_depth_2\">9.3<\/span> 3. Colocation veya karma mimarilerde cron koordinasyonu<\/a><\/li><\/ul><\/li><li><a href=\"#Sonuc_Saglam_bir_cron_stratejisi_ile_altyapiyi_guvence_altina_almak\"><span class=\"toc_number toc_depth_1\">10<\/span> Sonu\u00e7: Sa\u011flam bir cron stratejisi ile altyap\u0131y\u0131 g\u00fcvence alt\u0131na almak<\/a><\/li><\/ul><\/div>\n<h2><span id=\"Linux_crontab_ile_otomasyonun_omurgasini_kurmak\">Linux crontab ile otomasyonun omurgas\u0131n\u0131 kurmak<\/span><\/h2>\n<p>Linux taraf\u0131nda belli bir \u00f6l\u00e7e\u011fe gelmi\u015f her projede ayn\u0131 soruya geliyoruz: \u201cHangi i\u015fleri otomatikle\u015ftirdik ve hangileri h\u00e2l\u00e2 elle yap\u0131l\u0131yor?\u201d Yedek alma, log temizleme, rapor \u00fcretme, disk kontrol\u00fc, sertifika yenileme gibi i\u015fler birka\u00e7 sunucuda elle idare edilebilir; ancak i\u015fler b\u00fcy\u00fcd\u00fck\u00e7e manuel s\u00fcre\u00e7ler hem risk hem de zaman kayb\u0131 h\u00e2line gelir. \u0130\u015fte <strong>Linux crontab<\/strong>, bu tekrar eden i\u015fleri g\u00fcvenli ve \u00f6ng\u00f6r\u00fclebilir bi\u00e7imde otomatikle\u015ftirmenin en temel arac\u0131.<\/p>\n<p>Bu rehberde, DCHost altyap\u0131s\u0131nda y\u0131llard\u0131r kulland\u0131\u011f\u0131m\u0131z pratiklerden s\u00fcz\u00fclm\u00fc\u015f bir \u00e7er\u00e7eveyle ilerleyece\u011fiz. Amac\u0131m\u0131z sadece \u201ccron nedir?\u201d demek de\u011fil; <strong>yedek<\/strong>, <strong>rapor<\/strong> ve <strong>bak\u0131m<\/strong> i\u015flerini hem g\u00fcvenli hem de s\u00fcrd\u00fcr\u00fclebilir \u015fekilde planlayabilece\u011finiz bir yol haritas\u0131 sunmak. Zamanlama s\u00f6z diziminden kilitlemeye (flock), log takibinden systemd timer\u2019lara ne zaman ge\u00e7meniz gerekti\u011fine kadar, ger\u00e7ek d\u00fcnyada i\u015finize yarayacak detaylara odaklanaca\u011f\u0131z.<\/p>\n<h2><span id=\"Linux_crontab_temelleri_Ne_nerede_nasil_calisir\">Linux crontab temelleri: Ne, nerede, nas\u0131l \u00e7al\u0131\u015f\u0131r?<\/span><\/h2>\n<p>Cron, Linux\/Unix sistemlerde zamanlanm\u0131\u015f g\u00f6revleri \u00e7al\u0131\u015ft\u0131ran bir servistir (daemon). Kullan\u0131c\u0131lar\u0131n g\u00f6rev tan\u0131mlad\u0131\u011f\u0131 dosyaya ise <strong>crontab<\/strong> denir. Temel bile\u015fenler \u015f\u00f6yle:<\/p>\n<ul>\n<li><strong>crond:<\/strong> Arka planda \u00e7al\u0131\u015fan servis; tan\u0131ml\u0131 t\u00fcm cron job\u2019lar\u0131n\u0131 takip eder ve zaman\u0131 geldi\u011finde \u00e7al\u0131\u015ft\u0131r\u0131r.<\/li>\n<li><strong>Kullan\u0131c\u0131 bazl\u0131 crontab:<\/strong> Her kullan\u0131c\u0131 i\u00e7in ayr\u0131 tablo. D\u00fczenleme komutu: <code>crontab -e<\/code><\/li>\n<li><strong>Sistem crontab:<\/strong> Genellikle <code>\/etc\/crontab<\/code> ve <code>\/etc\/cron.d\/<\/code> alt\u0131ndaki dosyalar.<\/li>\n<\/ul>\n<p>En s\u0131k kullan\u0131lan komutlar:<\/p>\n<pre class=\"language-bash line-numbers\"><code class=\"language-bash\"># Ge\u00e7erli kullan\u0131c\u0131n\u0131n crontab'ini d\u00fczenle\ncrontab -e\n\n# Ge\u00e7erli kullan\u0131c\u0131n\u0131n crontab'ini listele\ncrontab -l\n\n# Ge\u00e7erli kullan\u0131c\u0131n\u0131n crontab'ini sil\ncrontab -r\n<\/code><\/pre>\n<p>Genel olarak iyi bir pratik, uygulama bazl\u0131 g\u00f6revleri ilgili kullan\u0131c\u0131 hesab\u0131n\u0131n crontab\u2019ine yazmak; sistem genelini ilgilendiren i\u015fleri ise <code>\/etc\/cron.d\/<\/code> veya <code>\/etc\/crontab<\/code> \u00fczerinden y\u00f6netmektir. \u00d6rne\u011fin web uygulaman\u0131z <code>www-data<\/code> kullan\u0131c\u0131s\u0131 alt\u0131ndaysa, onun crontab\u2019ini kullanmak hem yetki hem de g\u00fcvenlik a\u00e7\u0131s\u0131ndan daha do\u011frudur.<\/p>\n<h2><span id=\"Cron_zamanlama_soz_dizimini_dogru_anlamak\">Cron zamanlama s\u00f6z dizimini do\u011fru anlamak<\/span><\/h2>\n<p>Crontab sat\u0131r\u0131n\u0131n temel yap\u0131s\u0131 \u015f\u00f6yledir:<\/p>\n<pre class=\"language-bash line-numbers\"><code class=\"language-bash\">* * * * * komut\n| | | | |\n| | | | +----- Haftan\u0131n g\u00fcn\u00fc (0-7, 0 ve 7 Pazar)\n| | | +------- Ay (1-12)\n| | +--------- Ay\u0131n g\u00fcn\u00fc (1-31)\n| +----------- Saat (0-23)\n+------------- Dakika (0-59)\n<\/code><\/pre>\n<p>\u00d6rnek:<\/p>\n<pre class=\"language-bash line-numbers\"><code class=\"language-bash\"># Her gece 03:15'te \u00e7al\u0131\u015ft\u0131r\n15 3 * * * \/usr\/local\/bin\/backup.sh\n\n# Her 5 dakikada bir \u00e7al\u0131\u015ft\u0131r\n*\/5 * * * * \/usr\/local\/bin\/check_queues.sh\n\n# Her pazartesi saat 08:00'de \u00e7al\u0131\u015ft\u0131r\n0 8 * * 1 \/usr\/local\/bin\/weekly-report.sh\n<\/code><\/pre>\n<p>S\u00f6z diziminde s\u0131k d\u00fc\u015f\u00fclen hatalara dikkat etmek \u00f6nemli:<\/p>\n<ul>\n<li><strong>Ay\u0131n g\u00fcn\u00fc ve haftan\u0131n g\u00fcn\u00fc beraber kullan\u0131m\u0131:<\/strong> \u0130ki alan da doluysa cron, <em>ikisinden biri<\/em> e\u015fle\u015fti\u011finde g\u00f6revi \u00e7al\u0131\u015ft\u0131r\u0131r. \u00c7o\u011fu ki\u015fi \u201cve\u201d gibi davranaca\u011f\u0131n\u0131 varsay\u0131p yanl\u0131\u015f zamanlama yapar.<\/li>\n<li><strong>Ad\u0131m (step) kullan\u0131m\u0131:<\/strong> <code>*\/10<\/code> (her 10 dakikada bir), <code>1-5<\/code> (1\u2019den 5\u2019e), <code>1,15,30<\/code> (liste) \u015feklinde kombinasyonlar yap\u0131labilir.<\/li>\n<li><strong>Zaman dilimi fark\u0131:<\/strong> Sunucunuzun timezone\u2019\u0131 ile i\u015f beklentileriniz ayn\u0131 m\u0131? \u00d6zellikle yurtd\u0131\u015f\u0131 veri merkezlerindeki sunucularda yerel saat fark\u0131n\u0131 hesaba kat\u0131n.<\/li>\n<\/ul>\n<p>E\u011fer cron s\u00f6z dizimini ilerde systemd timer\u2019larla k\u0131yaslamak isterseniz, <a href=\"https:\/\/www.dchost.com\/blog\/cron-mu-systemd-timer-mi-neden-nasil-ve-ne-zaman-hangisini-secmeli\/\">cron mu systemd timer m\u0131 tercih edilmeli?<\/a> ba\u015fl\u0131kl\u0131 rehberimizde iki yakla\u015f\u0131m\u0131n art\u0131lar\u0131n\u0131 ve eksilerini detayl\u0131 anlatt\u0131k.<\/p>\n<h2><span id=\"Yedekleme_isleri_icin_guvenli_cron_stratejisi\">Yedekleme i\u015fleri i\u00e7in g\u00fcvenli cron stratejisi<\/span><\/h2>\n<p>Yedekleme, cron kullan\u0131m\u0131n\u0131n en kritik alanlar\u0131ndan biri. Hata kald\u0131rmaz, geri d\u00f6n\u00fc\u015f\u00fc pahal\u0131d\u0131r. DCHost taraf\u0131nda g\u00f6zlemledi\u011fimiz en yayg\u0131n problem, cron\u2019a bir <code>mysqldump<\/code> sat\u0131r\u0131 yaz\u0131p \u201cyedeklemeyi hallettik\u201d sanmak. Asl\u0131nda i\u015fin i\u00e7inde saklama stratejisi, \u015fifreleme, performans ve geri d\u00f6n\u00fc\u015f testleri var.<\/p>\n<h3><span id=\"1_Yedekleme_scriptini_ayri_tutun_crontabe_minimum_yazin\">1. Yedekleme script\u2019ini ayr\u0131 tutun, crontab\u2019e minimum yaz\u0131n<\/span><\/h3>\n<p>\u0130yi pratik: Crontab sat\u0131r\u0131 olabildi\u011fince sade olsun, as\u0131l mant\u0131k bir shell\/script dosyas\u0131nda dursun.<\/p>\n<pre class=\"language-bash line-numbers\"><code class=\"language-bash\"># \/usr\/local\/bin\/backup-daily.sh\n#!\/usr\/bin\/env bash\nset -euo pipefail\n\nTIMESTAMP=$(date +&quot;%Y%m%d-%H%M%S&quot;)\nBACKUP_DIR=&quot;\/var\/backups\/mysql&quot;\nDB_NAME=&quot;uygulama_db&quot;\n\nmkdir -p &quot;${BACKUP_DIR}&quot; \n\/usr\/bin\/mysqldump --single-transaction &quot;${DB_NAME}&quot; \n  | gzip &gt; &quot;${BACKUP_DIR}\/${DB_NAME}-${TIMESTAMP}.sql.gz&quot;\n\n# 7 g\u00fcnden eski yedekleri sil\nfind &quot;${BACKUP_DIR}&quot; -type f -mtime +7 -delete\n<\/code><\/pre>\n<p>Crontab sat\u0131r\u0131 ise \u00e7ok daha temiz kal\u0131r:<\/p>\n<pre class=\"language-bash line-numbers\"><code class=\"language-bash\">0 2 * * * \/usr\/bin\/flock -n \/var\/lock\/backup-daily.lock \n  \/usr\/local\/bin\/backup-daily.sh &gt;&gt; \/var\/log\/backup-daily.log 2&gt;&amp;1\n<\/code><\/pre>\n<p>Burada birka\u00e7 en iyi uygulamay\u0131 bir arada g\u00f6r\u00fcyorsunuz:<\/p>\n<ul>\n<li><strong>flock:<\/strong> Ayn\u0131 i\u015f bir \u00f6nceki \u00e7al\u0131\u015fmas\u0131 bitmeden tekrar ba\u015flamas\u0131n diye kilitleme (lock) mekanizmas\u0131.<\/li>\n<li><strong>Log y\u00f6nlendirme:<\/strong> \u00c7\u0131kt\u0131y\u0131 bir log dosyas\u0131na yaz\u0131p hata ay\u0131klamay\u0131 kolayla\u015ft\u0131rma.<\/li>\n<li><strong>set -euo pipefail:<\/strong> Script hata ald\u0131\u011f\u0131nda sessizce devam etmesin, job ba\u015far\u0131s\u0131z olsun.<\/li>\n<\/ul>\n<h3><span id=\"2_3-2-1_yedek_stratejisini_cron_ile_hayata_gecirmek\">2. 3-2-1 yedek stratejisini cron ile hayata ge\u00e7irmek<\/span><\/h3>\n<p>Tek sunucuda tek kopya yedek, g\u00fcn\u00fcn sonunda ger\u00e7ek anlamda \u201cyedekleme\u201d say\u0131lmaz. Sa\u011flam bir yakla\u015f\u0131m i\u00e7in <strong>3-2-1 stratejisi<\/strong>ni \u00f6neriyoruz: 3 kopya, 2 farkl\u0131 ortam, 1 tanesi farkl\u0131 lokasyonda. Bunu cron ile otomatikle\u015ftirirken \u015fu ak\u0131\u015f\u0131 d\u00fc\u015f\u00fcnebilirsiniz:<\/p>\n<ol>\n<li>Yerel sunucuda g\u00fcnl\u00fck\/veritaban\u0131 yede\u011fi (disk \u00fczerinde).<\/li>\n<li>Ayn\u0131 veri merkezinde farkl\u0131 disk\/volume \u00fczerine ikinci kopya.<\/li>\n<li>Object storage veya farkl\u0131 lokasyona \u00fc\u00e7\u00fcnc\u00fc kopya (off-site).<\/li>\n<\/ol>\n<p>Bu stratejinin neden i\u015fe yarad\u0131\u011f\u0131n\u0131 ve farkl\u0131 hosting senaryolar\u0131nda nas\u0131l uygulanaca\u011f\u0131n\u0131, <a href=\"https:\/\/www.dchost.com\/blog\/3-2-1-yedekleme-stratejisi-neden-ise-yariyor-cpanel-plesk-ve-vpste-otomatik-yedekleri-nasil-kurarsin\/\">3-2-1 yedekleme stratejisi rehberimizde<\/a> ayr\u0131nt\u0131l\u0131 \u015fekilde anlatt\u0131k. Cron taraf\u0131nda ise her ad\u0131m\u0131 ayr\u0131 job olarak, mant\u0131kl\u0131 bir s\u0131rayla \u00e7al\u0131\u015ft\u0131rmak en do\u011frusudur.<\/p>\n<h3><span id=\"3_Uzak_object_storage_yedekleri_cron_ile_senkronize_etmek\">3. Uzak (object storage) yedekleri cron ile senkronize etmek<\/span><\/h3>\n<p>\u00d6zellikle DCHost \u00fczerindeki <a href=\"https:\/\/www.dchost.com\/tr\/vps\">VPS<\/a> ve <a href=\"https:\/\/www.dchost.com\/tr\/fiziksel-sunucu\">dedicated sunucu<\/a>larda, veriyi object storage\u2019a aktarmak art\u0131k \u00e7ok yayg\u0131n bir pratik. Bunun i\u00e7in s\u0131k kullan\u0131lan ara\u00e7lardan baz\u0131lar\u0131 <code>rclone<\/code> ve <code>restic<\/code>. \u00d6rnek bir g\u00fcnl\u00fck senkronizasyon job\u2019\u0131:<\/p>\n<pre class=\"language-bash line-numbers\"><code class=\"language-bash\"># Her gece 03:30'da yerel backup klas\u00f6r\u00fcn\u00fc uzak depoya senkronize et\n30 3 * * * \/usr\/bin\/flock -n \/var\/lock\/rclone-backup.lock \n  \/usr\/bin\/rclone sync \/var\/backups s3:projeyedekleri\/$(hostname) \n  --log-file=\/var\/log\/rclone-backup.log --log-level=INFO\n<\/code><\/pre>\n<p>rclone ve restic ile object storage\u2019a otomatik yedek almay\u0131 ad\u0131m ad\u0131m g\u00f6rmek isterseniz, <a href=\"https:\/\/www.dchost.com\/blog\/object-storagea-otomatik-yedek-alma-rclone-restic-ve-cron-ile-cpanel-vps-yedekleri\/\">object storage\u2019a otomatik yedek alma rehberimizi<\/a> mutlaka inceleyin; crontab taraf\u0131nda dikkat etmeniz gereken ince detaylar\u0131 da orada toplad\u0131k.<\/p>\n<h3><span id=\"4_Performans_ve_trafik_saatlerini_hesaba_katmak\">4. Performans ve trafik saatlerini hesaba katmak<\/span><\/h3>\n<p>Yedekleme b\u00fcy\u00fck I\/O ve CPU t\u00fcketebilir. \u00d6zellikle yo\u011fun eri\u015fim alan sitelerde, cron job\u2019lar\u0131n\u0131z\u0131 \u015fu \u015fekilde planlamay\u0131 \u00f6neriyoruz:<\/p>\n<ul>\n<li>Yo\u011fun trafi\u011fin en d\u00fc\u015f\u00fck oldu\u011fu zaman dilimini belirleyin (\u00f6rne\u011fin 02:00\u201305:00 aras\u0131).<\/li>\n<li>Veritaban\u0131 yedekleri, dosya senkronizasyonu, log s\u0131k\u0131\u015ft\u0131rma gibi i\u015flerin \u00e7ak\u0131\u015fmamas\u0131na dikkat edin.<\/li>\n<li>Gerekirse <code>nice<\/code> ve <code>ionice<\/code> kullanarak yedek i\u015flerine d\u00fc\u015f\u00fck \u00f6ncelik verin.<\/li>\n<\/ul>\n<pre class=\"language-bash line-numbers\"><code class=\"language-bash\">0 2 * * * \/usr\/bin\/flock -n \/var\/lock\/mysql-backup.lock \n  \/usr\/bin\/nice -n 10 \/usr\/bin\/ionice -c2 -n7 \n  \/usr\/local\/bin\/backup-daily.sh &gt;&gt; \/var\/log\/backup-daily.log 2&gt;&amp;1\n<\/code><\/pre>\n<h2><span id=\"Raporlama_ve_log_isleri_Cron_ile_gorunurluk_kazanmak\">Raporlama ve log i\u015fleri: Cron ile g\u00f6r\u00fcn\u00fcrl\u00fck kazanmak<\/span><\/h2>\n<p>Yedek kadar kritik ama \u00e7o\u011fu zaman ihmal edilen bir di\u011fer alan, <strong>raporlama<\/strong> ve <strong>log bak\u0131m\u0131<\/strong>. Cron, hem i\u015f raporlar\u0131 \u00fcretmek hem de log\u2019lar\u0131n kontrolden \u00e7\u0131kmas\u0131n\u0131 engellemek i\u00e7in harika bir ara\u00e7t\u0131r.<\/p>\n<h3><span id=\"1_Haftalikaylik_raporlari_e-posta_ile_gondermek\">1. Haftal\u0131k\/ayl\u0131k raporlar\u0131 e-posta ile g\u00f6ndermek<\/span><\/h3>\n<p>\u00d6rne\u011fin e-ticaret siteniz i\u00e7in haftal\u0131k sipari\u015f ve ciro raporu \u00fcretmek istiyorsunuz. PHP\/Laravel, Node.js veya Python ile bir CLI script yaz\u0131p bunu cron\u2019a ba\u011flamak \u00e7ok yayg\u0131n bir y\u00f6ntem.<\/p>\n<pre class=\"language-bash line-numbers\"><code class=\"language-bash\"># Laravel artisan schedule:run \u00f6rne\u011fi\n*\/5 * * * * \/usr\/bin\/php \/var\/www\/app\/artisan schedule:run \n  &gt;&gt; \/var\/log\/artisan-schedule.log 2&gt;&amp;1\n<\/code><\/pre>\n<p>Veya do\u011frudan rapor \u00fcreten bir script:<\/p>\n<pre class=\"language-bash line-numbers\"><code class=\"language-bash\">0 7 * * 1 \/usr\/bin\/python3 \/opt\/scripts\/weekly_report.py \n  --output \/var\/reports\/weekly-$(date +&quot;%Y%m%d&quot;).pdf \n  &gt;&gt; \/var\/log\/weekly-report.log 2&gt;&amp;1\n<\/code><\/pre>\n<p>Cron i\u00e7inden e-posta g\u00f6ndermek i\u00e7in ortamda MTA (Postfix\/Exim vb.) yap\u0131land\u0131r\u0131lm\u0131\u015fsa, komut \u00e7\u0131kt\u0131lar\u0131 do\u011frudan mail olarak g\u00f6nderilebilir. Bunun i\u00e7in <code>MAILTO<\/code> de\u011fi\u015fkeni kullan\u0131labilir.<\/p>\n<pre class=\"language-bash line-numbers\"><code class=\"language-bash\">MAILTO=raporlar@example.com\n0 7 * * 1 \/opt\/scripts\/weekly_report.sh\n<\/code><\/pre>\n<p>Bu yakla\u015f\u0131m\u0131 \u00f6zellikle y\u00f6neticilere veya ekip arkada\u015flar\u0131na d\u00fczenli operasyon raporu atmak i\u00e7in kullanabilirsiniz.<\/p>\n<h3><span id=\"2_Log_temizligi_ve_disk_dolulugunu_kontrol_etmek\">2. Log temizli\u011fi ve disk dolulu\u011funu kontrol etmek<\/span><\/h3>\n<p>Log dosyalar\u0131, \u00f6nlem al\u0131nmazsa aylar i\u00e7inde diski doldurabilir. DCHost ortamlar\u0131nda sonradan kar\u015f\u0131la\u015ft\u0131\u011f\u0131m\u0131z \u201cdisk dolu, site \u00e7al\u0131\u015fm\u0131yor\u201d vakalar\u0131n\u0131n \u00f6nemli bir k\u0131sm\u0131nda problem, log ve cache klas\u00f6rlerinin kontrols\u00fcz b\u00fcy\u00fcmesiydi.<\/p>\n<p>Log temizli\u011fi i\u00e7in iki temel yakla\u015f\u0131m var:<\/p>\n<ul>\n<li><strong>logrotate kullanmak:<\/strong> \u00c7o\u011fu da\u011f\u0131t\u0131mda varsay\u0131lan; d\u00f6nd\u00fcrme, s\u0131k\u0131\u015ft\u0131rma, saklama s\u00fcresi y\u00f6netimi i\u00e7in ideal.<\/li>\n<li><strong>Kendi basit temizlik script\u2019iniz:<\/strong> Belirli klas\u00f6rlerde eski dosyalar\u0131 silmek i\u00e7in.<\/li>\n<\/ul>\n<pre class=\"language-bash line-numbers\"><code class=\"language-bash\"># \/var\/log\/app klas\u00f6r\u00fcnde 14 g\u00fcnden eski log'lar\u0131 sil\n30 4 * * * find \/var\/log\/app -type f -mtime +14 -delete\n<\/code><\/pre>\n<p>Disk alan\u0131 ile ilgili daha derin bir rehbere ihtiyac\u0131n\u0131z varsa, \u00f6zellikle <code>logrotate<\/code> ayarlar\u0131n\u0131n nas\u0131l kurtar\u0131c\u0131 olabilece\u011fini <a href=\"https:\/\/www.dchost.com\/blog\/vps-disk-kullanimi-ve-logrotate-ayarlar%C4%B1yla-no-space-left-on-device-hatasini-onlemek\/\">VPS disk kullan\u0131m\u0131 ve logrotate ayarlar\u0131 rehberimizde<\/a> ad\u0131m ad\u0131m anlatt\u0131k.<\/p>\n<h2><span id=\"Bakim_ve_temizlik_isleri_Sunucunun_gunluk_ev_isleri\">Bak\u0131m ve temizlik i\u015fleri: Sunucunun g\u00fcnl\u00fck ev i\u015fleri<\/span><\/h2>\n<p>Cron, sadece yedek ve rapor i\u00e7in de\u011fil, g\u00fcnl\u00fck\/haftal\u0131k bak\u0131m i\u015flerini otomatikle\u015ftirmek i\u00e7in de ideal. Ancak burada \u201cfazla temizlik\u201d de riskli olabilir; yanl\u0131\u015f bir <code>rm -rf<\/code> komutu t\u00fcm uygulamay\u0131 silebilir. Bu y\u00fczden bak\u0131m job\u2019lar\u0131n\u0131 tasarlarken \u00f6zellikle dikkatli olmak gerekiyor.<\/p>\n<h3><span id=\"1_Cache_ve_gecici_dosya_temizleme\">1. Cache ve ge\u00e7ici dosya temizleme<\/span><\/h3>\n<p>Bir\u00e7ok framework (Laravel, Symfony, WordPress eklentileri vb.) cache klas\u00f6rlerinde b\u00fcy\u00fck dosyalar biriktirir. Bunlar\u0131n bir k\u0131sm\u0131 otomatik temizlenir, bir k\u0131sm\u0131 ise siz temizlemezseniz kal\u0131c\u0131 olur.<\/p>\n<pre class=\"language-bash line-numbers\"><code class=\"language-bash\"># 3 g\u00fcnden eski temp dosyalar\u0131n\u0131 temizle\n0 * * * * find \/tmp\/myapp -type f -mtime +3 -delete\n<\/code><\/pre>\n<p>WordPress gibi CMS\u2019lerde cron taraf\u0131n\u0131 optimize etmek istiyorsan\u0131z, uygulama i\u00e7i wp-cron yerine ger\u00e7ek sistem cron kullanmak b\u00fcy\u00fck fark yarat\u0131r. Bu ge\u00e7i\u015fi ad\u0131m ad\u0131m anlatt\u0131\u011f\u0131m\u0131z <a href=\"https:\/\/www.dchost.com\/blog\/wordpresste-wp-cron-devre-disi-birakma-ve-gercek-cron-job-kurulumu\/\">WordPress\u2019te wp-cron devre d\u0131\u015f\u0131 b\u0131rakma ve ger\u00e7ek cron job kurulumu<\/a> rehberine mutlaka g\u00f6z at\u0131n.<\/p>\n<h3><span id=\"2_Veritabani_bakim_gorevleri\">2. Veritaban\u0131 bak\u0131m g\u00f6revleri<\/span><\/h3>\n<p>Veritaban\u0131 taraf\u0131nda da <strong>optimize<\/strong>, <strong>analyze<\/strong>, index bak\u0131m i\u015flerini cron\u2019a ba\u011flamak yayg\u0131n. Ancak bu i\u015fler trafik yo\u011funlu\u011funa duyarl\u0131 oldu\u011fundan, dikkatli zamanlanmal\u0131.<\/p>\n<pre class=\"language-bash line-numbers\"><code class=\"language-bash\"># Her gece 04:00'te tablo istatistiklerini g\u00fcncelle\n0 4 * * * \/usr\/bin\/mysqlcheck --optimize --all-databases \n  &gt;&gt; \/var\/log\/mysql-maintenance.log 2&gt;&amp;1\n<\/code><\/pre>\n<p>B\u00fcy\u00fck e-ticaret veritabanlar\u0131nda index optimizasyonu ve sorgu ayarlamalar\u0131 i\u00e7in daha geli\u015fmi\u015f bir rehber ar\u0131yorsan\u0131z, <a href=\"https:\/\/www.dchost.com\/blog\/woocommerce-ve-buyuk-katalog-siteleri-icin-mysql-indeksleme-ve-sorgu-optimizasyonu-rehberi\/\">WooCommerce ve b\u00fcy\u00fck katalog siteleri i\u00e7in MySQL indeksleme ve sorgu optimizasyonu rehberimizi<\/a> inceleyebilirsiniz.<\/p>\n<h3><span id=\"3_Sertifika_yenileme_ve_saglik_kontrolleri\">3. Sertifika yenileme ve sa\u011fl\u0131k kontrolleri<\/span><\/h3>\n<p>Let\u2019s Encrypt, \u00f6zel script\u2019ler veya ACME istemcileriyle sertifika yenileme i\u015flemlerini de cron\u2019a ba\u011flamak \u00e7ok yayg\u0131n. \u00d6rne\u011fin:<\/p>\n<pre class=\"language-bash line-numbers\"><code class=\"language-bash\"># Her g\u00fcn 03:00'te Let's Encrypt yenileme komutunu \u00e7al\u0131\u015ft\u0131r\n0 3 * * * \/usr\/bin\/certbot renew --quiet \n  &gt;&gt; \/var\/log\/letsencrypt-renew.log 2&gt;&amp;1\n<\/code><\/pre>\n<p>Ayr\u0131ca basit sa\u011fl\u0131k kontrolleri (disk doluluk oran\u0131, servislerin ayakta olup olmad\u0131\u011f\u0131 vb.) i\u00e7in ufak script\u2019ler yaz\u0131p bunlar\u0131 cron ile tetikleyerek, problem \u00e7\u0131kmadan \u00f6nce e-posta uyar\u0131s\u0131 alabilirsiniz.<\/p>\n<h2><span id=\"Guvenlik_ortam_degiskenleri_ve_hata_ayiklama\">G\u00fcvenlik, ortam de\u011fi\u015fkenleri ve hata ay\u0131klama<\/span><\/h2>\n<p>Crontab sat\u0131rlar\u0131 genelde k\u0131sa oldu\u011fundan, i\u015f ba\u015fta \u201c\u00e7al\u0131\u015f\u0131yor gibi\u201d g\u00f6r\u00fcn\u00fcr. Fakat ortam de\u011fi\u015fkenleri, PATH, kullan\u0131c\u0131 yetkileri ve loglama g\u00f6z ard\u0131 edildi\u011finde; i\u015fin ger\u00e7ekten do\u011fru \u00e7al\u0131\u015f\u0131p \u00e7al\u0131\u015fmad\u0131\u011f\u0131n\u0131 anlamak zorla\u015f\u0131r.<\/p>\n<h3><span id=\"1_Ortam_degiskenlerini_net_tanimlayin\">1. Ortam de\u011fi\u015fkenlerini net tan\u0131mlay\u0131n<\/span><\/h3>\n<p>Cron job\u2019lar\u0131, interaktif shell ortam\u0131n\u0131zdan farkl\u0131 bir ortamda \u00e7al\u0131\u015f\u0131r. \u00d6rne\u011fin:<\/p>\n<ul>\n<li><code>PATH<\/code> de\u011fi\u015fkeniniz daha dar olabilir, bu y\u00fczden komutlar bulunamayabilir.<\/li>\n<li><code>LANG<\/code> \/ <code>LC_ALL<\/code> gibi locale ayarlar\u0131 farkl\u0131 olabilir.<\/li>\n<li>Pyenv, nvm gibi ara\u00e7larla tan\u0131mlad\u0131\u011f\u0131n\u0131z versiyonlar cron ortam\u0131nda ge\u00e7erli olmayabilir.<\/li>\n<\/ul>\n<p>Bu y\u00fczden crontab\u2019in ba\u015f\u0131na ortam de\u011fi\u015fkenlerini a\u00e7\u0131k\u00e7a eklemek iyi bir al\u0131\u015fkanl\u0131kt\u0131r:<\/p>\n<pre class=\"language-bash line-numbers\"><code class=\"language-bash\">SHELL=\/bin\/bash\nPATH=\/usr\/local\/sbin:\/usr\/local\/bin:\/usr\/sbin:\/usr\/bin:\/sbin:\/bin\nLANG=en_US.UTF-8\n<\/code><\/pre>\n<p>\u00d6zellikle <code>python<\/code>, <code>php<\/code>, <code>node<\/code> gibi yorumlay\u0131c\u0131lar i\u00e7in tam yolu (<code>\/usr\/bin\/python3<\/code> gibi) yazmak hata riskini azalt\u0131r.<\/p>\n<h3><span id=\"2_Kullanici_ve_yetki_yonetimi\">2. Kullan\u0131c\u0131 ve yetki y\u00f6netimi<\/span><\/h3>\n<p>Root crontab\u2019ine her \u015feyi yazmak k\u0131sa vadede pratik g\u00f6r\u00fcnebilir ama g\u00fcvenlik a\u00e7\u0131s\u0131ndan risklidir. Temel prensip:<\/p>\n<ul>\n<li>Uygulama i\u015fleri, ilgili uygulama kullan\u0131c\u0131s\u0131n\u0131n (<code>www-data<\/code>, <code>deploy<\/code> vb.) crontab\u2019inde olsun.<\/li>\n<li>Sistem i\u015fleri (<code>apt update<\/code>, log temizli\u011fi vb.) root veya \u00f6zel sistem kullan\u0131c\u0131lar\u0131 alt\u0131nda kals\u0131n.<\/li>\n<li>Gerekmedik\u00e7e <code>sudo<\/code> kullanmay\u0131n; ihtiya\u00e7 varsa script i\u00e7inde rol ayr\u0131m\u0131n\u0131 net yap\u0131n.<\/li>\n<\/ul>\n<h3><span id=\"3_Loglama_ve_hata_ayiklama_stratejisi\">3. Loglama ve hata ay\u0131klama stratejisi<\/span><\/h3>\n<p>Cron job\u2019lar\u0131 ba\u015far\u0131s\u0131z oldu\u011funda, \u00e7o\u011fu zaman tek ipucunuz log\u2019lard\u0131r. Bu y\u00fczden her job i\u00e7in a\u00e7\u0131k bir log stratejiniz olsun:<\/p>\n<ul>\n<li>Standart \u00e7\u0131kt\u0131y\u0131 ve hatay\u0131 ayr\u0131 dosyalara y\u00f6nlendirmek isteyebilirsiniz: <code>&gt; stdout.log 2&gt; stderr.log<\/code><\/li>\n<li>Veya ikisini tek dosyada toplamak i\u00e7in <code>&gt;&gt; job.log 2&gt;&amp;1<\/code> kullanabilirsiniz.<\/li>\n<li>Hata ay\u0131klarken script\u2019i \u00f6nce elle \u00e7al\u0131\u015ft\u0131r\u0131n, ard\u0131ndan <code>bash -x script.sh<\/code> ile sat\u0131r sat\u0131r ne yapt\u0131\u011f\u0131n\u0131 g\u00f6r\u00fcn.<\/li>\n<\/ul>\n<p>Cron log\u2019lar\u0131 da\u011f\u0131t\u0131ma g\u00f6re genellikle <code>\/var\/log\/cron<\/code>, <code>\/var\/log\/syslog<\/code> veya <code>\/var\/log\/messages<\/code> i\u00e7inde tutulur. Hata ald\u0131\u011f\u0131n\u0131zda ilk bakman\u0131z gereken yer buras\u0131 olmal\u0131.<\/p>\n<h3><span id=\"4_Izleme_ve_alarmlar_ile_cronu_gorunur_kilmak\">4. \u0130zleme ve alarmlar ile cron\u2019u g\u00f6r\u00fcn\u00fcr k\u0131lmak<\/span><\/h3>\n<p>B\u00fcy\u00fck resimde, \u201ccron job \u00e7al\u0131\u015ft\u0131 m\u0131?\u201d sorusunu manuel log takibiyle cevaplamak s\u00fcrd\u00fcr\u00fclebilir de\u011fil. \u00d6zellikle kritik yedek ve bak\u0131m i\u015flerinde, izleme ve alarm sistemleriyle entegre olmak \u00e7ok i\u015fe yarar. DCHost m\u00fc\u015fterilerimiz i\u00e7in \u00f6nerdi\u011fimiz yollardan biri, cron job\u2019lar\u0131n\u0131n \u00e7\u0131kt\u0131lar\u0131n\u0131 Prometheus, Grafana ve benzeri ara\u00e7larla takip etmek.<\/p>\n<p>VPS \u00fczerinde temel izleme ve alarm kurulumu i\u00e7in <a href=\"https:\/\/www.dchost.com\/blog\/vps-izleme-ve-alarm-kurulumu-prometheus-grafana-ve-uptime-kuma-ile-baslangic\/\">Prometheus, Grafana ve Uptime Kuma ile VPS izleme rehberimizi<\/a> inceleyebilir, cron job\u2019lar\u0131n\u0131z\u0131 bu ekosisteme dahil ederek ba\u015far\u0131s\u0131z denemeleri otomatik bildirimle yakalayabilirsiniz.<\/p>\n<h2><span id=\"Cron_mu_systemd_timer_mi_Ne_zaman_hangisini_secmeli\">Cron mu systemd timer m\u0131? Ne zaman hangisini se\u00e7meli?<\/span><\/h2>\n<p>Modern Linux da\u011f\u0131t\u0131mlar\u0131nda (\u00f6zellikle systemd kullananlarda) art\u0131k bir\u00e7ok sistem i\u015fi cron yerine <strong>systemd timer<\/strong> ile yap\u0131l\u0131yor. \u0130kisi de zamanlanm\u0131\u015f g\u00f6rev \u00e7al\u0131\u015ft\u0131r\u0131yor; ancak baz\u0131 \u00f6nemli farklar var:<\/p>\n<ul>\n<li><strong>systemd timer:<\/strong> Servislerle do\u011fal b\u00fct\u00fcnle\u015fme, durum takibi, log entegrasyonu (journal), esnek zaman tan\u0131mlar\u0131 (takvim ifadeleri) ve ba\u011f\u0131ml\u0131l\u0131k y\u00f6netimi sunar.<\/li>\n<li><strong>cron:<\/strong> \u00c7ok hafif, kurulumu basit, neredeyse t\u00fcm Unix sistemlerde ayn\u0131 mant\u0131kla \u00e7al\u0131\u015f\u0131r.<\/li>\n<\/ul>\n<p>Genel bir kural olarak:<\/p>\n<ul>\n<li>Sadece bir komut\/script \u00e7al\u0131\u015ft\u0131racaksan\u0131z ve karma\u015f\u0131k ba\u011f\u0131ml\u0131l\u0131klar yoksa, cron genelde yeterlidir.<\/li>\n<li>Servis restart\/healthcheck gibi systemd ile s\u0131k\u0131 ba\u011fl\u0131 i\u015fler, yo\u011fun log ve durum takibi gerektiren g\u00f6revler i\u00e7in systemd timer daha uygundur.<\/li>\n<\/ul>\n<p>Bu konuyu derinlemesine anlatt\u0131\u011f\u0131m\u0131z <a href=\"https:\/\/www.dchost.com\/blog\/cron-mu-systemd-timer-mi-neden-nasil-ve-ne-zaman-hangisini-secmeli\/\">cron mu systemd timer m\u0131, ne zaman hangisini se\u00e7meli?<\/a> yaz\u0131m\u0131zda, ger\u00e7ek senaryolar \u00fczerinden hangi durumda hangi yakla\u015f\u0131m\u0131 \u00f6nerdi\u011fimizi bulabilirsiniz. \u00d6zellikle b\u00fcy\u00fck \u00f6l\u00e7ekte DCHost VPS k\u00fcmeleri y\u00f6netiyorsan\u0131z, bu ayr\u0131m ciddi anlamda i\u015finizi kolayla\u015ft\u0131r\u0131r.<\/p>\n<h2><span id=\"DCHost_altyapisinda_crontab_planlarken_pratik_oneriler\">DCHost altyap\u0131s\u0131nda crontab planlarken pratik \u00f6neriler<\/span><\/h2>\n<p>Cron job\u2019lar\u0131n\u0131n nas\u0131l ve nereden y\u00f6netilece\u011fi, kulland\u0131\u011f\u0131n\u0131z hosting modeline g\u00f6re de de\u011fi\u015fiyor. DCHost\u2019ta <a href=\"https:\/\/www.dchost.com\/tr\/web-hosting\">payla\u015f\u0131ml\u0131 hosting<\/a>, VPS, dedicated ve colocation taraf\u0131nda s\u0131k g\u00f6rd\u00fc\u011f\u00fcm\u00fcz senaryolara g\u00f6re baz\u0131 pratik \u00f6neriler:<\/p>\n<h3><span id=\"1_Paylasimli_hosting_ve_kontrol_panelli_ortamlar\">1. Payla\u015f\u0131ml\u0131 hosting ve kontrol panelli ortamlar<\/span><\/h3>\n<p>cPanel veya DirectAdmin gibi panellerde, cron job\u2019lar genelde web aray\u00fcz\u00fc \u00fczerinden y\u00f6netilir. Bu, \u00f6zellikle teknik olmayan kullan\u0131c\u0131lar i\u00e7in b\u00fcy\u00fck kolayl\u0131k sa\u011flar. Ancak, yine de yukar\u0131da bahsetti\u011fimiz en iyi uygulamalar\u0131 (tam yol kullanmak, log y\u00f6nlendirmek, flock ile kilitlemek) paneldeki alanlara da yans\u0131tman\u0131z gerekir.<\/p>\n<p>cPanel\/DirectAdmin \u00fczerinde cron job tan\u0131mlamay\u0131 ad\u0131m ad\u0131m anlatt\u0131\u011f\u0131m\u0131z <a href=\"https:\/\/www.dchost.com\/blog\/cpanel-ve-directadminde-otomatik-gorevler-planlama-cron-job-ile-yedek-rapor-ve-bakim-isleri\/\">otomatik g\u00f6revler planlama rehberimize<\/a> g\u00f6z atarak, panel aray\u00fcz\u00fcndeki ayarlar\u0131 bu makaledeki prensiplerle birle\u015ftirebilirsiniz.<\/p>\n<h3><span id=\"2_DCHost_Linux_VPS_ve_dedicated_sunucularda_crontab_yaklasimi\">2. DCHost Linux VPS ve dedicated sunucularda crontab yakla\u015f\u0131m\u0131<\/span><\/h3>\n<p>VPS veya dedicated sunucularda root eri\u015fiminiz oldu\u011fu i\u00e7in, cron yap\u0131s\u0131n\u0131 daha esnek tasarlayabilirsiniz. Bizim \u00f6nerdi\u011fimiz yakla\u015f\u0131m:<\/p>\n<ul>\n<li><strong>\/etc\/cron.d\/<\/strong> alt\u0131nda proje bazl\u0131 dosyalar olu\u015fturun (\u00f6rn: <code>project1<\/code>, <code>project2<\/code>).<\/li>\n<li>Her dosyada ilgili kullan\u0131c\u0131y\u0131 a\u00e7\u0131k\u00e7a yaz\u0131n: <code>*\/5 * * * * www-data \/usr\/local\/bin\/job.sh<\/code><\/li>\n<li>Uygulama kodunuzun i\u00e7inde <code>cron.php<\/code> tarz\u0131 bir u\u00e7 nokta yerine, CLI script kullan\u0131n.<\/li>\n<li>\u00d6nemli job\u2019lar\u0131 version control alt\u0131nda tuttu\u011funuz <code>scripts\/<\/code> klas\u00f6r\u00fcne al\u0131n.<\/li>\n<\/ul>\n<p>B\u00f6ylece cron yap\u0131land\u0131rman\u0131z da kodunuz gibi izlenebilir ve ta\u015f\u0131nabilir olur. DCHost \u00fczerindeki projelerinizde, birden fazla VPS veya dedicated sunucu aras\u0131nda benzer cron yap\u0131land\u0131rmalar\u0131n\u0131 Ansible\/Terraform gibi altyap\u0131 ara\u00e7lar\u0131yla da\u011f\u0131tman\u0131z da kolayla\u015f\u0131r.<\/p>\n<h3><span id=\"3_Colocation_veya_karma_mimarilerde_cron_koordinasyonu\">3. Colocation veya karma mimarilerde cron koordinasyonu<\/span><\/h3>\n<p>Colocation veya karma (on-prem + DCHost) mimarilerde, tek bir cron tablosu yerine \u00e7ok say\u0131da sunucuda da\u011f\u0131lm\u0131\u015f job set\u2019leriyle u\u011fra\u015f\u0131rs\u0131n\u0131z. Bu durumda:<\/p>\n<ul>\n<li>Kritik job\u2019lar i\u00e7in merkezi bir izleme\/alerting kurun (\u00f6rne\u011fin her job sonunda \u201csuccess\u201d metri\u011fi yazd\u0131rmak).<\/li>\n<li>Yedekleme ve rapor i\u015flerinin ayn\u0131 anda ayn\u0131 kaynaklar\u0131 zorlamamas\u0131na dikkat edin (\u00f6rne\u011fin ayn\u0131 NAS\u2019a ayn\u0131 anda 5 sunucudan b\u00fcy\u00fck yedek atmak gibi).<\/li>\n<li>Gerekirse baz\u0131 a\u011f\u0131r i\u015fleri <strong>queue\/kuyruk sistemlerine<\/strong> kayd\u0131r\u0131p cron\u2019u sadece tetikleyici olarak kullan\u0131n.<\/li>\n<\/ul>\n<h2><span id=\"Sonuc_Saglam_bir_cron_stratejisi_ile_altyapiyi_guvence_altina_almak\">Sonu\u00e7: Sa\u011flam bir cron stratejisi ile altyap\u0131y\u0131 g\u00fcvence alt\u0131na almak<\/span><\/h2>\n<p>Linux crontab, do\u011fru kullan\u0131ld\u0131\u011f\u0131nda yedekleme, raporlama ve bak\u0131m i\u015flerinin omurgas\u0131n\u0131 g\u00fcvenle ta\u015f\u0131yabilen, son derece g\u00fc\u00e7l\u00fc ama ayn\u0131 zamanda sade bir ara\u00e7. Yanl\u0131\u015f kullan\u0131ld\u0131\u011f\u0131nda ise sessizce ba\u015far\u0131s\u0131z olan job\u2019lar, eksik yedekler ve kimsenin fark etmedi\u011fi hatalar anlam\u0131na gelebiliyor. Bu rehberde; zamanlama s\u00f6z diziminden flock ile kilitlemeye, loglama ve hata ay\u0131klamadan, DCHost altyap\u0131s\u0131nda pratik kullan\u0131ma kadar geni\u015f bir \u00e7er\u00e7evede en iyi uygulamalar\u0131 toplamaya \u00e7al\u0131\u015ft\u0131k.<\/p>\n<p>\u015eimdi yapabilece\u011finiz somut ad\u0131mlar:<\/p>\n<ul>\n<li>Mevcut cron job\u2019lar\u0131n\u0131z\u0131 g\u00f6zden ge\u00e7irip, her biri i\u00e7in \u201clog var m\u0131, kilitleme var m\u0131, sorumlu kullan\u0131c\u0131 do\u011fru mu?\u201d sorular\u0131n\u0131 sorun.<\/li>\n<li>Yedekleme taraf\u0131nda 3-2-1 stratejisine ne kadar yak\u0131n oldu\u011funuzu de\u011ferlendirin ve eksik halkalar\u0131 cron ile tamamlay\u0131n.<\/li>\n<li>Kritik job\u2019lar\u0131n\u0131z i\u00e7in izleme ve alarm mekanizmalar\u0131n\u0131 devreye al\u0131n.<\/li>\n<\/ul>\n<p>E\u011fer DCHost \u00fczerinde payla\u015f\u0131ml\u0131 hosting, Linux VPS, dedicated sunucu veya colocation hizmeti kullan\u0131yorsan\u0131z ve cron mimarinizi yeniden ele almak istiyorsan\u0131z, altyap\u0131 ekibimizle birlikte mevcut durumu analiz edip size \u00f6zel bir plan \u00e7\u0131karabiliriz. Sa\u011flam bir cron stratejisi kuruldu\u011funda, yedek, rapor ve bak\u0131m i\u015flerinin \u201coldu mu, olmad\u0131 m\u0131?\u201d stresinden kurtulup, uygulaman\u0131z\u0131n as\u0131l de\u011fer yaratt\u0131\u011f\u0131 alanlara odaklanmak \u00e7ok daha kolay hale geliyor.<\/p>\n<\/div>","protected":false},"excerpt":{"rendered":"<p>\u0130&ccedil;indekiler1 Linux crontab ile otomasyonun omurgas\u0131n\u0131 kurmak2 Linux crontab temelleri: Ne, nerede, nas\u0131l \u00e7al\u0131\u015f\u0131r?3 Cron zamanlama s\u00f6z dizimini do\u011fru anlamak4 Yedekleme i\u015fleri i\u00e7in g\u00fcvenli cron stratejisi4.1 1. Yedekleme script\u2019ini ayr\u0131 tutun, crontab\u2019e minimum yaz\u0131n4.2 2. 3-2-1 yedek stratejisini cron ile hayata ge\u00e7irmek4.3 3. Uzak (object storage) yedekleri cron ile senkronize etmek4.4 4. Performans ve trafik [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":3527,"comment_status":"","ping_status":"","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[26],"tags":[],"class_list":["post-3526","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-teknoloji"],"_links":{"self":[{"href":"https:\/\/www.dchost.com\/blog\/wp-json\/wp\/v2\/posts\/3526","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.dchost.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.dchost.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.dchost.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.dchost.com\/blog\/wp-json\/wp\/v2\/comments?post=3526"}],"version-history":[{"count":0,"href":"https:\/\/www.dchost.com\/blog\/wp-json\/wp\/v2\/posts\/3526\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.dchost.com\/blog\/wp-json\/wp\/v2\/media\/3527"}],"wp:attachment":[{"href":"https:\/\/www.dchost.com\/blog\/wp-json\/wp\/v2\/media?parent=3526"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.dchost.com\/blog\/wp-json\/wp\/v2\/categories?post=3526"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.dchost.com\/blog\/wp-json\/wp\/v2\/tags?post=3526"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}