Ps
Slackware.SE Wiki
[redigera] 11.3 ps
Så nu när du vet hur man växlar fram och tillbaka mellan flera olika processer som du startat från kommandoraden. Och du vet också att det körs en hel del processer samtidigt. Men hur listar du alla dessa program då? Ja, du kan använda kommandot ps(1). Kommandot har en hel del växlar, så vi tar bara upp de viktigaste här. För en komplett lista, se mansidan för ps. Mansidorna täcks på djupet i Sektion 2.1.1
Om du bara skriver ps får du en lista av program som körs i din terminal. Inklusive processerna i förgrunden (vilket inluderar även skalet du använder, och självklart ps själv). Bakgrundsprocesserna visas också om du har några. Många gånger är detta en väldigt kort lista.
Bild 11-1. Basic ps output
% ps PID TTY TIME CMD 7923 ttyp0 00:00:00 bash 8059 ttyp0 00:00:00 ps
Även genom detta är det inte många processer och informationen är välidt typisk. Du får samma kolumner när du vanligen använder ps och det spelar ingen roll hur många processer som körs. Så vad betyder allt?
Ja, PID är process ID. Alla körande processer får en unik identifierare vilket rangordnas mellan 1 och 32767. Varje process är tilldelade det nästa lediga PID. När en process avslutas (eller blir dödad, som du kommer att se i nästa sektion), så lämnar det sitt PID. När max PID är uppnåtts kommer nästa lediga att gå tillbaka till det lägsta lediga som finns.
TTY kolumnen indikerar vilken terminal processen körs på. Att göra en vanlig ps kommer endast att lista programmen som körs på nuvarande terminal, så all information ger samma information i kolumnen TTY. Som du kan se, båda processerna som listas körs på ttyp0. Detta indikerar att de antingen körs remote eller från en X terminal.
Kolumnen TIME indikerar hur mycket CPU tid, hur länge processen har kört. Det är skillnad på den verkliga tiden en process har körts. Kom ihåg att Linux är ett multianvändar system. Det är många processer som körs på samma gång, och dessa processer får var och en, en liten del av processorns tid. Så, kolumnen TIME bör visa mindre tid för varje process än det verkligen har körts. Om du ser mer än flera minuter i TIME kolumnen, så kan det indikera att något är fel.
Till sist, CMD kolumnen visar vad programmet egentligen är. Det listar endast grundnamnet på programmet, inga kommandorads växlar eller liknande information. För att få den iformationen så behöver du använda en av de många växlar ps har. Vi tar upp det inom kort.
Du kan få en komlpett lista av processerna som körs på ditt system om du använder rätt kombination av växlar. Detta kommer förmodligen resultera i en lång lista (femtiofem på min laptop nu när jag skriver detta), så jag kortar av utskriften:t:
% 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] [output cut]
De flesta av dessa processer är startade under boot på de flesta system. Jag har gjort några få modifieringar av mitt system, men du kommer att se de flesta processerna på ditt system också. Som du kan se, detta valet visar kommandorads växlar för de körande processerna. Nyligen så har en sårbarhet i ptrace underlättat en en fix som inte längre visar några växlar för många processer. Dessa är numera listade inom parantes, som PID 108 till 110. Den visa också upp en flera kolumner och lite annan intressant utskrift.
Det första du märker är att de flesta processerna är listade som om de körs på tty "?". Dessa är inte anslutna till någon speciell terminal. Detta är vanligas med demoner (daemons), vilket är processer som körs utan att vara anslutna till någon speciell terminal. Vanliga demoner är sendmail, BIND, apache och NFS. De lyssnar vanligtvis efter förfrågningar från en klient och skickar tillbaka svar.
Det andra, det finns en ny kolumn: STAT. Den visar statusen av processen. S står för sover: processen väntar med andra ord på att något ska hända. Z står för zoombie process. En zoombie process är föräldrarlös, och lämnar underprocessen bakom sig. Detta är ingen bra sak. D står för en process som har gått in i en oavbruten sömn. Oftast vägrar dessa processer att dö även om man skickar SIGKILL. Du kan läsa mera om SIGKILL senare i nästa sektion om kill. W står för paging. En död process är markerad med ett X. En process som är markerad med ett T är spårad eller stoppad. R betyder att processen är körbar.
Om du vill se mer information om de körande processerna, testa det här:
% 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] [output cut]
Det är en hel del information. Egengligen lägger den till information inklusive vliken användare som startade processen, hur mycket systemresurser processen använder (%CPU, %MEM, VSZ och RSS kolumnerna), och vilket datum processen startade. Självfallet är det mycker information som skulle vara behändigt för en system administratör. Den kan också ta upp andra pekare: informatioenen går till kanten av skärmen så att du inte kan se allt. Växeln -w tvingar ps att bryta ner långa rader.
Det är inte så väldigt snyggt, men det gör sitt jobb. Du har nu en komplett lista för varje process. Det finn ännu mera ingormation du kan visa för varje process. Kolla i den väldigt detaljerade mansidan för ps för mer information. Hur som helst, växlarna här ovan är de mest populära och förmodligen de enda du oftast behöver.
Klart
--Dartanjang 17 juli 2006 kl.10.19 (CEST)
