Dokumentáció/SL9.3/Adminisztráció/Segédprogramok
Minden bemutatott parancsnál megtalálhatók a vonatkozó kimenetek példái is. Ezekben a példákban az első sor maga a parancs (a dollárjel után). A megjegyzéseket szögletes zárójel ([...]) jelöli, és ha szükséges, a hosszú sorokat megtörtük. A hosszú sorok sortöréseit visszafelé dőlt törtvonal (\) jelzi.
$ command -x -y output line 1 output line 2 output line 3 is annoyingly long, so long that \ we have to break it output line 3 [...] output line 98 output line 99
A leírásokat rövidre szabtuk, hogy annyi segédprogramról eshessen szó, amennyiről csak lehetséges. A parancsokról további információ a kézikönyvoldalakon (man) olvasható. A legtöbb parancs kiadható a --help paraméterrel is; ennek hatására kiírja a használható paraméterek rövid listáját.
Nyitott fájlok listája: lsof
Egy adott folyamatazonosítóval (PID) rendelkező folyamathoz tartozó összes nyitott fájl listájának megtekintéséhez használja a -p paramétert. Ha például látni szeretné az aktuális parancsértelmező által használt összes fájlt, írja be a következőket:$ lsof -p $$ COMMAND PID USER FD TYPE DEVICE SIZE NODE NAME zsh 4694 jj cwd DIR 0,18 144 25487368 /suse/jj/t (totan:/real-home/jj) zsh 4694 jj rtd DIR 3,2 608 2 / zsh 4694 jj txt REG 3,2 441296 20414 /bin/zsh zsh 4694 jj mem REG 3,2 104484 10882 /lib/ld-2.3.3.so zsh 4694 jj mem REG 3,2 11648 20610 /usr/lib/zsh/4.2.0/zsh/rlimits.so [...] zsh 4694 jj mem REG 3,2 13647 10891 /lib/libdl.so.2 zsh 4694 jj mem REG 3,2 88036 10894 /lib/libnsl.so.1 zsh 4694 jj mem REG 3,2 316410 147725 /lib/libncurses.so.5.4 zsh 4694 jj mem REG 3,2 170563 10909 /lib/tls/libm.so.6 zsh 4694 jj mem REG 3,2 1349081 10908 /lib/tls/libc.so.6 zsh 4694 jj mem REG 3,2 56 12410 /usr/lib/locale/de_DE.utf8/LC_TELEPHONE [...] zsh 4694 jj mem REG 3,2 59 14393 /usr/lib/locale/en_US/LC_NUMERIC zsh 4694 jj mem REG 3,2 178476 14565 /usr/lib/locale/en_US/LC_CTYPE zsh 4694 jj mem REG 3,2 56444 20598 /usr/lib/zsh/4.2.0/zsh/computil.so zsh 4694 jj 0u CHR 136,48 50 /dev/pts/48 zsh 4694 jj 1u CHR 136,48 50 /dev/pts/48 zsh 4694 jj 2u CHR 136,48 50 /dev/pts/48 zsh 4694 jj 10u CHR 136,48 50 /dev/pts/48
A speciális $$ parancsértelmező-változót használtuk, amelynek az értéke a parancsértelmező folyamatazonosítója.
Az lsof parancs paraméterek nélkül kiadva minden éppen nyitott fájlt felsorol. Mivel gyakran fájlok ezrei vannak nyitva, mindegyiket ritkán érdemes kilistázni. Az összes fájl listája azonban a keresési funkciókkal kombinálva hasznos listákat eredményez. Ilyen például az összes karakteres eszköz listája:
$ lsof | grep CHR sshd 4685 root mem CHR 1,5 45833 /dev/zero sshd 4685 root mem CHR 1,5 45833 /dev/zero sshd 4693 jj mem CHR 1,5 45833 /dev/zero sshd 4693 jj mem CHR 1,5 45833 /dev/zero zsh 4694 jj 0u CHR 136,48 50 /dev/pts/48 zsh 4694 jj 1u CHR 136,48 50 /dev/pts/48 zsh 4694 jj 2u CHR 136,48 50 /dev/pts/48 zsh 4694 jj 10u CHR 136,48 50 /dev/pts/48 X 6476 root mem CHR 1,1 38042 /dev/mem lsof 13478 jj 0u CHR 136,48 50 /dev/pts/48 lsof 13478 jj 2u CHR 136,48 50 /dev/pts/48 grep 13480 jj 1u CHR 136,48 50 /dev/pts/48 grep 13480 jj 2u CHR 136,48 50 /dev/pts/48
Fájlokat használó felhasználók: fuser
Ez a parancs annak eldöntésére lehet hasznos, hogy jelenleg milyen folyamatok vagy felhasználók használnak bizonyos fájlokat. Tegyük fel például, hogy le szeretné csatolni az /mnt könyvtárhoz csatolt fájlrendszert. Az umount parancs kimenete: device is busy (az eszköz foglalt). Ekkor az fuser paranccsal meg lehet állapítani, mely folyamatok is használják pillanatnyilag az eszközt.$ fuser -v /mnt/* USER PID ACCESS COMMAND /mnt/notes.txt jj 26597 f.... less
A less folyamat lezárását követően (amely egy másik terminálon futott), a fájlrendszer sikeresen lecsatolható.
Fájltulajdonságok: stat
A stat parancs megjeleníti a fájltulajdonságokat:$ stat xml-doc.txt File: `xml-doc.txt' Size: 632 Blocks: 8 IO Block: 4096 regular file Device: eh/14d Inode: 5938009 Links: 1 Access: (0644/-rw-r--r--) Uid: (11994/ jj) Gid: ( 50/ suse) Access: 2004-04-27 20:08:58.000000000 +0200 Modify: 2003-06-03 15:29:34.000000000 +0200 Change: 2003-07-23 17:48:27.000000000 +0200
A --filesystem paraméter részletesen megadja annak a fájlrendszernek a tulajdonságait, amelyben a megadott fájl található:
$ stat . --filesystem File: "." ID: 0 Namelen: 255 Type: ext2/ext3 Blocks: Total: 19347388 Free: 17831731 Available: 16848938 Size: 4096 Inodes: Total: 9830400 Free: 9663967
Ha a z parancsértelmezőt (zsh) használja, meg kell adni az /usr/bin/stat elérési útvonalat, mivel a z parancsértelmező egy beépített stat paranccsal rendelkezik, amelynek eltérő paraméterei és másféle kimeneti formátuma van:
% type stat stat is a shell builtin % stat . device 769 inode 4554808 mode 16877 nlink 12 uid 11994 gid 50 rdev 0 size 4096 atime 1091536882 mtime 1091535740 ctime 1091535740 blksize 4096 blocks 8 link
Információ SCSI-eszközökről: scsiinfo
Az scsiinfo parancs kiírja az SCSI-eszközök jellemzőit. A -l paraméter használatával minden, a rendszer által ismert SCSI-eszköz kilistázható (hasonló információkhoz juthatunk az lsscsi használatával is). Az alábbiakban az scsiinfo -i /dev/sda parancs kimenete látható, amely egy merevlemezről ad információt. A -a paraméter még több adatot tesz láthatóvá.Inquiry command --------------- Relative Address 0 Wide bus 32 0 Wide bus 16 1 Synchronous neg. 1 Linked Commands 1 Command Queueing 1 SftRe 0 Device Type 0 Peripheral Qualifier 0 Removable? 0 Device Type Modifier 0 ISO Version 0 ECMA Version 0 ANSI Version 3 AENC 0 TrmIOP 0 Response Data Format 2 Vendor: FUJITSU Product: MAS3367NP Revision level: 0104A0K7P43002BE
A fentiekben egy hibalista látható, egy merevlemez hibás blokkjainak két táblájával: az elsőt a gyártó adta meg (gyártói tábla), a második a működés közben látható hibás blokkok listája (növekedési tábla). Ha a növekedési tábla bejegyzéseinek száma emelkedik, érdemes lecserélni a merevlemezt.
Folyamatok: top
A top parancs (a "table of processes", folyamattábla kifejezés) megjelenít egy folyamatlistát, amely két másodpercenként frissül. A program lezárásához nyomja meg a Q gombot. A -n 1 paraméter a folyamatlista egyetlen megjelenése után lezárja a programot. Az alábbiakban egy példa a top -n 1 parancs kimenetére:top - 14:19:53 up 62 days, 3:35, 14 users, load average: 0.01, 0.02, 0.00 Tasks: 102 total, 7 running, 93 sleeping, 0 stopped, 2 zombie Cpu(s): 0.3% user, 0.1% system, 0.0% nice, 99.6% idle Mem: 514736k total, 497232k used, 17504k free, 56024k buffers Swap: 1794736k total, 104544k used, 1690192k free, 235872k cached PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ Command 1426 root 15 0 116m 41m 18m S 1.0 8.2 82:30.34 X 20836 jj 15 0 820 820 612 R 1.0 0.2 0:00.03 top 1 root 15 0 100 96 72 S 0.0 0.0 0:08.43 init 2 root 15 0 0 0 0 S 0.0 0.0 0:04.96 keventd 3 root 34 19 0 0 0 S 0.0 0.0 0:00.99 ksoftirqd_CPU0 4 root 15 0 0 0 0 S 0.0 0.0 0:33.63 kswapd 5 root 15 0 0 0 0 S 0.0 0.0 0:00.71 bdflush [...] 1362 root 15 0 488 452 404 S 0.0 0.1 0:00.02 nscd 1363 root 15 0 488 452 404 S 0.0 0.1 0:00.04 nscd 1377 root 17 0 56 4 4 S 0.0 0.0 0:00.00 mingetty 1379 root 18 0 56 4 4 S 0.0 0.0 0:00.01 mingetty 1380 root 18 0 56 4 4 S 0.0 0.0 0:00.01 mingetty
Ha megnyomja az F billentyűt a top program futtatása közben, akkor megjelenik egy menü, amellyel jelentősen módosítható a kimenet formátuma.
Az -U UID paraméter csak egy adott felhasználóhoz rendelt folyamatokat figyeli. Helyettesítse be az UID értéket a felhasználó azonosítójával. A top -U $(id -u felhasználónév) parancs visszaadja a felhasználó azonosítóját a felhasználónév alapján, és megjeleníti a folyamatait.
Folyamatlista: ps
A ps parancs folyamatlistát készít. Ha az r paramétert is megadtuk, akkor csak a jelenleg feldolgozási időt igénylő folyamatok láthatók:$ ps r PID TTY STAT TIME COMMAND 22163 pts/7 R 0:01 -zsh 3396 pts/3 R 0:03 emacs new-makedoc.txt 20027 pts/7 R 0:25 emacs xml/common/utilities.xml 20974 pts/7 R 0:01 emacs jj.xml 27454 pts/7 R 0:00 ps r
Ezt a paramétert mínusz jel nélkül kell beírni. A különböző paraméterek néha mínusz jellel, néha anélkül vannak megadva. A kézikönyvoldalak (man) könnyen elijeszthetik a potenciális felhasználókat, de a ps --help parancs egy rövidített súgóoldalt készít.
Annak ellenőrzésére például, hogy hány emacs folyamat fut, használja a következő parancsot:
$ ps x | grep emacs 1288 ? S 0:07 emacs 3396 pts/3 S 0:04 emacs new-makedoc.txt 3475 ? S 0:03 emacs .Xresources 20027 pts/7 S 0:40 emacs xml/common/utilities.xml 20974 pts/7 S 0:02 emacs jj.xml $ pidof emacs 20974 20027 3475 3396 1288
A -p paraméter a folyamatazonosítókon keresztül választ ki folyamatokat:
$ ps www -p $(pidof xterm) PID TTY STAT TIME COMMAND 9025 ? S 0:01 xterm -g 100x45+0+200 9176 ? S 0:00 xterm -g 100x45+0+200 29854 ? S 0:21 xterm -g 100x75+20+0 -fn \ -B&H-LucidaTypewriter-Medium-R-Normal-Sans-12-120-75-75-M-70-iso10646-1 4378 ? S 0:01 xterm -bg MistyRose1 -T root -n root -e su -l 25543 ? S 0:02 xterm -g 100x45+0+200 22161 ? R 0:14 xterm -g 100x45+0+200 16832 ? S 0:01 xterm -bg MistyRose1 -T root -n root -e su -l 16912 ? S 0:00 xterm -g 100x45+0+200 17861 ? S 0:00 xterm -bg DarkSeaGreen1 -g 120x45+40+300 19930 ? S 0:13 xterm -bg LightCyan 21686 ? S 0:04 xterm -g 100x45+0+200 -fn \ lucidasanstypewriter-12 23104 ? S 0:00 xterm -g 100x45+0+200 26547 ? S 0:00 xterm -g 100x45+0+200
A folyamatlista az igényeknek megfelelően formázható. A -L paraméter visszaadja a kulcsszavak listáját. Adja meg a következő parancsot a folyamatok kiíratásához, memóriahasználat szerint rendezve:
$ ps ax --format pid,rss,cmd --sort rss PID RSS CMD 2 0 [ksoftirqd/0] 3 0 [events/0] 17 0 [kblockd/0] [...] 10164 5260 xterm 31110 5300 xterm 17010 5356 xterm 3896 29292 /usr/X11R6/bin/X -nolisten tcp -br vt7 -auth /var/lib/xdm/authdir/au
Folyamatfa: pstree
A pstree parancs fa formában állítja elő a folyamatok listáját:$ pstree init-+-atd |-3*[automount] |-bdflush |-cron [...] |-usb-storage-1 |-usb-storage-2 |-10*[xterm---zsh] |-xterm---zsh---mutt |-2*[xterm---su---zsh] |-xterm---zsh---ssh |-xterm---zsh---pstree |-ypbind---ypbind---2*[ypbind] `-zsh---startx---xinit4-+-X `-ctwm-+-xclock |-xload `-xosview.bin
A -p paraméter hozzáadja a folyamatazonosítót egy adott névhez. Ha a parancssorokat is szeretné megjeleníteni, használja a -a paramétert.
$ pstree -pa init,1 |-atd,1255 [...] `-zsh,1404 `-startx,1407 /usr/X11R6/bin/startx `-xinit4,1419 /suse/jj/.xinitrc [...] |-X,1426 :0 -auth /suse/jj/.Xauthority `-ctwm,1440 |-xclock,1449 -d -geometry -0+0 -bg grey |-xload,1450 -scale 2 `-xosview.bin,1451 +net -bat +net
Ki mit csinál: w
A w paranccsal megkereshető, hogy ki van bejelentkezve a rendszerbe, és melyik felhasználó mit csinál. Például:$ w 15:17:26 up 62 days, 4:33, 14 users, load average: 0.00, 0.04, 0.01 USER TTY LOGIN@ IDLE JCPU PCPU WHAT jj pts/0 30Mar04 4days 0.50s 0.54s xterm -e su -l jj pts/1 23Mar04 5days 0.20s 0.20s -zsh jj pts/2 23Mar04 5days 1.28s 1.28s -zsh jj pts/3 23Mar04 3:28m 3.21s 0.50s -zsh [...] jj pts/7 07Apr04 0.00s 9.02s 0.01s w jj pts/9 25Mar04 3:24m 7.70s 7.38s mutt [...] jj pts/14 12:49 37:34 0.20s 0.13s ssh totan
Az utolsó sorból látható, hogy a jj felhasználó létrehozott egy ssh-kapcsolatot a totan nevű számítógéphez. Ha a többi rendszer bármely felhasználója be van jelentkezve távolról, az -f paraméter megmutatja, hogy melyik gépről hozták létre a kapcsolatot.
Memóriahasználat: free
A free segédprogram megvizsgálja a RAM-használatot. A kimenetben mind a szabad, mind a használt memória (és a csereterületek) részletes adatai láthatók:$ free total used free shared buffers cached Mem: 514736 273964 240772 0 35920 42328 -/+ buffers/cache: 195716 319020 Swap: 1794736 104096 1690640
A -m paraméterrel minden méret megabájtban jelenik meg:
$ free -m total used free shared buffers cached Mem: 502 267 235 0 35 41 -/+ buffers/cache: 191 311 Swap: 1752 101 1651
Az igazán érdekes információ ebben a sorban található:
-/+ buffers/cache: 191 311
Ez kiszámítja a pufferek és gyorsítótárak által elfoglalt memória méretét. A -d késleltetés paraméter hatására a képernyő késleltetés másodpercenként frissül. A free -d 1.5 parancs például másfél másodpercenként frissíti a képernyőt.
Kernel gyűrűpuffer: dmesg
A Linux-kernel számos üzenetet tárol egy gyűrűpufferben. Ezen üzenetek megtekintésére szolgál a dmesg parancs:$ dmesg [...] sdc : READ CAPACITY failed. sdc : status = 1, message = 00, host = 0, driver = 08 Info fld=0xa00 (nonstd), Current sd00:00: sense key Not Ready sdc : block size assumed to be 512 bytes, disk size 1GB. sdc: test WP failed, assume Write Enabled sdc: I/O error: dev 08:20, sector 0 I/O error: dev 08:20, sector 0 I/O error: dev 08:20, sector 2097144 I/O error: dev 08:20, sector 2097144 I/O error: dev 08:20, sector 0 I/O error: dev 08:20, sector 0 unable to read partition table I/O error: dev 08:20, sector 0 nfs: server totan not responding, still trying nfs: server totan OK
Az utolsó sor azt jelzi, hogy átmeneti problémák vannak a totan NFS-szerverrel. Az előtte lévő sorokat egy USB-meghajtó csatlakoztatása váltotta ki. A régebbi események a /var/log/messages és a /var/log/warn fájlban vannak naplózva.
USB-eszközök: lsusb
Az lsusb parancs kilistázza az összes USB-eszközt. A -v paraméter hatására részletesebb listát ír ki. A részletes adatokat a /proc/bus/usb/ könyvtárból olvassa a program. A következőkben az lsusb parancs kimenete látható, ha a rendszerhez egy USB-meghajtó csatlakoztatását követően. Az utolsó sorok jelzik az új eszköz jelenlétét.Bus 004 Device 001: ID 0000:0000 Bus 003 Device 001: ID 0000:0000 Bus 002 Device 001: ID 0000:0000 Bus 001 Device 001: ID 0000:0000 Bus 001 Device 018: ID 0402:5634 ALi Corp.
Fájlrendszerek és használatuk: mount, df, és du
A mount parancs megmutatja, melyik fájlrendszer (eszköz és típus) van csatolva és melyik ponton:$ mount /dev/hdb2 on / type ext2 (rw) proc on /proc type proc (rw) devpts on /dev/pts type devpts (rw,mode=0620,gid=5) /dev/hda1 on /data type ext2 (rw) shmfs on /dev/shm type shm (rw) usbdevfs on /proc/bus/usb type usbdevfs (rw) automount(pid1012) on /suse type autofs \ (rw,fd=5,pgrp=1012,minproto=2,maxproto=3) totan:/real-home/jj on /suse/jj type nfs \ (rw,nosuid,rsize=8192,wsize=8192,hard,intr,nolock,addr=10.10.0.1)
A fájlrendszerek teljes kihasználtságáról a df paranccsal kaphat információt. A -h (vagy --human-readable) paraméter az átlagos felhasználó számára érthető formába önti a kimenetet.
$ df -h Filesystem Size Used Avail Use% Mounted on /dev/hdb2 7.4G 5.1G 2.0G 73% / /dev/hda1 74G 5.8G 65G 9% /data shmfs 252M 0 252M 0% /dev/shm totan:/real-home/jj 350G 324G 27G 93% /suse/jj
A totan NFS-fájlszerver felhasználóinak késlekedés nélkül takarítaniuk kell a saját könyvtárukban. Egy adott könyvtárban az alkönyvtárakban található fájlok összméretének megjelenítéséhez adja ki a du parancsot. A -s paraméter elnyomja a részletes adatok kimenetét. A -h könnyen érthető formába önti az adatokat. A
$ du -sh ~ 361M /suse/jj
paranccsal megtudhatja, mennyi helyet foglal a saját könyvtára.
A /proc fájlrendszer
A /proc fájlrendszer egy pszeudo-fájlrendszer, amelyben a kernel tárol fontos információkat virtuális fájlok formájában. A CPU típusa például ezzel a paranccsal jeleníthető meg:$ cat /proc/cpuinfo processor : 0 vendor_id : AuthenticAMD cpu family : 6 model : 8 model name : AMD Athlon(tm) XP 2400+ stepping : 1 cpu MHz : 2009.343 cache size : 256 KB fdiv_bug : no [...]
A megszakítások kiosztása és használata a következő paranccsal kérdezhető le:
$ cat /proc/interrupts CPU0 0: 537544462 XT-PIC timer 1: 820082 XT-PIC keyboard 2: 0 XT-PIC cascade 8: 2 XT-PIC rtc 9: 0 XT-PIC acpi 10: 13970 XT-PIC usb-uhci, usb-uhci 11: 146467509 XT-PIC ehci_hcd, usb-uhci, eth0 12: 8061393 XT-PIC PS/2 Mouse 14: 2465743 XT-PIC ide0 15: 1355 XT-PIC ide1 NMI: 0 LOC: 0 ERR: 0 MIS: 0
Néhány fontos fájl és tartalma:
- /proc/devices
- a rendelkezésre álló eszközök
- /proc/modules
- a betöltött kernelmodulok
- /proc/cmdline
- kernel paranccsor
- /proc/meminfo
- részletes adatok a memóriahasználatról
- /proc/config.gz
- gzip – a jelenleg futó kernel tömörített konfigurációs fájljaTovábbi információ az /usr/src/linux/Documentation/filesystems/proc.txt szövegfájlban található. A jelenleg futó folyamatok adatai a /proc/NNN könyvtárakban találhatók meg, ahol az NNN a vonatkozó folyamatok folyamatazonosítója (PID-je). A folyamatok a saját jellemzőiket a /proc/self/ könyvtárakban találhatják meg:
$ ls -l /proc/self lrwxrwxrwx 1 root root 64 Apr 29 13:52 /proc/self -> 27585 $ ls -l /proc/self/ total 0 dr-xr-xr-x 2 jj suse 0 Apr 29 13:52 attr -r-------- 1 jj suse 0 Apr 29 13:52 auxv -r--r--r-- 1 jj suse 0 Apr 29 13:52 cmdline lrwxrwxrwx 1 jj suse 0 Apr 29 13:52 cwd -> /suse/jj/t -r--r--r-- 1 jj suse 0 Apr 29 13:52 delay -r-------- 1 jj suse 0 Apr 29 13:52 environ lrwxrwxrwx 1 jj suse 0 Apr 29 13:52 exe -> /bin/ls dr-x------ 2 jj suse 0 Apr 29 13:52 fd -rw------- 1 jj suse 0 Apr 29 13:52 mapped_base -r--r--r-- 1 jj suse 0 Apr 29 13:52 maps -rw------- 1 jj suse 0 Apr 29 13:52 mem -r--r--r-- 1 jj suse 0 Apr 29 13:52 mounts lrwxrwxrwx 1 jj suse 0 Apr 29 13:52 root -> / -r--r--r-- 1 jj suse 0 Apr 29 13:52 stat -r--r--r-- 1 jj suse 0 Apr 29 13:52 statm -r--r--r-- 1 jj suse 0 Apr 29 13:52 status dr-xr-xr-x 3 jj suse 0 Apr 29 13:52 task -r--r--r-- 1 jj suse 0 Apr 29 13:52 wchan
A végrehajtható fájlok és könyvtárak címhozzárendelését a maps fájl tartalmazza:
$ cat /proc/self/maps 08048000-0804c000 r-xp 00000000 03:02 22890 /bin/cat 0804c000-0804d000 rw-p 00003000 03:02 22890 /bin/cat 0804d000-0806e000 rwxp 0804d000 00:00 0 40000000-40016000 r-xp 00000000 03:02 10882 /lib/ld-2.3.3.so 40016000-40017000 rw-p 00015000 03:02 10882 /lib/ld-2.3.3.so 40017000-40018000 rw-p 40017000 00:00 0 4002b000-40135000 r-xp 00000000 03:02 10908 /lib/tls/libc.so.6 40135000-4013d000 rw-p 0010a000 03:02 10908 /lib/tls/libc.so.6 4013d000-40141000 rw-p 4013d000 00:00 0 bfffe000-c0000000 rw-p bfffe000 00:00 0 ffffe000-fffff000 ---p 00000000 00:00 0
A vmstat, iostat és mpstat
A vmstat segédprogram jelentéseket ad a virtuális memória statisztikákról. A /proc/meminfo, /proc/stat és /proc/*/stat fájlokat olvassa. Ez különösen a rendszer szűk keresztmetszeteinek azonosításánál hasznos. Az iostat parancs statisztikákat közöl a CPU-ról, valamint az eszközök és partíciók bemenetéről és kimenetéről. A megjelenített információk a /proc/stat és /proc/partitions fájlból származnak. A kimenet merevlemezek ki- és bemeneti teljesítményének jobb kiegyensúlyozásánál jöhet jól. Az mpstat parancs a processzorral (CPU-val) összefüggő statisztikákat jelenít meg.A procinfo
A /proc fájlrendszer fontos adatainak összefoglalására szolgál a procinfo parancs:
$ procinfo Linux 2.6.4-54.5-default (geeko@buildhost) (gcc 3.3.3 ) #1 1CPU [roth.suse.de] Memory: Total Used Free Shared Buffers Mem: 516696 513200 3496 0 43284 Swap: 530136 1352 528784 Bootup: Wed Jul 7 14:29:08 2004 Load average: 0.07 0.04 0.01 1/126 5302 user : 2:42:28.08 1.3% page in : 0 nice : 0:31:57.13 0.2% page out: 0 system: 0:38:32.23 0.3% swap in : 0 idle : 3d 19:26:05.93 97.7% swap out: 0 uptime: 4d 0:22:25.84 context :207939498 irq 0: 776561217 timer irq 8: 2 rtc irq 1: 276048 i8042 irq 9: 24300 VIA8233 irq 2: 0 cascade [4] irq 11: 38610118 acpi, eth0, uhci_hcd irq 3: 3 irq 12: 3435071 i8042 irq 4: 3 irq 14: 2236471 ide0 irq 6: 2 irq 15: 251 ide1
Az összes információ megjelenítéséhez használja a -a paramétert. A -nN paraméter minden N másodpercben frissíti az adatokat. Ebben az esetben a program lezárásához nyomja meg a Q billentyűt.
Alapértelmezésben az összesített adatok kerülnek megjelenítésre. A -d paraméter különbségi értékeket szolgáltat. A procinfo -dn5 az utolsó öt másodpercben módosult adatokat jeleníti meg.
Memory: Total Used Free Shared Buffers Cached Mem: 0 2 -2 0 0 0 Swap: 0 0 0 Bootup: Wed Feb 25 09:44:17 2004 Load average: 0.00 0.00 0.00 1/106 31902 user : 0:00:00.02 0.4% page in : 0 disk 1: 0r 0w nice : 0:00:00.00 0.0% page out: 0 disk 2: 0r 0w system: 0:00:00.00 0.0% swap in : 0 disk 3: 0r 0w idle : 0:00:04.99 99.6% swap out: 0 disk 4: 0r 0w uptime: 64d 3:59:12.62 context : 1087 irq 0: 501 timer irq 10: 0 usb-uhci, usb-uhci irq 1: 1 keyboard irq 11: 32 ehci_hcd, usb-uhci, irq 2: 0 cascade [4] irq 12: 132 PS/2 Mouse irq 6: 0 irq 14: 0 ide0 irq 8: 0 rtc irq 15: 0 ide1 irq 9: 0 acpi
PCI erőforrások: lspci
Az lspci parancs felsorolja a PCI-erőforrásokat:$ lspci 00:00.0 Host bridge: VIA Technologies, Inc. \ VT8366/A/7 [Apollo KT266/A/333] 00:01.0 PCI bridge: VIA Technologies, Inc. \ VT8366/A/7 [Apollo KT266/A/333 AGP] 00:0b.0 Ethernet controller: Digital Equipment Corporation \ DECchip 21140 [FasterNet] (rev 22) 00:10.0 USB Controller: VIA Technologies, Inc. USB (rev 80) 00:10.1 USB Controller: VIA Technologies, Inc. USB (rev 80) 00:10.2 USB Controller: VIA Technologies, Inc. USB (rev 80) 00:10.3 USB Controller: VIA Technologies, Inc. USB 2.0 (rev 82) 00:11.0 ISA bridge: VIA Technologies, Inc. VT8235 ISA Bridge 00:11.1 IDE interface: VIA Technologies, Inc. VT82C586/B/686A/B \ PIPC Bus Master IDE (rev 06) 00:11.5 Multimedia audio controller: VIA Technologies, Inc. \ VT8233 AC97 Audio Controller (rev 50) 01:00.0 VGA compatible controller: Matrox Graphics, Inc. \ MGA G550 AGP (rev 01)
A -v paraméter használata részletesebb felsorolást eredményez:
$ lspci -v [...] 01:00.0 \ VGA compatible controller: Matrox Graphics, Inc. MGA G550 AGP (rev 01) \ (prog-if 00 [VGA]) Subsystem: Matrox Graphics, Inc. Millennium G550 Dual Head DDR 32Mb Flags: bus master, medium devsel, latency 32, IRQ 10 Memory at d8000000 (32-bit, prefetchable) [size=32M] Memory at da000000 (32-bit, non-prefetchable) [size=16K] Memory at db000000 (32-bit, non-prefetchable) [size=8M] Expansion ROM at <unassigned> [disabled] [size=128K] Capabilities: <available only to root>
Az eszközök nevének feloldásáról az /usr/share/pci.ids fájl ad információt. Az ebben a fájlban fel nem sorolt PCI-azonosítók »Unknown device« (ismeretlen eszköz) megjelölést kapnak.
A -vv paraméter minden, egy program által lekérdezhető információt megad. Tisztán numerikus értékek megadásához a -n paramétert kell használnia.
Egy programfuttatás rendszerhívásai: strace
Az strace segédprogram segít egy futó program összes rendszerhívásának nyomon követésében. Adjon meg egy parancsot a szokásos módon, az strace paranccsal a sor elején.$ strace -e open ls execve("/bin/ls", ["ls"], [/* 88 vars */]) = 0 uname({sys="Linux", node="edison", ...}) = 0 brk(0) = 0x805b000 old_mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) \ = 0x40017000 open("/etc/ld.so.preload", O_RDONLY) = -1 ENOENT (No such file or directory) open("/etc/ld.so.cache", O_RDONLY) = 3 fstat64(3, {st_mode=S_IFREG|0644, st_size=76333, ...}) = 0 old_mmap(NULL, 76333, PROT_READ, MAP_PRIVATE, 3, 0) = 0x40018000 [...] ioctl(1, SNDCTL_TMR_TIMEBASE or TCGETS, {B38400 opost isig icanon echo ...}) = 0 ioctl(1, TIOCGWINSZ, {ws_row=53, ws_col=110, ws_xpixel=897, ws_ypixel=693}) = 0 open(".", O_RDONLY|O_NONBLOCK|O_LARGEFILE|O_DIRECTORY) = 3 fstat64(3, {st_mode=S_IFDIR|0755, st_size=144, ...}) = 0 fcntl64(3, F_SETFD, FD_CLOEXEC) = 0 getdents64(3, /* 5 entries */, 4096) = 160 getdents64(3, /* 0 entries */, 4096) = 0 close(3) = 0 fstat64(1, {st_mode=S_IFCHR|0620, st_rdev=makedev(136, 48), ...}) = 0 mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) \ = 0x40018000 write(1, "ltrace-ls.txt myfile.txt strac"..., 41) = 41 munmap(0x40018000, 4096) = 0 exit_group(0) = ?
Egy adott fájl megnyitására történt kísérletek nyomon követéséhez például írja be a következőt:
$ strace -e open ls myfile.txt open("/etc/ld.so.preload", O_RDONLY) = -1 ENOENT (No such file or directory) open("/etc/ld.so.cache", O_RDONLY) = 3 open("/lib/tls/librt.so.1", O_RDONLY) = 3 open("/lib/libacl.so.1", O_RDONLY) = 3 open("/lib/libselinux.so.1", O_RDONLY) = 3 open("/lib/tls/libc.so.6", O_RDONLY) = 3 open("/lib/tls/libpthread.so.0", O_RDONLY) = 3 open("/lib/libattr.so.1", O_RDONLY) = 3 open("/proc/mounts", O_RDONLY) = 3 [...] open("/proc/filesystems", O_RDONLY) = 3 open("/proc/self/attr/current", O_RDONLY) = 4
Az összes leszármazott folyamat nyomon követéséhez használja a -f paramétert. Az strace viselkedése és kimeneti formátumai nagymértékben szabályozhatók. További információ: man strace.
Egy programfuttatás könyvtárhívásai: ltrace
Az ltrace parancs lehetővé teszi egy folyamat könyvtárhívásainak követését: A parancs hasonló módon használható, mint az strace. A -c paraméter kijelzi a könyvtárhívások számát és időtartamát:$ ltrace -c find /usr/share/doc % time seconds usecs/call calls errors syscall ------ ----------- ----------- --------- --------- ---------------- 86.27 1.071814 30 35327 write 10.15 0.126092 38 3297 getdents64 2.33 0.028931 3 10208 lstat64 0.55 0.006861 2 3122 1 chdir 0.39 0.004890 3 1567 2 open [...] 0.00 0.000003 3 1 uname 0.00 0.000001 1 1 time ------ ----------- ----------- --------- --------- ---------------- 100.00 1.242403 58269 3 total
A kívánt könyvtár megadása: ldd
Az ldd parancs annak megkeresésére használható, hogy milyen dinamikus könyvtárakat tölt be az argumentumként megadott végrehajtható fájl:
$ ldd /bin/ls linux-gate.so.1 => (0xffffe000) librt.so.1 => /lib/tls/librt.so.1 (0x4002b000) libacl.so.1 => /lib/libacl.so.1 (0x40033000) libselinux.so.1 => /lib/libselinux.so.1 (0x40039000) libc.so.6 => /lib/tls/libc.so.6 (0x40048000) libpthread.so.0 => /lib/tls/libpthread.so.0 (0x4015d000) /lib/ld-linux.so.2 => /lib/ld-linux.so.2 (0x40000000) libattr.so.1 => /lib/libattr.so.1 (0x4016d000)
A statikus bináris állományoknak egyetlen dinamikus könyvtárra sincs szükségük:
$ ldd /bin/sash not a dynamic executable $ file /bin/sash /bin/sash: ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV), \ for GNU/Linux 2.2.5, statically linked, stripped
További információk az ELF bináris állományokról
A bináris állományok tartalma a readelf segédprogrammal olvasható. Ez még a más hardverarchitektúrákhoz készült ELF-fájlokkal is működik.$ readelf --file-header /bin/ls ELF Header: Magic: 7f 45 4c 46 01 01 01 00 00 00 00 00 00 00 00 00 Class: ELF32 Data: 2's complement, little endian Version: 1 (current) OS/ABI: UNIX - System V ABI Version: 0 Type: EXEC (Executable file) Machine: Intel 80386 Version: 0x1 Entry point address: 0x8049b40 Start of program headers: 52 (bytes into file) Start of section headers: 76192 (bytes into file) Flags: 0x0 Size of this header: 52 (bytes) Size of program headers: 32 (bytes) Number of program headers: 9 Size of section headers: 40 (bytes) Number of section headers: 29 Section header string table index: 26
Folyamatközi kommunikáció: ipcs
Az ipcs parancs megadja az aktuálisan használt IPC-erőforrások listáját:
$ ipcs ------ Shared Memory Segments -------- key shmid owner perms bytes nattch status 0x000027d9 5734403 toms 660 64528 2 0x00000000 5767172 toms 666 37044 2 0x00000000 5799941 toms 666 37044 2 ------ Semaphore Arrays -------- key semid owner perms nsems 0x000027d9 0 toms 660 1 ------ Message Queues -------- key msqid owner perms used-bytes messages
Időmérés a time paranccsal
A parancs által felhasznált idő a time segédprogrammal adható meg. Ez a segédprogram két verzióban létezik: mint egy parancsértelmező beépített része, és mint program (/usr/bin/time).$ time find . > /dev/null real 0m4.051s user 0m0.042s sys 0m0.205s