Ps

Slackware.SE Wiki

Hoppa till: navigering, sök

[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)

Den här artikeln är hämtad från http://wiki.slackware.se/index.php/Ps
Personliga verktyg