{"id":261,"title":"Yaz\u0131l\u0131mc\u0131lar \u0130\u00e7in Hayat Kurtaran Linux Komutlar\u0131 ve P\u00fcf Noktalar\u0131","content":"<p>Geli\u015ftiricilere y\u00f6nelik bu g\u00fc\u00e7l\u00fc Linux komutlar\u0131yla \u00fcretkenli\u011finizi art\u0131r\u0131n!<\/p><p>Komut sat\u0131r\u0131 aray\u00fcz\u00fc \u00e7o\u011fu teknoloji profesyoneli, \u00f6zellikle de geli\u015ftiriciler ve sistem y\u00f6neticileri i\u00e7in ekmek ve tereya\u011f\u0131d\u0131r. \u0130ster komut dosyalar\u0131 yaz\u0131yor olun, ister sunucular\u0131 yap\u0131land\u0131r\u0131yor olun, ister g\u00f6revleri otomatikle\u015ftiriyor olun, Linux komutlar\u0131n\u0131 nas\u0131l kullanaca\u011f\u0131n\u0131z\u0131 bilmek size saatlerce \u00e7al\u0131\u015fmaktan tasarruf ettirebilir.<\/p><p>Bu makalede, e\u011fer bir geli\u015ftiriciyseniz hayat\u0131n\u0131z\u0131 kolayla\u015ft\u0131rabilecek be\u015f komut sat\u0131r\u0131 hilesini inceleyece\u011fiz. Bunlar sadece \u201cbilinmesi g\u00fczel\u201d k\u0131sayollar de\u011fil, ayn\u0131 zamanda size zaman kazand\u0131racak ve terminalle etkile\u015fimlerinizi \u00e7ok daha verimli hale getirecek, oyunun kurallar\u0131n\u0131 de\u011fi\u015ftiren \u015feylerdir.<\/p><p>mkdir<\/p><p>Her dizini tek tek olu\u015fturmak yerine mkdir ve {} parantezlerini kullanarak t\u00fcm bunlar\u0131 tek bir komutta birle\u015ftirebilirsiniz. Bu, dizin kombinasyonlar\u0131n\u0131 verimli bir \u015fekilde olu\u015fturman\u0131za olanak tan\u0131r.<\/p><p>mkdirmkdir -p {dev,test,prod}\/{backend,frontend}<\/p><p>-p bayra\u011f\u0131, mkdir'e gerekti\u011fi gibi \u00fcst dizinler olu\u015fturmas\u0131n\u0131 s\u00f6yler (yani, \u00fcst dizinler hen\u00fcz mevcut de\u011filse hata atmaz).<\/p><p>mkdir<\/p><p>\u0130lk set {dev,test,prod} farkl\u0131 ortamlar i\u00e7in dizinler olu\u015fturur.<\/p><p>{dev,test,prod}<\/p><p>\u0130kinci set {backend,frontend} farkl\u0131 hizmetler i\u00e7in dizinler olu\u015fturur.<\/p><p>{backend,frontend}<\/p><p>Bu y\u00f6ntem, \u00f6zellikle karma\u015f\u0131k klas\u00f6r yap\u0131lar\u0131na sahip b\u00fcy\u00fck projeler kurdu\u011funuzda \u00f6nemli \u00f6l\u00e7\u00fcde zaman tasarrufu sa\u011flar ve insan hatas\u0131n\u0131 azalt\u0131r. Her kombinasyonu manuel olarak yazmak yerine, bunlar\u0131 k\u0131sa ve \u00f6z bir komutla tan\u0131mlayabilirsiniz.<\/p><p><strong>Tekrar tekrar cd .. Kullanmak Yerine cd - ile Geri D\u00f6n\u00fcn.<\/strong><\/p><p><strong>cd ..<\/strong> <strong>cd -<\/strong><\/p><p>Bir programc\u0131 olarak kendinizi derinlemesine i\u00e7 i\u00e7e ge\u00e7mi\u015f dizinler i\u00e7inde \u00e7al\u0131\u015f\u0131rken bulman\u0131z yayg\u0131nd\u0131r. \u00d6rne\u011fin projenizin k\u00f6k dizininden kod, yap\u0131land\u0131rma dosyalar\u0131 veya g\u00fcnl\u00fckler i\u00e7in alt dizinlere ge\u00e7iyor olabilirsiniz. Ancak ba\u015flad\u0131\u011f\u0131n\u0131z yere d\u00f6nme zaman\u0131 geldi\u011finde, manuel olarak birden \u00e7ok kez cd .. yazarak geri d\u00f6nmek sinir bozucu ve hataya a\u00e7\u0131k hale gelebilir.<\/p><p>cd ..<\/p><blockquote><p>\/home\/user\/projects\/webapp\/src\/frontend\/components<\/p><\/blockquote><p>\/home\/user\/projects\/webapp\/src\/frontend\/components<\/p><p>Proje k\u00f6k\u00fcne d\u00f6nmek i\u00e7in normalde a\u015fa\u011f\u0131daki gibi birka\u00e7 kez cd .. yazman\u0131z gerekebilir:<\/p><p>cd ..<\/p><blockquote><p>cd ..<br>cd ..<br>cd ..<br>cd ..<\/p><\/blockquote><p>cd ..<br>cd ..<br>cd ..<br>cd ..<\/p><p>Bunlar \/home\/user\/projects\/'a geri d\u00f6nmek i\u00e7in gereken d\u00f6rt ayr\u0131 komuttur. Bu sadece s\u0131k\u0131c\u0131 de\u011fil, ayn\u0131 zamanda nereden geldi\u011finizi unutmak da kolayd\u0131r.<\/p><p>\/home\/user\/projects\/<\/p><p>\u0130\u015fte daha basit, daha h\u0131zl\u0131 bir alternatif: \u0130\u00e7 i\u00e7e ge\u00e7mi\u015f bir yap\u0131da ne kadar derine inmi\u015f olursan\u0131z olun, an\u0131nda \u00f6nceki dizininize d\u00f6nmek i\u00e7in cd - komutunu kullan\u0131n.<\/p><p>cd -cd -<\/p><p>cd - komutu \u00f6nceki dizini bellekte saklar, b\u00f6ylece onu kulland\u0131\u011f\u0131n\u0131zda mevcut dizininizi son dizinle de\u011fi\u015ftirir. Bu, \u00f6zellikle \u00e7al\u0131\u015fan bir dizin ile derinlemesine i\u00e7 i\u00e7e ge\u00e7mi\u015f bir dizin aras\u0131nda ge\u00e7i\u015f yapt\u0131\u011f\u0131n\u0131zda, iki dizin aras\u0131nda ileri geri gezinmenin son derece etkili bir yoludur.<\/p><p>cd -<\/p><p>Bu y\u00f6ntem \u00f6zellikle hata ay\u0131klarken veya bir projenin birden fazla b\u00f6l\u00fcm\u00fcnde \u00e7al\u0131\u015f\u0131rken kullan\u0131\u015fl\u0131d\u0131r. Projenin k\u00f6k\u00fc ile derin bir alt dizini aras\u0131nda s\u0131k s\u0131k ge\u00e7i\u015f yapman\u0131z gerekiyorsa, cd - sizi uzun yollar yazmaktan veya ad\u0131m ad\u0131m yukar\u0131 gitmekten kurtar\u0131r.<\/p><p>cd - touch<\/p><p>\u0130ster test dosyalar\u0131, ister yer tutucular veya g\u00fcnl\u00fckler olu\u015fturuyor olun, birden fazla dosya olu\u015fturmak geli\u015ftiricilerin ortak bir g\u00f6revidir. Normalde dosyalar\u0131 birer birer olu\u015fturabilseniz de, \u00e7ok say\u0131da dosya i\u00e7in bunu manuel olarak yapmak k\u00fclfetli hale gelir. Neyse ki Linux, touch ve parantez {} i\u00e7indeki bir dizi say\u0131y\u0131 kullanarak tek bir komutla birden fazla dosya olu\u015fturman\u0131n bir yolunu sunuyor.<\/p><p>touch<\/p><p>test1.txt , test2.txt gibi bir dizi test senaryosu i\u00e7in test100.txt'ye kadar 100 numaral\u0131 dosya olu\u015fturman\u0131z gerekti\u011fini d\u00fc\u015f\u00fcn\u00fcn. Bunu tek tek touch komutlar\u0131yla manuel olarak yapmak \u015funa benzer:<\/p><p>test1.txt test2.txt test100.txt touch<\/p><blockquote><p>touch test1.txt<br>touch test2.txt<br>touch test3.txt<br>\u2026<br>touch test100.txt<\/p><\/blockquote><p>touch test1.txt<br>touch test2.txt<br>touch test3.txt<br>\u2026<br>touch test100.txt<\/p><p>Tek seferde h\u0131zl\u0131 bir \u015fekilde birden fazla dosya olu\u015fturmak i\u00e7in touch komutunu parantez {} i\u00e7ine bir dizi say\u0131 koyarak kullanabilirsiniz<\/p><p>touchtouch test{1..100}.txttouch test{1..10}.txt<\/p><p>Dizininizde a\u015fa\u011f\u0131daki dosyalar\u0131 olu\u015fturur:<\/p><blockquote><p>test1.txt<br>test2.txt<br>test3.txt<br>\u2026<br>test10.txt<\/p><\/blockquote><p>test1.txt<br>test2.txt<br>test3.txt<br>\u2026<br>test10.txt<\/p><blockquote><p>history | awk \u2018{print $2}\u2019 | sort | uniq -c | sort -nr | head -n 10<\/p><\/blockquote><p>history | awk \u2018{print $2}\u2019 | sort | uniq -c | sort -nr | head -n 10<\/p><p>Bu komut zincirinin detayl\u0131 a\u00e7\u0131klamas\u0131:<\/p><ul><li>history: Komut ge\u00e7mi\u015fini listeler<\/li><li>awk '{print $2}': Her sat\u0131rdan komutu ay\u0131klar<\/li><li>sort: Alfabetik s\u0131ralama yapar<\/li><li>uniq -c: Tekrar say\u0131s\u0131n\u0131 sayar<\/li><li>sort -nr: Say\u0131ya g\u00f6re ters s\u0131ralama yapar<\/li><li>head -n 10: \u0130lk 10 sonucu g\u00f6sterir<\/li><li>history: Komut ge\u00e7mi\u015fini listeler<\/li><\/ul><p>history<\/p><ul><li>awk '{print $2}': Her sat\u0131rdan komutu ay\u0131klar<\/li><\/ul><p>awk '{print $2}'<\/p><ul><li>sort: Alfabetik s\u0131ralama yapar<\/li><\/ul><p>sort<\/p><ul><li>uniq -c: Tekrar say\u0131s\u0131n\u0131 sayar<\/li><\/ul><p>uniq -c<\/p><ul><li>sort -nr: Say\u0131ya g\u00f6re ters s\u0131ralama yapar<\/li><\/ul><p>sort -nr<\/p><ul><li>head -n 10: \u0130lk 10 sonucu g\u00f6sterir<\/li><\/ul><p>head -n 10echo \"alias gl='git log - oneline'\" &gt;&gt; ~\/.bashrc<br>echo \"alias gst='git status -sb'\" &gt;&gt; ~\/.bashrc<br>source ~\/.bashrc<\/p><p>Kod Tarama ve Arama<\/p><p># JavaScript dosyalar\u0131nda console.log aramak<br>find . -type f -name \"*.js\" -not -path \".\/node_modules\/*\" | xargs grep \"console.log\"<br># Belirli bir string'i birden fazla dosya tipinde aramak<br>find . -type f \\( -name \"*.js\" -o -name \"*.ts\" \\) | xargs grep \"TODO\"<\/p><p>Son de\u011fi\u015ftirilen dosyalar\u0131 listeleme<\/p><p>ls -lrt<\/p><p>Belirli bir s\u00fcre i\u00e7inde de\u011fi\u015ftirilmi\u015f dosyalar\u0131 bulma<\/p><p>find . -type f -mtime -7 # Son 7 g\u00fcnde de\u011fi\u015ftirilmi\u015f dosyalar<\/p><p>S\u00fcre\u00e7 \u0130zleme ve Y\u00f6netimi<\/p><h2>Belirli bir process\u2019i bulma ve y\u00f6netme<\/h2><p>ps aux | grep node<br>pkill -f \"node\"ps aux - sort=-%cpu | head -n 10# Anl\u0131k CPU ve Bellek kullan\u0131m\u0131<br>top -o %CPU<br>htop<br><br># Disk I\/O izleme<br>iostat -x 1# Son 100 sat\u0131r log takibi<br>tail -f -n 100 \/var\/log\/application.log<br><br># Belirli bir hatay\u0131 i\u00e7eren loglar\u0131 bulma<br>grep -r \"ERROR\" \/var\/log\/* | cut -d: -f2- | sort | uniq -c# 7 g\u00fcnden eski log dosyalar\u0131n\u0131 bulma ve silme<br>find \/var\/log -name \"*.log\" -type f -mtime +7 -exec rm {} \\;<\/p><h2>Port ve Ba\u011flant\u0131 \u0130zleme<\/h2><p># A\u00e7\u0131k portlar\u0131 listeleme<br>netstat -tuln<br><br># Ba\u011flant\u0131lar\u0131 izleme<br>ss -s<\/p><p><strong>HTTP \u0130steklerini Test Etme<\/strong><\/p><p># Basit HTTP iste\u011fi<br>curl -I https:\/\/api.example.com<br><br># Detayl\u0131 HTTP iste\u011fi<br>curl -v -X POST https:\/\/api.example.com\/data -d '{\"key\":\"value\"}'<br>&nbsp;<\/p><p>CTRL+R ile ge\u00e7mi\u015fte arama yapma<\/p><p># CTRL+R ile ge\u00e7mi\u015fte arama yapma<br># CTRL+R tu\u015funa tekrar basarak sonraki sonuca ge\u00e7me<br>&nbsp;<\/p><p>\u00c7oklu Terminal Y\u00f6netimi<\/p><p># Screen kullan\u0131m\u0131<br>screen -S session_name &nbsp;# Yeni oturum<br>screen -r &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;# Oturuma geri d\u00f6nme<br>CTRL+A+D &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; # Oturumdan ayr\u0131lma<\/p><p>Disk Kullan\u0131m\u0131 Analizi<\/p><p># Dizin boyutlar\u0131n\u0131 listeleme<br>du -sh *<br><br># En b\u00fcy\u00fck 10 dizini bulma<br>du -a \/ | sort -n -r | head -n 10# Dosya sistemi durumu<br>df -h<br><br># \u0130node kullan\u0131m\u0131<br>df -i# Sistem g\u00fcvenlik loglar\u0131n\u0131 kontrol etme<br>sudo grep \"authentication failure\" \/var\/log\/auth.log<br>sudo tail -f \/var\/log\/audit\/audit.log<br><br># A\u00e7\u0131k portlar\u0131 ve servisleri tarama<br>nmap localhost<br>netstat -tulpn# G\u00fcvenli izin ayarlar\u0131<br>chmod 644 $(find . -type f)<br>chmod 755 $(find . -type d)<br><br># SUID\/SGID dosyalar\u0131n\u0131 bulma<br>find \/ -type f \\( -perm -4000 -o -perm -2000 \\) -exec ls -l {} \\;# Veritaban\u0131 yedekleme<br>mysqldump -u username -p database_name &gt; backup.sql<br><br># Yedek geri y\u00fckleme<br>mysql -u username -p database_name &lt; backup.sql<br><br># B\u00fcy\u00fck tablolar ve boyutlar\u0131<br>SELECT table_name, table_rows, data_length\/1024\/1024 'Data MB'<br>FROM information_schema.tables<br>ORDER BY data_length DESC;<\/p><p>PostgreSQL Komutlar\u0131<\/p><p># Veritaban\u0131 yedekleme<br>pg_dump dbname &gt; backup.sql<br><br># Veritaban\u0131 geri y\u00fckleme<br>psql dbname &lt; backup.sql<br><br># Aktif ba\u011flant\u0131lar\u0131 listeleme<br>SELECT * FROM pg_stat_activity;<\/p><p>Docker Komutlar\u0131<\/p><p># Container y\u00f6netimi<br>docker ps -a<br>docker stats<br>docker system prune -a<br><br># Image y\u00f6netimi<br>docker images<br>docker rmi $(docker images -f \"dangling=true\" -q)<\/p><p>Kubernetes (K8s) Komutlar\u0131<\/p><p># Pod y\u00f6netimi<br>kubectl get pods -A<br>kubectl describe pod pod-name<br>kubectl logs pod-name -f<br><br># Servis kontrol\u00fc<br>kubectl get services<br>kubectl get deployments<\/p><p>Git \u0130\u015f Ak\u0131\u015f\u0131<\/p><p>Git Hooks<\/p><p>Sed Kullan\u0131m\u0131<\/p><p># Metin de\u011fi\u015ftirme<br>sed -i 's\/eski-text\/yeni-text\/g' dosya.txt<br><br># Belirli sat\u0131rlar\u0131 silme<br>sed -i '10,20d' dosya.txt<br><br># Sat\u0131r ekleme<br>sed -i '5i\\Yeni Sat\u0131r' dosya.txt<\/p><p>Awk Kullan\u0131m\u0131<\/p><p># Kolon i\u015flemleri<br>awk '{print $1,$4}' dosya.txt<br><br># Toplam hesaplama<br>awk '{sum += $3} END {print sum}' data.txt<br><br># Ko\u015fullu filtreleme<br>awk '$3 &gt; 1000 {print $0}' data.txt<\/p><p>Performans Analizi<\/p><p># CPU profili<br>perf top<br>perf record -F 99 -p `pgrep -n process-name`<br><br># Sistem \u00e7a\u011fr\u0131lar\u0131<br>strace -p process_id<br>ltrace .\/program<\/p><p>Fonksiyon \u00d6rnekleri<\/p><p># Hata yakalama<br>function error_handle() {<br>&nbsp; &nbsp; echo \"Hata: $1\" &gt;&amp;2<br>&nbsp; &nbsp; exit 1<br>}<br>trap 'error_handle \"Beklenmeyen hata!\"' ERR<br><br># Paralel i\u015flem<br>function parallel_process() {<br>&nbsp; &nbsp; for i in {1..10}; do<br>&nbsp; &nbsp; &nbsp; &nbsp; process_item $i &amp;<br>&nbsp; &nbsp; done<br>&nbsp; &nbsp; wait<br>}<\/p><p>Debug Teknikleri<\/p><p># Script debug modu<br>set -x &nbsp;# Debug ba\u015flat<br>set +x &nbsp;# Debug bitir<br><br># Detayl\u0131 hata ay\u0131klama<br>bash -x script.sh<\/p><p>G\u00fcvenlik Duvar\u0131 Y\u00f6netimi<\/p><p># UFW (Uncomplicated Firewall)<br>ufw status verbose<br>ufw allow 22\/tcp<br>ufw deny from 192.168.1.0\/24<br><br># iptables<br>iptables -L -n -v<br>iptables-save &gt; rules.backup<\/p><p>A\u011f Trafi\u011fi Analizi<\/p><p># tcpdump kullan\u0131m\u0131<br>tcpdump -i eth0 port 80<br>tcpdump -w capture.pcap<br><br># Wireshark CLI<br>tshark -i eth0 -f \"port 443\"<\/p><p><strong>Online E\u011fitimler<\/strong><\/p><ul><li>Linux Academy<\/li><li>Udemy Kurslar\u0131<\/li><li>Linux Foundation E\u011fitimleri<\/li><li>Linux Academy<\/li><li>Udemy Kurslar\u0131<\/li><li>Linux Foundation E\u011fitimleri<\/li><\/ul><p><strong>Dok\u00fcmantasyonlar<\/strong><\/p><ul><li>Man Pages<\/li><li>Kernel Dok\u00fcmantasyonu<\/li><li>Distro-spesifik Rehberler<\/li><li>Man Pages<\/li><li>Kernel Dok\u00fcmantasyonu<\/li><li>Distro-spesifik Rehberler<\/li><\/ul><p><strong>Topluluk Kaynaklar\u0131<\/strong><\/p><ul><li>Stack Overflow<\/li><li>Unix &amp; Linux Stack Exchange<\/li><li>GitHub Repositories<\/li><li>Stack Overflow<\/li><li>Unix &amp; Linux Stack Exchange<\/li><li>GitHub Repositories<\/li><\/ul><p>Bu geni\u015fletilmi\u015f rehber, Linux sistem y\u00f6netimi ve yaz\u0131l\u0131m geli\u015ftirme s\u00fcre\u00e7lerinde kar\u015f\u0131la\u015f\u0131labilecek \u00e7e\u015fitli senaryolar i\u00e7in kapsaml\u0131 bir kaynak sunmaktad\u0131r. Komutlar\u0131n ve tekniklerin d\u00fczenli pratik edilmesi, sistem y\u00f6netimi ve geli\u015ftirme s\u00fcre\u00e7lerinde verimlili\u011fi art\u0131racakt\u0131r.<\/p><p><a href=\"https:\/\/www.linkedin.com\/in\/mustafa-%C3%B6nder-ak%C3%B6z-23174592\/\">https:\/\/www.linkedin.com\/in\/mustafa-%C3%B6nder-ak%C3%B6z-23174592\/<\/a><\/p><p><a href=\"https:\/\/github.com\/onder7\">https:\/\/github.com\/onder7<\/a><\/p>","excerpt":"Geli\u015ftiricilere y\u00f6nelik bu g\u00fc\u00e7l\u00fc Linux komutlar\u0131yla \u00fcretkenli\u011finizi art\u0131r\u0131n!\r\nKomut sat\u0131r\u0131 aray\u00fcz\u00fc \u00e7o\u011fu teknoloji profesyoneli, \u00f6zellikle de geli\u015ftiriciler ve sistem y\u00f6neticileri i\u00e7in ekmek ve tereya\u011f\u0131d\u0131r. \u0130ster komut dosyalar\u0131 yaz\u0131yor olun, ister sunucular\u0131 yap\u0131land\u0131r\u0131yor olun, ister g\u00f6revleri...","created_at":"2024-12-29 11:35:45","updated_at":"2026-09-07 20:13:30","category_id":9,"view_count":671,"reading_time":9,"status":"published","editor_choice":0,"is_editor_choice":0,"published_at":"2024-12-29 11:35:45","featured_image":"resimyok.jpg","slug":"yazilimcilar-icin-hayat-kurtaran-linux-komutlari-ve-puf-noktalari","category_name":"Yaz\u0131l\u0131m","category_slug":"yazilim"}