Sada znate kako da prelazite sa jednog procesa na drugi ukoliko ste ih pokrenuli iz
komadne linije. Isto tako znate da se mnogo procesa sve vreme odvija. Pa kako onda da se
izlistaju svi ti programi? Dobro, koristićemo ps(1)
komandu. Ova komanda ima tuce opcija, tako da ćemo ovde pokriti samo one
najvažnije. Za kompletnu listu, pogledaj te man stranu za ps. Korišćenje
man strana je do tančina objašnjeno u Section 2.1.1.
Jednostavno otkucajte ps i imaćete listing svih programa
pokrenutih na vašem terminalu. Tu se ubrajaju procesi koji su u prvom planu (tu
spada i školjka koju koristite, i naravno, ps lično).
Takođe su izlistani pozadinski procesi. Mnogo puta, to će biti veoma kratka
lista:
Čak i ako ovde nemamo puno procesa, informacije su veoma uobičajne.
Imaće te iste kolone ako koristite ps komandu nebitno koliko je procesa pokrenuto.
Pa da vidimo šta sve to znači?
Dakle, PID je ID
procesa. Svim pokrenutim procesima je dat jedinstven identifikator koji je u
rangu od 1 do 32767. Svakom procesu je dodeljen sledeći slobodan PID. Kada se proces
završi (ili se ubije, što ćete videti u sledećem poglavlju), on
predaje svoj PID. Kada se dosegne do maksimalnog PID-a vraće se najmanjem
slobododnom PID-u.
TTY kolona se odnosi na terminal na kome je pokrenut proces.
Pokretanjem ps komande bez ikakvih opcija imaćete listu
procesa tekućeg terminala, tako da ću svi procesi dati iste informacije u TTY
koloni. Kao što vidite, oba izlistana procesa su pokrenuta na ttyp0. To nam govori da su procesi ili pokrenuti sa udaljene
lokacije ili sa X terminala i slično.
TIME kolona određuje koliko se CPU vremena proces
izvršava. Ovo vreme ne treba mešati sa vremenom izvršavanja procesa.
Zapamtite da je Linux višekorisnički operativni sistem i da se više
procesa izvršava u isto vreme, i da ti procesi uzimaju malu porciju procesorskog
vremena. Tako da TIME kolona pokazuje vreme koje je nešto menje od aktuelnog vremena
izvršavanja procesa. Ako vidite vrednost veću od nekoliko minuta u TIME koloni,
znači da nešto nije u redu.
Konačno, CMD kolona govori o kom programu je reč.
Ona samo prikazuje osnovni program, i nikakve opcije komande ili slične informacije.
Da biste dobili takve informacije, potrebno je da koristite jednu od mnogih opcija ps komande. O njima ćemo prodiskutovati ukratko.
Kompletnu listu svih procesa koji se izvršavaju na vašem sistemu možete
dobiti pravilnom upotrebom ovih opcija. To će verovatno dati veliki listing procesa
(pedeset pet na mom laptopu u trenutku kada unosim ovu rečenicu), tako da ću
skratiti izlaz:
% ps -ax
PID TTY STAT TIME COMMAND
1 ? S 0:03 init [3]
2 ? SW 0:13 [kflushd]
3 ? SW 0:14 [kupdate]
4 ? SW 0:00 [kpiod]
5 ? SW 0:17 [kswapd]
11 ? S 0:00 /sbin/kerneld
30 ? SW 0:01 [cardmgr]
50 ? S 0:00 /sbin/rpc.portmap
54 ? S 0:00 /usr/sbin/syslogd
57 ? S 0:00 /usr/sbin/klogd -c 3
59 ? S 0:00 /usr/sbin/inetd
61 ? S 0:04 /usr/local/sbin/sshd
63 ? S 0:00 /usr/sbin/rpc.mountd
65 ? S 0:00 /usr/sbin/rpc.nfsd
67 ? S 0:00 /usr/sbin/crond -l10
69 ? S 0:00 /usr/sbin/atd -b 15 -l 1
77 ? S 0:00 /usr/sbin/apmd
79 ? S 0:01 gpm -m /dev/mouse -t ps2
94 ? S 0:00 /usr/sbin/automount /auto file /etc/auto.misc
106 tty1 S 0:08 -bash
108 tty3 SW 0:00 [agetty]
109 tty4 SW 0:00 [agetty]
110 tty5 SW 0:00 [agetty]
111 tty6 SW 0:00 [agetty]
[izlaz skraćen]
|
Većina ovih procesa se pokreće u toku butovanja na većini sistema. Ja
sam napravio nešto modifikacija na svom sistemu, tako da na vašem sistemu
može biti malo drugačije. Ipak većina tih procesa su pokrenuti i na
vašem sistemu. Kao što ste zapazili, ako ste ovako koristili ovu komandu, u
listingu ćete imati i opcije komandi koje su kreirale procese. U skorašenje
vreme, ranjivost kernela u ptrace je nametnula to da se ps komanda malo izmenila tako da ne prikazuje baš sve opcije sa
kojim je pokrenuta neka komanda. Te komande su sada prikazane kao uokvirene u srednje
zagrade kao u gore navedemom listigu za procese sa PID brojevima od 108 do 110. Isto tako
su dodate još neke kolone i još neki ineresantni izlazi.
Prvo, većina ovih izlistanih procesa je pokrenuto na tty “?”. Oni
nisu dodeljeni ni jednom određenom terminalu. Ovo uglavnom važi za demone, koji
su primer procesa koji nisu zakačeni ni za jedan terminal. Značajniji demoni su
sendmail, BIND, apache i NFS. Oni osluškuju zahteve koji dolaze od strane klijenata
i i na te zahteve vraćaju ono što su klijenti zahtevali.
Drugo, postoji nova kolona: STAT. Ona pokazuje status
procesa. S znači sleeping: taj proces čeka da se
nešto dogodi. Z znači zombi proces. Zombi su oni
procesi kod kojih je roditelj proces umro, i tako ostavo dete proces iza sebe. To nije
dobro. D se odnosi na procese koji su u neprekidnom spavanju
(uninterruptible sleep). Često ti procesi odbijaju da umru čak i kada im je
predat SIGKILL signal. Više o SIGKILL možete da saznate u sledećem odeljku
vezanom za kill komandu. W znači straničenje (paging).
Mrtvi procesi su označeni sa X. Procesi označeni sa
T su trasirani (traced), ili stopirani. R znači da su procesi pokrenuti.
Ako hoćete još informacija o pokrenutim procesima pokušajte ovako:
% ps -aux
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
root 1 0.0 0.0 344 80 ? S Mar02 0:03 init [3]
root 2 0.0 0.0 0 0 ? SW Mar02 0:13 [kflushd]
root 3 0.0 0.0 0 0 ? SW Mar02 0:14 [kupdate]
root 4 0.0 0.0 0 0 ? SW Mar02 0:00 [kpiod]
root 5 0.0 0.0 0 0 ? SW Mar02 0:17 [kswapd]
root 11 0.0 0.0 1044 44 ? S Mar02 0:00 /sbin/kerneld
root 30 0.0 0.0 1160 0 ? SW Mar02 0:01 [cardmgr]
bin 50 0.0 0.0 1076 120 ? S Mar02 0:00 /sbin/rpc.port
root 54 0.0 0.1 1360 192 ? S Mar02 0:00 /usr/sbin/sysl
root 57 0.0 0.1 1276 152 ? S Mar02 0:00 /usr/sbin/klog
root 59 0.0 0.0 1332 60 ? S Mar02 0:00 /usr/sbin/inet
root 61 0.0 0.2 1540 312 ? S Mar02 0:04 /usr/local/sbi
root 63 0.0 0.0 1796 72 ? S Mar02 0:00 /usr/sbin/rpc.
root 65 0.0 0.0 1812 68 ? S Mar02 0:00 /usr/sbin/rpc.
root 67 0.0 0.2 1172 260 ? S Mar02 0:00 /usr/sbin/cron
root 77 0.0 0.2 1048 316 ? S Mar02 0:00 /usr/sbin/apmd
root 79 0.0 0.1 1100 152 ? S Mar02 0:01 gpm
root 94 0.0 0.2 1396 280 ? S Mar02 0:00 /usr/sbin/auto
chris 106 0.0 0.5 1820 680 tty1 S Mar02 0:08 -bash
root 108 0.0 0.0 1048 0 tty3 SW Mar02 0:00 [agetty]
root 109 0.0 0.0 1048 0 tty4 SW Mar02 0:00 [agetty]
root 110 0.0 0.0 1048 0 tty5 SW Mar02 0:00 [agetty]
root 111 0.0 0.0 1048 0 tty6 SW Mar02 0:00 [agetty]
[izlaz skraćen]
|
Ovde imamo gomilu informacija. Prvo, imamo informacije koje se odnose na korisnike
koji su pokrenuli procese, koliko sistemskih resurasa proces koristi ( %CPU, %MEM, VSZ i
RSS kolone) i kojeg datuma je proces startovan. Očigledno je da ima puno informacija
koje bi bile od koristi sistem adminstratoru. Postoji još nešto: informacije
sada prelaze preko ivica ekrana i tako se ne vide u potpunosti. Opcija -w
će forsirati ps komandu da prelama
(wrap) duge linije.
Ovo nije baš preterano jednostavno, ali radi posao. Sada znate kako da dobijete
kompletan listing svih procesa. Nisu sve to informacije koje možete dobiti o
procesima. Pogledajte za više detalja man stranu za ps
komandu. Ipak, opcije koji su navedene gore su najpopularnije i njih ćete
najčešće koristiti.