6.1. Sistem Kaynakları
Sisteminizin başarımını izleyebilmek çok önemlidir. Sistem kaynakları çok azalırsa, birçok soruna neden olabilir. Sistem kaynakları, bireysel kullanıcılar tarafından veya sisteminizin barındırabileceği e-posta veya HTML sayfaları gibi hizmetler tarafından kullanılabilir. Neler olduğunu bilme yeteneği, sistem yükseltmelerinin gerekip gerekmediğini veya bazı hizmetlerin başka bir makineye taşınması gerekip gerekmediğini belirlemeye yardımcı olabilir.
6.1.1. top
komutu
Bu komutlardan en yaygın olanı top(1) komutudur. top, sürekli olarak güncellenen sistem kaynakları kullanım raporunu görüntüler.
#
top
12:10:49 up 1 day, 3:47, 7 users, load average: 0.23, 0.19, 0.10 125 processes: 105 sleeping, 2 running, 18 zombie, 0 stopped CPU states: 5.1% user 1.1% system 0.0% nice 0.0% iowait 93.6% idle Mem: 512716k av, 506176k used, 6540k free, 0k shrd, 21888k buff Swap: 1044216k av, 161672k used, 882544k free 199388k cached PID USER PRI NI SIZE RSS SHARE STAT %CPU %MEM TIME CPU COMMAND 2330 root 15 0 161M 70M 2132 S 4.9 14.0 1000m 0 X 2605 weeksa 15 0 8240 6340 3804 S 0.3 1.2 1:12 0 kdeinit 3413 weeksa 15 0 6668 5324 3216 R 0.3 1.0 0:20 0 kdeinit 18734 root 15 0 1192 1192 868 R 0.3 0.2 0:00 0 top 1619 root 15 0 776 608 504 S 0.1 0.1 0:53 0 dhclient 1 root 15 0 480 448 424 S 0.0 0.0 0:03 0 init 2 root 15 0 0 0 0 SW 0.0 0.0 0:00 0 keventd 3 root 15 0 0 0 0 SW 0.0 0.0 0:00 0 kapmd 4 root 35 19 0 0 0 SWN 0.0 0.0 0:00 0 ksoftirqd_CPU0 9 root 25 0 0 0 0 SW 0.0 0.0 0:00 0 bdflush 5 root 15 0 0 0 0 SW 0.0 0.0 0:00 0 kswapd 10 root 15 0 0 0 0 SW 0.0 0.0 0:00 0 kupdated 11 root 25 0 0 0 0 SW 0.0 0.0 0:00 0 mdrecoveryd 15 root 15 0 0 0 0 SW 0.0 0.0 0:01 0 kjournald 81 root 25 0 0 0 0 SW 0.0 0.0 0:00 0 khubd 1188 root 15 0 0 0 0 SW 0.0 0.0 0:00 0 kjournald 1675 root 15 0 604 572 520 S 0.0 0.1 0:00 0 syslogd 1679 root 15 0 428 376 372 S 0.0 0.0 0:00 0 klogd 1707 rpc 15 0 516 440 436 S 0.0 0.0 0:00 0 portmap 1776 root 25 0 476 428 424 S 0.0 0.0 0:00 0 apmd 1813 root 25 0 752 528 524 S 0.0 0.1 0:00 0 sshd 1828 root 25 0 704 548 544 S 0.0 0.1 0:00 0 xinetd 1847 ntp 15 0 2396 2396 2160 S 0.0 0.4 0:00 0 ntpd 1930 root 24 0 76 4 0 S 0.0 0.0 0:00 0 rpc.rquotad
Raporun üst kısmında sistem süresi, çalışma süresi, işlemci (CPU) kullanımı, fiziksel ve takas bellek kullanımı ve süreç sayısı gibi bilgiler listelenir. Aşağıda, işlemci kullanımına göre sıralanmış işlemlerin bir listesi bulunmaktadır.
Çalışırken top çıktısını değiştirebilirsiniz.
i
'ye basarsanız, top artık boşta olan
süreçleri göstermez. Tekrar görmek için tekrar i
tuşuna
basın. M
'ye basmak, bellek kullanımına göre sıralar,
S
süreçlerin ne kadar süredir çalıştığına göre
sıralar ve P
tekrar işlemci kullanımına göre sıralar.
Görüntüleme seçeneklerine ek olarak, süreçleri top komutundan da değiştirebilirsiniz. Belirli bir kullanıcının sahip olduğu süreçleri görüntülemek için u
'yu, süreçleri sonlandırmak için k
'yı ve yeniden önceliklendirmek için r
'yi kullanabilirsiniz.
Süreçler hakkında daha ayrıntılı bilgi için /proc
dosya sistemine bakabilirsiniz. /proc
dosya sisteminde, sayısal adlara sahip bir dizi alt dizin bulacaksınız. Bu dizinler, o anda çalışan işlemlerin süreç kimlikleriyle ilişkilendirilir. Her dizinde, süreç hakkında bilgi içeren bir dizi dosya bulacaksınız.
/proc
DİZİNİNDEKİ DOSYALARDA DEĞİŞİKLİK YAPMAMALISINIZ, YAPARSANIZ SİSTEM SORUNLARINA SEBEP OLABİLİR!
6.1.2. iostat
komutu
iostat(1), geçerli CPU yük ortalamasını ve disk G/Ç bilgilerini görüntüler. Bu, disk G/Ç kullanımını izlemek için harika bir komuttur.
#
iostat
Linux 2.4.20-24.9 (myhost) 12/23/2003 avg-cpu: %user %nice %sys %idle 62.09 0.32 2.97 34.62 Device: tps Blk_read/s Blk_wrtn/s Blk_read Blk_wrtn dev3-0 2.22 15.20 47.16 1546846 4799520
2.4 çekirdekler için aygıtlar, aygıtın ana ve alt numaralarını kullanan adlardır. Bu durumda listelenen aygıt /dev/hda
'dır. iostat'ın verileri daha ayrıntılı göstermesini sağlamak için -x
seçeneğini kullanın.
#
iostat -x
Linux 2.4.20-24.9 (myhost) 12/23/2003 avg-cpu: %user %nice %sys %idle 62.01 0.32 2.97 34.71 Device: rrqm/s wrqm/s r/s w/s rsec/s wsec/s rkB/s wkB/s avgrq-sz avgqu-sz await svctm %util /dev/hdc 0.00 0.00 .00 0.00 0.00 0.00 0.00 0.00 0.00 2.35 0.00 0.00 14.71 /dev/hda 1.13 4.50 .81 1.39 15.18 47.14 7.59 23.57 28.24 1.99 63.76 70.48 15.56 /dev/hda1 1.08 3.98 .73 1.27 14.49 42.05 7.25 21.02 28.22 0.44 21.82 4.97 1.00 /dev/hda2 0.00 0.51 .07 0.12 0.55 5.07 0.27 2.54 30.35 0.97 52.67 61.73 2.99 /dev/hda3 0.05 0.01 .02 0.00 0.14 0.02 0.07 0.01 8.51 0.00 12.55 2.95 0.01
iostat(1) kılavuz sayfası, bu sütunların her birinin ne anlama geldiğine dair ayrıntılı bir açıklama içerir.
6.1.3. ps
komutu
ps(1) şu anda çalışan süreçlerin bir listesini sağlayacaktır. Bu komutun size sunduğu çok çeşitli seçenekler vardır.
Yaygın bir kullanım, şu anda çalışan tüm süreçleri listelemek olacaktır. Bunu yapmak için ps -ef komutunu kullanırsınız. (Bu komutun ekran çıktısı eklenemeyecek kadar büyük, aşağıya yalnızca çıktının bir bölümü alınmıştır.)
UID PID PPID C STIME TTY TIME CMD root 1 0 0 Dec22 ? 00:00:03 init root 2 1 0 Dec22 ? 00:00:00 [keventd] root 3 1 0 Dec22 ? 00:00:00 [kapmd] root 4 1 0 Dec22 ? 00:00:00 [ksoftirqd_CPU0] root 9 1 0 Dec22 ? 00:00:00 [bdflush] root 5 1 0 Dec22 ? 00:00:00 [kswapd] root 6 1 0 Dec22 ? 00:00:00 [kscand/DMA] root 7 1 0 Dec22 ? 00:01:28 [kscand/Normal] root 8 1 0 Dec22 ? 00:00:00 [kscand/HighMem] root 10 1 0 Dec22 ? 00:00:00 [kupdated] root 11 1 0 Dec22 ? 00:00:00 [mdrecoveryd] root 15 1 0 Dec22 ? 00:00:01 [kjournald] root 81 1 0 Dec22 ? 00:00:00 [khubd] root 1188 1 0 Dec22 ? 00:00:00 [kjournald] root 1675 1 0 Dec22 ? 00:00:00 syslogd -m 0 root 1679 1 0 Dec22 ? 00:00:00 klogd -x rpc 1707 1 0 Dec22 ? 00:00:00 portmap root 1813 1 0 Dec22 ? 00:00:00 /usr/sbin/sshd ntp 1847 1 0 Dec22 ? 00:00:00 ntpd -U ntp root 1930 1 0 Dec22 ? 00:00:00 rpc.rquotad root 1934 1 0 Dec22 ? 00:00:00 [nfsd] root 1942 1 0 Dec22 ? 00:00:00 [lockd] root 1943 1 0 Dec22 ? 00:00:00 [rpciod] root 1949 1 0 Dec22 ? 00:00:00 rpc.mountd root 1961 1 0 Dec22 ? 00:00:00 /usr/sbin/vsftpd /etc/vsftpd/vsftpd.conf root 2057 1 0 Dec22 ? 00:00:00 /usr/bin/spamd -d -c -a root 2066 1 0 Dec22 ? 00:00:00 gpm -t ps/2 -m /dev/psaux bin 2076 1 0 Dec22 ? 00:00:00 /usr/sbin/cannaserver -syslog -u bin root 2087 1 0 Dec22 ? 00:00:00 crond daemon 2195 1 0 Dec22 ? 00:00:00 /usr/sbin/atd root 2215 1 0 Dec22 ? 00:00:11 /usr/sbin/rcd weeksa 3414 3413 0 Dec22 pts/1 00:00:00 /bin/bash weeksa 4342 3413 0 Dec22 pts/2 00:00:00 /bin/bash weeksa 19121 18668 0 12:58 pts/2 00:00:00 ps -ef
İlk sütun sürecin sahibini gösterir. İkinci sütun süreç kimliğidir. Üçüncü sütun, üst süreç kimliğidir. Bu, süreci oluşturan veya başlatan süreçtir. Dördüncü sütun işlemci kullanımıdır (yüzde olarak). Beşinci sütun, süreç yeterince uzun süredir çalışıyorsa, başlatma tarihidir. Altıncı sütun, varsa, işlemle ilişkili tty'dir. Yedinci sütun topyekün işlemci kullanımıdır (çalışırken kullanılan toplam işlemci süresi). Sekizinci sütun, komutun kendisidir.
Bu bilgilerle, sisteminizde tam olarak neyin çalıştığını görebilir ve boşta kalmış veya sorunlara neden olan süreçleri sonlandırabilirsiniz.
6.1.4. vmstat
komutu
vmstat(1) komutu, sistem süreçleri, bellek, takas, G/Ç ve işlemciler için istatistikleri gösteren bir rapor gösterecektir. Bu istatistikler, komutun en son çalıştırıldığı zamandan itibaren elde edilen veriler kullanılarak oluşturulur. Hiç komut çalıştırılmaması durumunda, sistemin yeniden başlatılmasından itibaren elde edilen veriler kullanılır.
#
vmstat -a
procs -----------memory---------------swap-- -----io--- -system-- ------cpu----- r b swpd free inact active si so bi bo in cs us sy id wa st 1 0 0 2328840 3067588 638812 0 0 8 5 66 210 1 0 98 0 0
Aşağıdakiler vmstat(1) kılavuz sayfasından alınmıştır.
-
procs
(Süreçler) -
r: Çalıştırılabilir süreçlerin sayısı (çalışan veya çalışmayı bekleyen).b: G/Ç işlemlerinin tamamlanmasını bekleyen engellenen süreçlerin sayısı.
-
memory
(Bellek) -
Bunlar
--unit
seçeneğinden etkilenir.swpd: kullanılan takas belleği miktarı.free: kullanılmamış bellek miktarı.buff: tampon olarak kullanılan bellek miktarı.cache: önbellek olarak kullanılan bellek miktarı.inact: etkin olmayan bellek miktarı. (-a
seçeneği)active: etkin bellek miktarı. (-a
seçeneği) -
swap
(Takas) -
Bunlar
--unit
seçeneğinden etkilenir.si: Diskten takas edilen bellek miktarı/saniye.so: Diske takas edilen bellek miktarı/saniye. -
I/O
(G/Ç) -
bi: Blok aygıtından alınan blok miktarı/saniye.bo: Blok aygıtına gönderilen blok miktarı/saniye.
-
system
(Sistem) -
in: Sistem sayacı dahil, saniyedeki sistem kesmesi sayısı.cs: Saniyedeki bağlam değiştirme sayısı.
-
cpu
(İşlemci) -
Bunlar, toplam işlemci süresinin yüzdeleridir.us: Çekirdek dışı kod çalıştırmak için harcanan süre. (kullanıcı zamanı, çalışma süresi dahil)sy: Çekirdek kodunu çalıştırmak için harcanan süre. (Sistem zamanı)id: Boşta geçirilen süre. Linux 2.5.41'den önce buna G/Ç bekleme süresi dahildir.wa: G/Ç beklerken geçen süre. Linux 2.5.41'den önce, boşta geçen süre dahildir.st: Sanal bir makineden çalınan zaman. Linux 2.6.11 öncesi, bilinmiyor.
6.1.5. lsof
komutu
lsof(8) komutu, kullanımda olan her dosyanın bir listesini gösterir. Linux her şeyi bir dosya olarak kabul ettiğinden, bu liste çok uzun olabilir. Ancak, bu komut sorunların tanılanmasında yararlı olabilir. Bunun bir örneği, bir dosya sistemini ayırmak istemeniz, ancak size bunun kullanımda olduğunun bildirilmesidir. Kimin kullandığını görmek için dosya sisteminin adı ile bu komutu ve grep(1)'i kullanabilirsiniz.
Veya belirli bir süreç tarafından kullanılan tüm dosyaları görmek
istediğinizi varsayarsak lsof -p süreç-
kimliği
komutunu kullanabilirsiniz.
6.1.6. Daha Fazla Yardımcı Araç Bulmak
Hangi komut satırı araçlarının mevcut olduğu hakkında daha fazla bilgi edinmek için Kıvılcım Hindistan, Linux Kitapçığı adlı bir başvuru kılavuzu yazdı. Hangi araçların olduğunu ve bir dizi görevi nasıl yapacağınızı öğrenmek için iyi bir kaynaktır.