Her Linux kullanıcısı gibi, ben de konsolu çok sık kullanıyorum. Hatta, bilgisayarıma fazla yüklendiğim zamanlarda, bilgisayarım bazı uygulamaları yapmayı aksattığından, komut satırı imdadıma yetişiyor diyebilirim. :)

Ben de bunun üzerine, komut satırını nasıl daha etkin kullanabilirim diye biraz araştırdım. Bildiğiniz gibi bir çok tanımlı komut kurulumla birlikte geliyor; ancak bazılarını daha sonradan yüklemek de mümkün. Ben bu yazımda kullanıcı için temel olan linux komutlarını anlatmak yerine, bazı yararlı sistem komutlarından bahsetmek istiyorum. Yeni kullanıcılar için ise e-bergi Kasım sayısındaki "Linux Komutları" adlı yazıyı tavsiye ediyorum. :) Bazı komutların işlevsel bazı seçeneklerini de tanıtacağım; ama tabii ki man sayfalarından bu komutlar ve değişik seçenekleri için çok daha ayrıntılı bilgilere ulaşılabilir.

Gelelim komutlara:

sudo: Devamında bir komut alır. Bu komutu tam yetkiyle (root olarak) yapabilmeyi sağlar. Komutu ilk kullandığınızda sizden root şifresini ister.

uname: Bulunduğunuz bilgisayarın sistem bilgisini verir. Yalın halde kullanıldığında sadece çekirdeğin ismini verirken, "-a" seçeneği ile çekirdeğin ismini, makinenin ağda görünen ismini, çekirdeğin sürümünü, versiyonunu, donanımın ismini, işlemci çeşidini ve işletim sistemini sırasıyla öğrenebiliriz.

ilke@meniac ~ $ uname -a
Linux meniac 2.6.18.8-86 #2 SMP Tue Jan 15 14:59:40 EET 2008 i686 Intel(R) Pentium(R) 4 CPU

ps: Komutu veren kullanıcının çalışmakta olan işlemlerini listeler. Tüm kullanıcıların bütün işlemlerini görmek için ise "aux" seçeneği ile kullanılır.

ilke@meniac ~ $ ps
PID TTY TIME CMD
3732 pts/2 00:00:00 bash
4261 pts/2 00:00:00 ps

lsof: Bilgisayarda çalışmakta olan işlemlerin açtığı dosyaları bilgileriyle birlikte listeler. Argüman olarak dosya verilirse, liste sadece o dosyayı açan işlemlerle sınırlı kalır. Seçenek olarak "-i" ile bir internet adresi veya ip adresi verilirse, o adreste herhangi bir portta açılmış dosyaları listeler. Adres verilmezse bütün ağ dosyalarını gösterir. "-c komut" şeklinde çalıştırıldığında ise o komutun o an açtığı dosyaları listeler.

ilke@meniac ~ $ lsof -c lsof
COMMAND PID USER FD TYPE DEVICE SIZE NODE NAME
lsof 4303 ilke rtd DIR 22,69 4096 2 /
lsof 4303 ilke txt REG 22,69 108376 520351 /usr/sbin/lsof
lsof 4303 ilke mem REG 22,69 1196120 334763 /lib/libc-2.3.6.so
lsof 4303 ilke mem REG 22,69 21544 261234 /usr/lib/gconv/gconv-modules.cache
lsof 4303 ilke mem REG 22,69 104684 265494 /usr/lib/locale/tr_TR.utf8/LC_CTYPE
lsof 4303 ilke mem REG 22,69 92856 334766 /lib/ld-2.3.6.so
...

kill: İşlem numarası verilerek belirtilen işlemi sonlandırır. "-9 -1" ile bütün işlemler sonlandırılabilir.

shred: Bir dosyayı içindekileri değiştirerek güvenli bir şekilde siler. "-v" seçeneği ile kullanıldığında silme işlemi esnasında tam olarak ne yaptığını da izleyebiliriz. :) Özellikle büyük dosyalarda uzun olan bekleme süresini böyle geçirmek daha yararlı olabilir.

ilke@meniac ~ $ cat shreddene.txt
deneme

ilke@meniac ~ $ shred -v shreddene.txt
shred: shreddene.txt: geçiş 1/25 (random)
shred: shreddene.txt: geçiş 2/25 (aaaaaa)
shred: shreddene.txt: geçiş 3/25 (666666)
shred: shreddene.txt: geçiş 4/25 (b6db6d)
shred: shreddene.txt: geçiş 5/25 (db6db6)
...
ilke@meniac ~ $ cat shreddene.txt
�b�=�U��]F����~)��A�e���Xm��u���&?8�Y�."qO��'���1t��!ķ�X[3-����yÞ��.1_�����Uۋ�wo�'��d�t����@)���t�;08p.Vza��%��f��������"ə���m�zby�'钄_���kK�[pG�$��N�ϰ�C�b|~����

du: Disk kullanımını gösterir. Argüman olarak verilen dizinin kullanımını, almazsa bulunduğu dizininkini listeler. Dizindeki her dosyanınkini listelemesi için "-a" seçeneği ile kullanılır. "-h" seçeneği ise okunabilir olması için kullanılır. "-sh" ise toplam kullanımı söyler.

ilke@meniac ~ $ du -h
8,0K ./.config/compiz/compizconfig
16K ./.config/compiz
8,0K ./.config/gtk-2.0
32K ./.config
172K ./.local/share/Trash
176K ./.local/share
180K ./.local

df: Dosya sistemlerinin boş alanını, kullanım oranını ve bağlanılan yerlerini gösterir. Argüman olarak verilen bir yer için, orası hakkında bilgi verir. Yine "-h" seçeneği geçerlidir.

ilke@meniac home $ df ilke
Dosyasistemi 1K-blok Dolu Boş Kull% Bağlanılan yer
/dev/hdd5 9598348 4144616 5258704 45% /

finger: Bir makineye bağlı olan kullanıcıları ve o kullanıcıların bağlanma yeri, bağlanma zamanı gibi bilgilerini listeler.

ilke@meniac ~ $ finger
Login Name Tty Idle Login Time Office Office Phone
ilke ilke *:0 Feb 20 13:13

w: Finger komutuna benzer ama sistemin kullanımını ve listelediği kullanıcıların işlemlerini de listeler. Komuttan sonra kullanıcı adı verilirse sadece o kullanıcının işlemleri listelenir.

ilke@meniac ~ $ w ilke
17:16:44 up 4:04, 4 users, load average: 0,66, 0,88, 0,83
USER TTY LOGIN @ IDLE JCPU PCPU WHAT
ilke :0 13:13 ?xdm? 34:42 0.05s /bin/sh /usr/kde/3.5/bin/startkde

nslookup: Genelde argüman olarak bir hostname veya ip adresi alır. Ip ve DNS bilgilerini gösterir. Argümansız kullanıldığında interaktif moda geçer.

ilke@meniac ~ $ nslookup yahoo.com
Server: 193.140.100.210
Address: 193.140.100.210#53 
Non-authoritative answer:
Name: yahoo.com
Address: 216.109.112.135
Name: yahoo.com
Address: 66.94.234.13

dig: Argüman olarak alan adı veya sunucu verildiğinde, bu argümanın DNS isim sunucuları hakkında bilgi toplayıp verir. Diğer DNS lookup’ların içinde en düzgün çıktı vereni ve en kullanışlısıdır. İkinci bir argüman olarak "ANY" kullanılırsa tüm DNS bilgisini, "MX" kullanılırsa e-posta dönüştürücüsünü, "A" kullanılırsa da ip adresini verir.Ayrıca "dig -x ip_adresi" kullanımında ise tersten izleyerek ip adresinin bağlı olduğu alan adını gösterir.

ilke@meniac ~ $ dig google.com 
; <<>> DiG 9.4.1-P1 <<>> google.com
;; global options: printcmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 49369 ;; flags: qr rd ra; QUERY: 1, ANSWER: 3, AUTHORITY: 4, ADDITIONAL: 4 ;; QUESTION SECTION: ;google.com. IN A ;; ANSWER SECTION: google.com. 266 IN A 64.233.167.99 google.com. 266 IN A 72.14.207.99 google.com. 266 IN A 64.233.187.99 ;; AUTHORITY SECTION: google.com. 141781 IN NS ns4.google.com. google.com. 141781 IN NS ns1.google.com. google.com. 141781 IN NS ns2.google.com. google.com. 141781 IN NS ns3.google.com. ;; ADDITIONAL SECTION: ns1.google.com. 66144 IN A 216.239.32.10 ns2.google.com. 132202 IN A 216.239.34.10 ns3.google.com. 132202 IN A 216.239.36.10 ns4.google.com. 54142 IN A 216.239.38.10 ;; Query time: 157 msec ;; SERVER: 193.140.100.210#53(193.140.100.210) ;; WHEN: Fri Mar 21 19:43:06 2008 ;; MSG SIZE rcvd: 212

netstat: Tüm ağ bağlantılarını gösterir. "-rn" ile ağ adreslerini ve routing tablolarını da görebiliriz. Diğer bir seçenek olan "-vat" ile tüm bağlantılar gösterilir.

ilke@meniac $ netstat -vat
Active Internet connections (servers and established)

Proto Recv-Q Send-Q Local Address Foreign Address State

tcp 0 0 localhost:hpssd *:* LISTEN

tcp 0 0 meniac.local:rdrmshc by2msg1131420.mixe:msnp ESTABLISHED

tcp 0 0 meniac.local:elad eh-in-f191.goo:www-http ESTABLISHED

tcp 0 0 localhost:10444 localhost:4745 ESTABLISHED

route: Routing tablolarını manuel olarak değiştirir veya gösterir. "-n" seçeneği sayısal olarak gösterir. Ayrıca "route add default <..>" default bir route eklerken, "route delete <..>" ise belirtilen routeu siler. Bu komuta "-v" seçeneğini verdiğimizde çıkan sonuç, deminki komutumuz netstat'ın "-r" seçeneğinin kullanılmasıyla aynıdır.

ilke@meniac $ /sbin/route -n

Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
192.168.2.0 0.0.0.0 255.255.255.0 U 0 0 0 eth0
127.0.0.0 127.0.0.1 255.0.0.0 UG 0 0 0 lo

nmap: Ağ üzerinde tarama yapılmasına olanak veren bir tarayıcıdır. Hangi sunucuların hangi hizmetleri verdiği bilgisinin, açık olan portların bir bilgisini sunarak öğrenilebilmesini sağlar. "ilginç portlar tablosu" (interesting ports table) ile bu portları gösterirken, port sayısı, protokol, hizmet adı ve durum bilgisini verir. Durum bilgisi açık(bağlantılar ve paketler için beklemede bir uygulama var), kapalı(böyle bir uygulama yok ama her an açılabilir), filtrelenmiş(nmap in bu bilgiye ulaşması engellenmiş) veya filtrelenmemiş(nmap e cevap verebilir fakat durumu belirlenemeyen) olabilir. Güvenlik açıklarının teşhis edilmesinde çok yararlı olan bu tarayıcı hakkında daha fazla bilgi için man sayfalarına bakabilirsiniz.

traceroute:Bilgisayarımızdan belirtilen ip adresine veya internet alanına kadar, paketlerimizin izlediği yolu listeler. Bu gerçekten yararlı bir komut; çünkü bir sunucuya başkaları bağlanırken biri bağlanamıyorsa, traceroute ile sorunun bulunması çok kolay, sorun olan yere geldiğinde hata verir. Bazen bunu kullanarak paketlerimizin nasıl şehirden şehire gezdiğini de görebiliriz. :)

ilke@meniac ~ $ traceroute blogspot.com
traceroute to blogspot.com (72.14.207.191), 30 hops max, 40 byte packets
1 189.167.2.1 (189.167.2.1) 0.289 ms 0.497 ms 0.596 ms
2 98.162.68.1 (98.162.68.1) 12.380 ms 18.490 ms 23.361 ms
3 gyt_t1_2-uls_t1_2.ttnet.net.tr (212.156.118.41) 67.048 ms * *

Sandığımdan çok daha uzun ve ayrıntılı bir yazı oldu, umarım bir o kadar da yararlı olabilir. :) Birinci kısım olarak düşündüğüm bu komut listemin ikinci bölümünde (yakında :) ) başka yararlı komutları da paylaşmaya çalışacağım. E-bergiyle kalin. :)