EnglischFranzösischSpanisch

Ad


OnWorks-Favicon

ips - Online in der Cloud

Führen Sie ips im kostenlosen OnWorks-Hosting-Provider über Ubuntu Online, Fedora Online, Windows-Online-Emulator oder MAC OS-Online-Emulator aus

Dies ist der Befehl ips, der im kostenlosen OnWorks-Hosting-Provider über eine unserer zahlreichen kostenlosen Online-Workstations wie Ubuntu Online, Fedora Online, Windows-Online-Emulator oder MAC OS-Online-Emulator ausgeführt werden kann

PROGRAMM:

NAME/FUNKTION


ips - intelligenter Prozessstatus

ZUSAMMENFASSUNG


ips [Spalten-Optionen] [Optionen wählen] [Sortieroptionen] [andere Optionen] [Makronamen]

BESCHREIBUNG


Ips ist ein intelligentes ps-ähnliches Programm, das den erhaltenen Prozess- oder Threadstatus anzeigt
von dem / proc Dateisystem. Es verfügt über Funktionen zum Verfolgen von aktiven, halbaktiven und
Übergangsprozesse einfach. Es ist extrem konfigurierbar, aber dennoch effizient. Ips
versucht, so wenig Laufzeit wie möglich zu verbrauchen, indem nur so viele Informationen wie möglich gesammelt werden
wird für die jeweilige angegebene Anzeige benötigt.

Ips zeigt normalerweise den Prozessstatus einmal an und wird dann beendet, kann aber auch wie ein
Top Programm zum wiederholten Anzeigen des Prozessstatus. Die Ausgabe kann zeilenweise angezeigt werden
Zeile wie bei einem dummen Terminal, angezeigt durch das Flüche Bibliothek mit Cursor-Adressierung,
oder in einem rohen X11-Fenster angezeigt. Die Ausgabe kann eingefärbt werden, um Reihen von . hervorzuheben
Interesse.

Die anzuzeigenden Informationen über Prozesse können spaltenweise ausgewählt werden
Basis. Jede Spalte zeigt eine Information über die Prozesse an. Der Satz von
anzuzeigenden Spalten und ihre Reihenfolge kann geändert werden.

Prozesse können basierend auf den Werten einer oder mehrerer Spalten zur Anzeige ausgewählt werden. Etwas
Auswahlkriterien sind für Effizienz und Komfort vordefiniert, wie zum Beispiel die Prozess-ID
und Benutzername. Andere Auswahlkriterien können mit allgemeinen Ausdrücken definiert werden, die
beziehen sich auf eine beliebige Kombination der Spaltenwerte.

Die Reihenfolge, in der Prozesse angezeigt werden, basiert auf der Sortierung der Werte von einem oder mehreren
Säulen. Der Satz von Spalten, nach denen sortiert werden soll, die Reihenfolge der zu sortierenden Spalten und ob
jede Sortierung ist normal oder umgekehrt kann geändert werden. Beliebige Ausdrücke basierend auf dem
Werte der Spalten können auch zum Sortieren verwendet werden.

Prozesslinien können basierend auf beliebigen Ausdrücken eingefärbt werden, um die
Prozesse von Interesse. Vordergrundfarbe, Hintergrundfarbe, Unterstreichung und Fettdruck
für die Ausgabe eingestellt werden. Die Kopfzeilen können auch eingefärbt werden.

Ips liest Initialisierungsdateien, um Makros zu definieren, die es einfach machen, nützlich zu spezifizieren
Kombinationen von Konfigurationsmöglichkeiten. Daher viele verschiedene Ausgabeformate und Kurz-
Zuschnitte auf gängige Optionskombinationen können verwendet werden.

Optionen zu ips sind Minuszeichen gefolgt von kurzen Wörtern oder Phrasen. Mehrere Optionen
nicht nach einem Minuszeichen kombinierbar (im Gegensatz zu vielen anderen
Versorgungsunternehmen). Optionen werden in der Reihenfolge verarbeitet, in der sie in der Befehlszeile angegeben werden.
Kombinationen von Optionen, die scheinbar widersprüchliche Aktionen ausführen, sind zulässig. Das ist
weil jede Option lediglich den Status ändert, der von den vorherigen Optionen übrig geblieben ist. Der Staat
Nachdem alle Optionen verarbeitet wurden, bleibt diejenige übrig, die tatsächlich ausgeführt wird.

SPEZIFIKATION COLUMNS FÜR AUSGABE


Es gibt viele Informationsspalten, die zur Anzeige ausgewählt werden können. Jede Spalte
zeigt eine Information über die angezeigten Prozesse an. Der Satz von Spalten und
ihre Reihenfolge kann vom Benutzer bestimmt werden.

Jede Spalte hat eine definierte Breite, die normalerweise ausreicht, um die größtmögliche Breite aufzunehmen
Datenelement für diese Spalte. Diese Breite ist nur eine Vorgabe und kann bei Bedarf geändert werden.
Die in einer Spalte angezeigten Datenelemente sind linksbündig, rechtsbündig oder zentriert
innerhalb der Spaltenbreite je nach Spaltentyp. In einigen Fällen die Spaltenbreite
ist möglicherweise nicht ausreichend, um das vollständige Datenelement anzuzeigen, und in diesem Fall ist das Element
auf die Spaltenbreite gekürzt. Das Abschneiden wird durch einen vertikalen Balken rechts angezeigt
Rand der Säule. (Die üblichen Spalten, die abgeschnitten werden müssen, sind die Befehl und
Umwelt Spalten, die die vollständige Befehlszeile oder Umgebungszeichenfolge für a . anzeigen
Prozess.)

Das ips Programm erzwingt eine Begrenzung der Gesamtbreite, die für die Anzeige von Spalten verwendet wird. Wenn
zu viele Spalten für die Anzeige ausgewählt sind, dann sind eine oder mehrere Spalten von rechts
entfernt, bis die verbleibenden Spalten in die Gesamtbreite passen. Die Breitenbegrenzung ist
normalerweise implizit durch die Breite des Terminals oder des Fensters festgelegt. Aber wenn gewünscht, die Breitenbegrenzung
kann vom Benutzer explizit angegeben werden. (Dies ist praktisch, wenn die ips Ausgabe des Programms
wird beispielsweise an einen anderen Prozess weitergeleitet.)

Wenn die letzte angezeigte Spalte nicht bis zur Gesamtbreite reicht, dann ist das
Die Breite der Spalte wird erweitert, um die verbleibenden Spalten einzuschließen. Dies ermöglicht mehr Daten
Element zu sehen, bevor es abgeschnitten werden muss. (Normalerweise ist die Befehl Spalte ist die
Spalte ganz rechts, um diese zusätzlichen Spalten zu nutzen.)

Die Optionen zum Bearbeiten von Spalten sind -col, -addcol, -remkol, -Sep, -Breite, -breite,
-vert und -Listenspalten.

Das -col Option löscht zuerst jede vorhandene Liste von Spaltennamen für die Anzeige und legt dann fest
die neue Liste der anzuzeigenden Spaltennamen wie angegeben. Die Spalten werden angezeigt in
die in der Option angegebene Reihenfolge. Wenn die Liste einen doppelten Spaltennamen enthält, dann
nur die letzte Verwendung des Spaltennamens ist wirksam.

Das -addcol Option fügt die angegebenen Spalten zur bestehenden Liste der Spaltennamen hinzu
angezeigt. Die neuen Spalten werden in der angegebenen Reihenfolge hinzugefügt und standardmäßig angehängt
nach zuvor vorhandenen Spalten in der Liste. Wenn einer der Spaltennamen bereits vorhanden ist
der bestehenden Liste, dann werden sie aus der Liste entfernt, bevor sie wieder hinzugefügt werden.
Ein Argument kann eine Zahl sein, in diesem Fall werden spätere Spaltennamen in die eingefügt
Liste beginnend mit der angegebenen Spaltennummer. Spaltennummern außerhalb des zulässigen Bereichs werden stumm angezeigt
auf den nächsten gesetzlichen Wert geändert. Zum Beispiel, ips -addcol 2 uid gid 999 Prozentcpu
fügt die Benutzer-ID-Spalte als Spalte 2, die Gruppen-ID-Spalte als Spalte 3 hinzu und fügt die
Prozent-CPU-Spalte nach allen anderen Spalten.

Das -remkol Option entfernt die angegebenen Spalten aus der Liste der Spaltennamen, ohne
kümmern, ob die Spalten in der Liste waren oder nicht.

Das -Sep Option gibt die Trennung zwischen benachbarten Spalten in der Anzeige an. Es hat
ein Argument, das die Anzahl der Leerzeichen ist, die zwischen jedem Spaltenpaar eingefügt werden sollen. Die
Die Standardtrennung beträgt 2 Leerzeichen.

Das -Breite Option gibt die Gesamtbreite an, die für die Anzeige von Spalten verfügbar ist. Es hat
ein Argument, das die Anzahl der verfügbaren Spalten ist. Wenn diese Option nicht gegeben ist und
die Ausgabe ist zu stdout, dann wird die Breite aus dem Kernel gewonnen, wenn stdout ist eine
Terminal, oder wird auf 80 Spalten gesetzt, wenn stdout ist kein Terminal.

Das -breite Option gibt die Breite einer bestimmten Spalte an. Es hat ein oder zwei
Argumente. Das erste Argument ist der Name der Spalte, deren Breite eingestellt werden soll. Die
zweites Argument ist die gewünschte Breite der Spalte. Wenn das zweite Argument nicht angegeben ist,
dann wird die Spaltenbreite auf den Standardwert gesetzt.

Das -vert Option ändert das Ausgabeformat vom standardmäßigen horizontalen in ein vertikales
einer. Im vertikalen Format ist der Status für jeden Prozess mehrzeilig, wobei jeder angezeigt wird
value verwendet eine komplette Zeile. Am Anfang jeder Zeile steht die Spaltenüberschrift und a
Doppelpunkt, es sei denn, der -keine Überschrift Option verwendet wurde. Jeder Wert ist linksbündig zu
die gleiche Position auf der Linie und kann die restliche verfügbare Ausgabebreite nutzen. Die
-Sep Option legt die Anzahl der Leerzeichen zwischen der breitesten Spaltenüberschrift und dem Anfang fest
der Werte. Wenn mehrere Prozesse angezeigt werden, dann trennt eine Leerzeile
ihre Statuszeilen.

Das -Listenspalten Option listet einfach die Namen der verfügbaren Spalten auf und wird dann beendet.
Die Spaltenüberschrift und die Standardbreite der Spalte werden ebenfalls angezeigt.

SELECTION OF Prozesse FÜR DISPLAY


Die Menge der anzuzeigenden Prozesse kann durch eine Reihe von Optionen festgelegt werden. Jedes von diesen
options gibt eine zu erfüllende Bedingung an. Es werden nur Prozesse angezeigt, die alle Anforderungen erfüllen
die angegebenen Bedingungen.

Die Optionen, die Bedingungen angeben, die erfüllt werden müssen, sind -pid, -Benutzer, -Gruppe, -meine, -keine Wurzel,
-nichtselbst, -aktiv, -oben und -kond.

Das -pid Option folgt eine oder mehrere Prozess-IDs und beschränkt die Anzeige auf nur
die angegebenen Prozesse, falls vorhanden. Wenn Sie diese Option mehrmals verwenden, wird die Liste erweitert
der Prozess-IDs angezeigt werden.

Das -Benutzer auf die Option folgt ein oder mehrere Benutzernamen oder Benutzer-IDs und schränkt die
Prozessen mit diesen Benutzer-IDs anzeigen, falls vorhanden. Diese Option mehrmals verwenden
fügt der Liste der anzuzeigenden Benutzer hinzu.

Das -Gruppe auf die Option folgt ein oder mehrere Gruppennamen oder Gruppen-IDs und schränkt die
Prozessen mit diesen Gruppen-IDs anzeigen, falls vorhanden. Diese Option mehrmals verwenden
fügt die Liste der anzuzeigenden Gruppen hinzu.

Das -Programm Option folgt ein oder mehrere Programmnamen und schränkt die Anzeige ein auf
Prozesse mit diesen Programmnamen, falls vorhanden. Ein Programmname ist der Name des
ausführbare Datei, die den Prozess gestartet hat (wie im Programm Säule). Das ist
nicht immer derselbe Name wie in den Befehlszeilenargumenten angezeigt. Verwenden dieser Option
wird mehrmals zur Liste der anzuzeigenden Programme hinzugefügt.

Das -meine Option wählt nur Prozesse aus, die meine Benutzer-ID haben.

Das -keine Wurzel Option deaktiviert die Auswahl von Prozessen, die als Root ausgeführt werden.

Das -nichtselbst Option entfernt die ips Prozess aus dem Display.

Das -aktiv Option zeigt nur Prozesse an, die entweder ausgeführt werden oder ausgeführt wurden
vor kurzem.

Das -oben Option begrenzt die Anzeige auf eine bestimmte Anzahl von Prozessen. Nach der Anzeige
die angegebene Anzahl von Prozessen, weitere werden ignoriert. Wenn kein Argument angegeben wird
die Option, dann wird die Höhe des Terminals oder Fensters verwendet, um die Anzahl der
angezeigte Prozesse.

Die vorherigen Optionen können nur Prozesse auswählen, die einer kleinen Menge möglicher entsprechen
Bedingungen. Das -kond Option ist anders und versteht allgemeine Ausdrücke. Die
Ausdruck wird im Argument nach der Option angegeben. (Das Argument braucht normalerweise
zitieren, um eine Aufspaltung in mehrere Argumente oder eine Interpretation der Token durch . zu vermeiden
die Muschel.)

Sie können Prozesse auswählen, die einer Bedingung entsprechen, die eine beliebige Kombination der Spalte ist
Werte für den Prozess. Dies geschieht durch Angabe eines auszuwertenden Ausdrucks für jeden
Prozess. Wenn das Ergebnis des Ausdrucks nicht null oder nicht null ist, ist der Prozess
ausgewählt. Wenn der Ausdruck nicht ausgewertet werden kann (z. B. beim Versuch, durch Null zu dividieren),
dann wird kein Fehler generiert, aber der Prozess wird nicht ausgewählt.

Die meisten der Ausdruckssyntax von C können auf die Spaltenwerte angewendet werden, wie z
Arithmetik, Vergleiche, logische UNDs und ODERs, die Verwendung von Klammern, das Fragezeichen
Operator und einige integrierte Funktionen. Numerische und String-Konstanten können innerhalb von . verwendet werden
Ausdrücke. Zahlen sind normalerweise dezimal, aber oktal, wenn sie mit einer führenden 0 beginnen, und
hex, wenn mit einem führenden 0x gestartet. Saiten sind in einem Paar passender Einzel- oder
Anführungszeichen. Im Allgemeinen müssen Stringwerte mit Stringwerten verglichen werden, und numerisch
Werte mit numerischen Werten verglichen. In einigen Fällen können numerische Werte jedoch in . umgewandelt werden
Saiten zum Vergleich.

Spaltenwerte werden in den Ausdrücken durch ihre Spaltennamen dargestellt, die durch die
-Listenspalten Option, bei der eindeutige Abkürzungen zulässig sind. Werte aus mehreren Spalten
können im gleichen Ausdruck verwendet und miteinander verglichen werden. Einige Kolumne
Werte sind numerisch, während andere Spaltenwerte Zeichenfolgen sind.

Der aus der Verwendung eines Spaltennamens erhaltene Wert ist normalerweise sein Base Wert, das ist der
unformatierte primitive Informationseinheit für die Spalte. Für Laufzeiten ist dies beispielsweise
ist die Anzahl von Augenblicke der Laufzeit, die der Prozess verwendet hat (dh Hunderte von Sekunden). Eine Basis
value kann je nach Spalte entweder ein numerischer oder ein Zeichenfolgenwert sein.

Sie können den Spaltennamen Qualifizierer zuweisen, um alternative Darstellungen einer Spalte zu verwenden
Wert. Ein Qualifizierer ist ein Wort, das auf den Spaltennamen folgt und durch a . davon getrennt ist
Zeitraum. Die erlaubten Qualifizierer sind Base, erklären und Test.

Verwendung der Base Qualifizierer ist dasselbe wie die Verwendung des Spaltennamens allein (die Basis
Wert).

Verwendung der erklären Qualifier gibt den Spaltenwert als Zeichenfolgenwert zurück, der mit identisch ist
wird für die Spalte angezeigt. Also zum Beispiel für Laufzeiten die erklären Wert enthält Doppelpunkte
und Perioden, die Stunden, Minuten und Sekundenteile trennen.

Verwendung der Test Qualifier gibt einen booleschen Wert zurück (1 für TRUE und 0 für FALSE), der angibt
ob ein nützlicher Aspekt der Spalte wahr ist. Die Bedeutung dieses Tests variiert
je nach Spalte. Für die Spalte mit der übergeordneten PID wird beispielsweise der Test
gibt zurück, ob der Prozess einen Elternteil hat oder nicht (dh nicht 0 oder 1).

Es gibt mehrere Funktionen, die innerhalb von Ausdrücken verwendet werden können. Diese sind Min., max, abs,
strlen, Spiel, CMP, str und my.

Das Min., max und abs Funktionen akzeptieren numerische Argumente und nehmen das Minimum von zwei
Zahlen, das Maximum von zwei Zahlen oder der absolute Wert einer Zahl.

Das strlen Funktion gibt die Länge des String-Arguments zurück, oder wenn eine Zahl angegeben wurde, wird die
Länge der String-Darstellung dieser Zahl.

Das CMP -Funktion vergleicht zwei Argumente und gibt -1, 0 oder 1 zurück, je nachdem, ob die
Das erste Argument ist kleiner, gleich oder größer als das zweite Argument. Wenn beides
Argumente numerisch sind, wird der Vergleich mit ihren Werten durchgeführt. Ansonsten der
Der Vergleich erfolgt als String, wobei ein numerisches Argument in einen Stringwert umgewandelt wird, wenn
erforderlich.

Das Spiel Die Funktion nimmt zwei Argumente an, die Zeichenfolgen oder numerische Werte sein können. Numerisch
Werte werden in den entsprechenden String-Wert umgewandelt. Das erste Argument ist ein String
Wert getestet werden. Das zweite Argument ist ein Platzhaltermuster, mit dem abgeglichen werden soll. Die
Die Wildcard-Syntax ist wie die Dateinamenübereinstimmung, also '?' bedeutet ein beliebiges einzelnes Zeichen, '*' bedeutet
eine beliebige Folge von Zeichen, und '[]' entspricht einzelnen Vorkommen der eingeschlossenen Zeichen.
Die Funktion gibt 1 zurück, wenn die Zeichenfolge übereinstimmt, und 0, wenn dies nicht der Fall ist.

Das -str -Funktion wandelt ihr Argument in einen Zeichenfolgenwert um.

Das my Die Funktion nimmt ein Argument an, bei dem es sich um einen Spaltennamen (möglicherweise qualifiziert) handelt. Es
gibt den Wert dieser Spalte für die zurück ips Prozessdefinierung selbst. Beispielsweise, mein(ttyname)
gibt einen String zurück, der mein Terminalname ist. Um von maximalem Nutzen zu sein, ist die uid, Benutzer,
gid und Gruppe Spalten geben die echte Gruppe und die Benutzer-IDs des Benutzers für die my Funktion, sogar
wenn die ips Programm wurde setuid gemacht.

Namen in Großbuchstaben können in Ausdrücken verwendet werden, bei denen es sich um Makronamen handelt, in die erweitert werden soll
Unterausdrücke. Diese Makronamen sind in den Initialisierungsdateien definiert. Die
Die Erweiterung des Makros muss ein eigenständiger vollständiger Ausdruck sein, mit der richtigen Verwendung von
Klammern und Operatoren. Der Makroname wird durch das Ergebnis der Auswertung der . ersetzt
Unterausdruck und kann daher eine Zahl oder ein String sein. Die Definition eines Unterausdrucks
können auch Makronamen enthalten, die ebenfalls ausgewertet werden.

SORTIERUNG OF ANGEZEIGT Prozesse


Die Standardsortierreihenfolge der angezeigten Prozesse ist nach ihrer Prozess-ID. Aber die Liste der
angezeigte Prozesse können basierend auf einer beliebigen Kombination der Spaltenwerte sortiert werden. Die
Spalten, nach denen sortiert werden soll, müssen nicht auf die Menge der Spalten beschränkt sein, die sortiert werden
angezeigt.

Die erste angegebene Sortierspalte dient zum Sortieren der Prozesse. Wenn zwei oder mehr
Prozesse den gleichen Wert für die erste Sortierspalte haben, dann werden sie nach dem
zweite angegebene Sortierspalte (sofern angegeben). Dieser Prozess dauert solange an, wie es
sind Sortierspalten angegeben und alle Prozesse müssen noch sortiert werden. Wenn Prozesse sind
noch mit übereinstimmenden Sortierwerten übrig, nachdem alle Sortierspalten verwendet wurden, dann
die Prozess-IDs werden für eine abschließende Sortierung verwendet.

Das Sortieren einer Spalte kann entweder eine normale Sortierung oder eine umgekehrte Sortierung sein. In einer normalen Art,
Prozesse mit kleineren Werten werden zuerst angezeigt. Umgekehrt werden Prozesse mit
größere Werte werden zuerst angezeigt. Die Werte werden basierend auf dem Spaltentyp verglichen
zum Sortieren verwendet. Einige Spalten werden nach ganzzahligen Werten sortiert, andere nach
Zeichenfolgenwerte. Auch wenn der angezeigte Wert eine Zeichenfolge ist, kann die Sortierung nach dem
zugrunde liegendes Integral Base Wert. (Die Startzeit Spalte ist ein Beispiel.)

Das -Sortieren, -umsortieren, -sortexpr, -revsortexpr und -nein Optionen werden verwendet, um anzugeben
Werte sortieren.

Das -Sortieren und -umsortieren Optionen werden verwendet, um Spalten an die Sortierliste anzuhängen, entweder für
normale Sortierung oder für umgekehrte Sortierung. Es folgt die Liste der Spalten, die sein sollen
zum Sortieren hinzugefügt.

Das -sortexpr und -revsortexpr Optionen fügen einen beliebigen Ausdruck an die Sortierliste an,
entweder für normale Sortierung oder für umgekehrte Sortierung. Der Ausdruck kann aus Spalte . bestehen
Namen, Zahlen, Zeichenfolgen und Operatoren, wie im -kond Möglichkeit. Die Sortierung erfolgt auf dem
Ergebnis des Ausdrucks, der ein numerischer oder ein Zeichenfolgenwert sein kann.

Das -nein entfernt alle Spalten aus der Sortierliste und lässt nur die Standardsortierung zurück
auf Prozess-ID.

FÄRBUNG OF AUSGABE


Standardmäßig wird der gesamte Ausgabetext von ips wird im normalen Vordergrund angezeigt und
Hintergrundfarben der Ausgabemethode (zB Schwarz auf Weiß für X11-Ausgabe).

Die Informationszeile, die Kopfzeile und die Prozesszeilen können individuell eingefärbt werden durch
Spezifizieren von Vordergrundfarben, Hintergrundfarben und Attributen für sie.

Die Spezifikation einer Farbe wird im Allgemeinen durch eine Zeichenfolge angegeben, die aus drei Teilen besteht
die durch Schrägstriche getrennt sind. Diese drei Teile sind ein Vordergrundfarbname, a
Hintergrundfarbe, Name und Attributbuchstaben.

Wenn nur ein Schrägstrich vorhanden ist, wird nur ein Name für die Vordergrund- und Hintergrundfarbe angegeben,
ohne Attribute. Wenn kein Schrägstrich vorhanden ist, wird nur ein Vordergrundfarbname angegeben
ohne Hintergrundnamen oder Attribute.

Wenn ein Farbname leer ist oder den Sonderwert hat Standard, dann ist diese Farbe die Standardfarbe
Farbe der Ausgabemethode.

Die Attributbuchstaben können entweder sein 'b' um fetten (oder hellen) Text anzuzeigen, oder sonst 'u' zu
angezeigter unterstrichener Text oder beides.

Beispiele für Farbspezifikationen sind: roten, /Blau, grün / gelb, Standard/Standard, // u und
rot//bu. Diese setzen einen roten Vordergrund mit einem Standardhintergrund, einen Standardvordergrund
mit blauem Hintergrund, einem grünen Vordergrund mit gelbem Hintergrund, eine Vorgabe
Vordergrund und Hintergrund, ein Standardvorder- und -hintergrund mit unterstrichenem Text,
und ein roter Vordergrund mit einem Standardhintergrund mit unterstrichenem und fettem Text.

Die verfügbaren Farben hängen von der Ausgabemethode sowie der Namenskonvention der
Farben.

Für die X11-Ausgabe stehen viele Farben zur Verfügung und können explizit benannt oder anders spezifiziert werden
Verwenden von 3 oder 6 hexadezimalen Ziffern nach einem Rautezeichen, um die Farben Rot, Grün und Blau anzugeben
Komponenten.

Für Flüche und Terminalausgabe können bis zu 256 Farben verwendet werden (entsprechend der
Möglichkeiten des Terminals). Die Farben sind Zahlenwerte von 0 bis 255, mit dem
Die ersten 8 sind die Primärfarben, die nächsten 8 die Sekundärfarben, die letzten 20 oder so
Graustufenfarben sind, und die anderen eine beliebige Farbe. Alternativ die Namen von
die acht Primärfarben können verwendet werden.

Die Informationszeile kann mit dem eingefärbt werden -Infofarbe Möglichkeit. Die Kopfzeile kann sein
farbig mit dem -Kopfzeilenfarbe .

Die ausgegebenen Prozesszeilen können durch eine oder mehrere Verwendungen der -Reihenfarbe
Möglichkeit. Diese Option benötigt zwei Argumente. Das erste Argument ist eine Farbspezifikation.
Das zweite Argument ist ein zu bewertender Ausdruck für den Prozess, der in der
Reihe, wie in der -kond Möglichkeit. Wenn die Bedingung wahr ist, wird die Zeile im
angegebene Farbe.

Wenn mehrere -Reihenfarbe Optionen verwendet werden und mehrere Bedingungen einer Zeile entsprechen, dann die Farbe
der letzten übereinstimmenden Bedingung wird für die Zeile verwendet.

Zeilen, die nicht mit den Bedingungen in irgendeiner übereinstimmen -Reihenfarbe Option sind in der Farbe eingefärbt
Standard-Vorder- und Hintergrundfarben.

SPEZIFIKATION DISPLAY METHODE


Die Ausgabe von ips kann mit einer von mehreren Methoden angezeigt werden. Die -wenn,
-Schleife, -fluche und -x11 Optionen werden verwendet, um anzugeben, welche der Anzeigemethoden
Gebraucht. Die Standardoption ist -wenn.

Beide der -wenn und -Schleife options spezifiziert eine Anzeigemethode, die den Prozess schreibt
Status zu stdout Zeile für Zeile ohne Cursor-Adressierungssequenzen. Eine solche Ausgabe ist
geeignet zum Speichern in eine Datei mit Umleitung der Standardausgabe oder zur Verarbeitung in a
Pipeline. Der Unterschied zwischen den beiden Optionen gibt an, ob die Ausgabe a . ist oder nicht
einmaliger Schnappschuss oder soll auf unbestimmte Zeit in einer Schleife wiederholt werden. Es sind keine Grenzen gesetzt
Anzahl der Zeilen, die geschrieben werden können. Die -klar Option kann mit beiden verwendet werden
Optionen zum Schreiben der standardmäßigen ANSI-Bildschirm-Escape-Sequenz vor jeder Anzeige des
Prozessstatus.

Das -fluche Option gibt eine Anzeigemethode an, die die Flüche(3) Bibliothek für
effiziente Aktualisierung des Bildschirms unter Verwendung von Cursor-Adressierungssequenzen. Diese Anzeige verwendet die
gesamten Terminal-Bildschirm. Die Größe des Bildschirms kann bei Bedarf geändert werden. Die Anzahl der Zeilen von
Informationen sind durch die Größe des Bildschirms begrenzt, sodass nur eine Teilmenge des Status möglicherweise
auf einmal sichtbar sein. Die Anzeige kann jedoch automatisch oder manuell gescrollt werden, damit
dass schließlich der gesamte Status zu sehen ist. Die ips Programm ist im Looping-Modus für
diese Anzeigemethode. Das Programm kann durch Eingabe der q or ESCAPE Zeichen
in das Terminal.

Das -x11 Option gibt eine Anzeigemethode an, die ein rohes X11-Fenster verwendet (dh ohne
mit einem Terminal-Emulator wie z Xterm). Die Größe des Fensters kann bei Bedarf geändert werden. Die
Die Anzahl der Informationszeilen wird durch die Anzahl der Zeilen im Fenster begrenzt, sodass nur
eine Teilmenge des Status kann gleichzeitig sichtbar sein. Die Anzeige kann jedoch gescrollt werden
automatisch oder manuell, damit schließlich der gesamte Status eingesehen werden kann. Die ips
Programm befindet sich für diese Anzeigemethode im Schleifenmodus. Das Programm kann beendet werden durch
das tippen q or ESCAPE Zeichen in das Fenster oder durch Schließen des Fensters mit der
Fenstermanager.

Das -Anzeige, -Geometrie, -Schriftart, -Vordergrund und -Hintergrund Optionen können zum Einstellen verwendet werden
Anzeigename, Fenstergeometrie, Schriftname, Vordergrundfarbe und Hintergrundfarbe für
das X11-Fenster. Wenn kein Anzeigename festgelegt ist, wird der Standardname mit dem DISPLAY
Umgebungsvariable verwendet wird. Die Standardfenstergeometrie ist 150x50. Die Standardschriftart ist
fixiert Schriftart, bei der es sich um eine Monospace-Schriftart (dh eine Schriftart mit fester Breite) handelt. Wenn eine andere Schriftart ist
angegeben, sollte es sich auch um eine Monospace-Schrift handeln. Der Standardvorder- und -hintergrund
Farben sind Schwarz und Weiß.

Hinweis: Der X11-Anzeigemodus ist optional und muss in . kompiliert worden sein ips als es war
gebaut. Dies erlaubt ips für Systeme gebaut werden, auf denen keine X11-Bibliotheken installiert sind. Wenn
deine Version von ips keine X11-Unterstützung hat, dann ist die Verwendung der -x11 Option wird
eine Fehlermeldung erzeugen und fehlschlagen.

Für alle Looping-Anzeigemethoden ist die -Schlaf Option kann verwendet werden, um den Schlaf einzustellen
Zeit in Sekunden zwischen Updates. (Wenn nicht angegeben, beträgt die Standardschlafzeit 10 Sekunden.)
Das Argument dieser Option kann ein Festkommawert sein, so dass beispielsweise ein Wert von
0.5 gibt einen Schlaf von 1/2 Sekunde an.

Das -scrollen und -Überlappung Optionen können für die Anzeigemodi Curses und X11 verwendet werden. Die
-scrollen Option legt das Zeitintervall in Sekunden für das automatische Scrollen des Displays fest, wenn
Es werden mehr Prozesse angezeigt, als passen. Die Standard-Scrollzeit beträgt 30 Sekunden. Notiz
dass das Scroll-Intervall keinen Einfluss darauf hat, wie oft die Anzeige aktualisiert wird (verwenden Sie -Schlaf
dafür). Es bedeutet nur, dass bei der nächsten Aktualisierung der Anzeige die erforderliche Zeit
seit das letzte Scrollen verstrichen war, dann wird für diese Aktualisierung gescrollt. Es könnte
Es dauert viele Aktualisierungszyklen, bevor das Scrollen den gesamten Prozessstatus anzeigt.
Das Scrollen wickelt sich um, so dass, nachdem der letzte Vorgang im Display zu sehen war, dann
die nächste gescrollte Anzeige kehrt wieder zum ersten Vorgang zurück. Eine Scrollzeit von Null
deaktiviert das automatische Scrollen vollständig.

Das -Überlappung Option gibt die Anzahl der Prozessstatuszeilen an, die dupliziert werden
wenn Scrollen auftritt. Die Standardüberlappung beträgt eine Linie.

FADEN HANDHABUNG


Abhängig von den verwendeten Optionen wird die ips Programm zeigt entweder den Status der Prozesse in
das System oder den Status der Threads im System. Ohne Optionen nur Prozesse
werden gezeigt. Um Thread-Informationen anzuzeigen, - Threads anzeigen Option verwendet werden.

Einige Prozesse bestehen nur aus einem Ausführungs-Thread, was bei den meisten einfachen . der Fall ist
Programme, die keine Verwendung für Multithreading haben. Für diese Prozesse ist die Anzeige von
Prozesse oder Threads liefert die gleichen Ergebnisse und es gibt keine Probleme bei der Interpretation
ihren Status.

Einige Prozesse enthalten jedoch mehr als einen Ausführungsthread. Threads teilen viele von
ihre Attribute miteinander, wie ihr Speicher und geöffnete Dateien, haben aber unterschiedliche
Programmzähler, Stapelzeiger, Laufzeit und Prozesszustand. Die Fäden eines Prozesses
alle haben dieselbe Prozess-ID, aber eine andere ID namens Thread-ID (tid), die
unterscheidet sie. Einer der Threads wird als Haupt-Thread bezeichnet und hat eine Thread-ID
die mit der Prozess-ID identisch ist.

Wann ips zeigt nur Prozesse an, dann wird der Status für einen Prozess angezeigt, der aus mehreren besteht
Threads können leicht irreführend sein. Die freigegebenen Attribute werden korrekt angezeigt für die
Prozess. Einige der eindeutigen Statuswerte sind jedoch nur die des Hauptthreads,
während diese Werte für die anderen Threads ignoriert werden. Beispiele für diese Werte sind die
Programmzähler und den Prozesszustand.

Insbesondere der Prozessstatus kann einen sehr irreführenden Status des Prozesses geben. Wenn die
Haupt-Thread schläft, aber ein anderer Thread läuft ständig, der Status des
Prozess kann fälschlicherweise als „S“ gemeldet werden. In diesem Fall ist die Laufzeit des Prozesses
steigt schnell an und wird als aktiv angezeigt, scheint jedoch nie zu laufen.

Die Laufzeit eines Prozesses ist die Summe aller Laufzeiten der einzelnen Threads, und
ist also grundsätzlich sinnvoll. Beachten Sie, dass in einem Multi-CPU-System, in dem mehrere Threads
gleichzeitig ausgeführt wird, kann die Laufzeit eines Prozesses schneller als die Uhr erscheinen
Rate, da mehrere Threads die gesamte verstrichene Zeit zur Prozesslaufzeit beitragen können.

Wann ips Thread-Status anzeigt, werden alle oben genannten Probleme vermieden. Jeder Thread
eines Prozesses wird dann mit seinem korrekten Status angezeigt. Dazu gehören der Programmzähler,
den Prozessstatus und die Laufzeit. In diesem Fall werden laufende Threads angezeigt
ihr Zustand als 'R' wie erwartet. Beachten Sie auch, dass bei der Anzeige von Threads die Anzeige der
Der Haupt-Thread ist nur der des jeweiligen Threads, sodass seine Laufzeit nicht mehr diejenige ist
Summe aller Threads.

Auch wenn nur Prozesse angezeigt werden, können die Statusinformationen für den Prozess
optional genauer sein als oben angegeben. Wenn die -benutzt Fäden Option verwendet wird oder wenn
Staaten Spalte verwendet wird, dann wird die ips Programm untersucht die Zustände aller
theads eines Prozesses und wählen Sie den wichtigsten Status unter allen Threads als den
Zustand, der für den gesamten Prozess angezeigt werden soll. Zum Beispiel die Prioritätsreihenfolge der Zustände
beginnt mit den Zuständen 'R', 'D' und 'S', sodass beispielsweise, wenn ein Thread ausgeführt wird,
dann ist der Status des Prozesses wie erwartet 'R'.

Das Staaten Spalte zeigt alle Zustände der Threads eines Prozesses mit mehreren
Buchstaben und Zahlen zählen. Ein Wert von 'R3DS2' zeigt beispielsweise an, dass es
drei laufende Threads, ein Thread in einem Datenträger-E/A-Wartemodus und zwei schlafende Threads.

COMMAND SPEISUNG WÄHREND LAUFEN


Die Flüche- und X11-Anzeigemodi ermöglichen die Eingabe von Befehlen während der Ausführung.
Befehle sind nicht sichtbar, wenn sie in den Bildschirm oder das Fenster eingegeben werden. Die Befehle werden gelesen
Zeichen für Zeichen, damit sie nach Beendigung sofort ausgeführt werden ohne
einen abschließenden Zeilenumbruch erfordern. Wenn es sich bei dem Befehl um einen Befehl handelt, der die Anzeige beeinflusst,
Der aktuelle Schlaf wird abgebrochen, damit das Display das Ergebnis anzeigen kann.

Einige Befehle akzeptieren ein optionales numerisches Argument, das direkt vor dem eingegeben wird
Befehl. Dieses numerische Argument kann ein nicht negativer ganzzahliger Wert oder ein nicht negativer sein
Fixpunktzahl. Befehle, die nur einen ganzzahligen Wert akzeptieren, ignorieren alle Nachkommastellen
Teil. Wenn kein numerisches Argument angegeben wird, verwenden die Befehle einen Standardwert. Wenn eine
numerisches Argument wurde eingegeben, aber Sie möchten es nicht mehr verwenden (wie wenn Sie a
Tippfehler), dann werden die Rücktaste oder die Löschtaste alle teilweise getippten vollständig entfernen
numerisches Argument. An dieser Stelle können Sie ein neues numerisches Argument eingeben (falls gewünscht).

Das s Befehl setzt die Schlafzeit auf die oben angegebene Anzahl von Sekunden
numerisches Argument. Der Befehl akzeptiert einen Festkommawert, sodass weniger als eins schläft
zweite sind möglich. Wenn kein Argument angegeben wird, wird die Ruhezeit auf den Standardwert gesetzt
Wert von 10 Sekunden.

Das a Befehl setzt die automatische Bildlaufzeit auf die im angegebene Anzahl von Sekunden
vorangehendes numerisches Argument. Wenn kein Argument angegeben wird, wird die Autoscroll-Zeit auf gesetzt
der Standardwert von 30 Sekunden. Ein Wert von 0 deaktiviert das automatische Scrollen.

Das t und b Befehle ändern die Anzeige, um den Anfang oder das Ende der Prozessliste anzuzeigen.
(Dies sind die erste und letzte Seite der Anzeige.)

Das n und p Befehle ändern die Anzeige, um die nächste oder vorherige Seite des Prozesses anzuzeigen
aufführen. Wenn die nächste Seite das Ende der Liste überschreitet, wird die erste Seite angezeigt.
Wenn die vorherige Seite vor dem Anfang der Liste liegt, ist die letzte Seite ebenfalls
angezeigt.

Das o Der Befehl setzt die Anzahl der Überlappungszeilen zwischen den Datenseiten auf den Wert
im vorhergehenden numerischen Argument angegeben. Wenn kein Argument angegeben wird, ist die Überlappung
value wird auf den Standardwert von 1 Zeile gesetzt.

Das i Befehl aktiviert oder deaktiviert eine Informationszeile am oberen Rand des Displays, die
zeigt die Gesamtzahl der Prozesse und Threads im System, die Anzahl der Threads oder
Prozesse, die gerade angezeigt werden, die Schlafzeit, die aktuell angezeigte Seite
Nummer, und wenn die Anzeige eingefroren ist, ein Hinweis auf diese Tatsache. Ohne Argumente,
die Anzeige der Informationszeile wird umgeschaltet. Ein Nullargument deaktiviert die Leitung. EIN
Argument ungleich null aktiviert die Zeile.

Das h Befehl aktiviert oder deaktiviert die Spaltenkopfzeile am oberen Rand der Anzeige.
Ohne Argumente wird die Anzeige der Kopfzeile umgeschaltet. Ein Nullargument
deaktiviert die Kopfzeile. Ein Argument ungleich null aktiviert den Header.

Das 'F' Befehl aktiviert oder deaktiviert den eingefrorenen Zustand der Anzeige. Ohne irgendetwas
Argumente wird der eingefrorene Zustand umgeschaltet. Ein Argument ungleich Null friert die Anzeige ein. Eine Null
Argument taut die Anzeige auf. Während die Anzeige eingefroren ist, ips Programm wartet einfach
für weitere Befehle (ohne Berücksichtigung der normalen Sleep- und Autoscroll-Zeiten). Die Automatik
Erfassung neuer Prozessdaten ist deaktiviert. Das automatische Scrollen ist ebenfalls deaktiviert.
Befehle können jedoch weiterhin eingegeben werden, während die Anzeige eingefroren ist, um das Scrollen durchzuführen oder
Prozessstatusaktualisierung bei Bedarf.

A SPACE or RÜCKKEHR Zeichen aktualisiert die Anzeige sofort. Neue Prozessdaten werden
für die Anzeige gesammelt. Dies geschieht auch dann, wenn die Anzeige derzeit eingefroren ist.

Das r Der Befehl aktualisiert den Inhalt der Anzeige, um eventuelle Störungen zu beheben. Das ist meistens
für Flüche gedacht, wenn andere Programme auf dem Bildschirm ausgeben oder wenn das Terminal
Emulator verhält sich falsch.

A q or ESCAPE Charakter beendet ips.

Alle anderen Zeichen sind illegal und läuten die Glocke.

INITIALISIERUNG DATEIEN UND MAKROS


Der Einfachheit halber und damit Benutzer die Ausgabe nach ihren Wünschen konfigurieren können, ips liest zwei
Initialisierungsdateien beim Start. Die erste zu lesende Datei ist das System
Initialisierungsdatei /etc/ips.init die verwendet wird, um Systemstandardeinstellungen für ips.

Die zweite zu lesende Initialisierungsdatei ist die Benutzerinitialisierungsdatei $HOME/.ipsrc
befindet sich im Home-Verzeichnis jedes Benutzers. Dadurch kann jeder Benutzer das System ändern
Voreinstellungen für den eigenen Gebrauch. Das Lesen der Initialisierungsdatei des Benutzers kann deaktiviert werden
mit dem -noinit Möglichkeit. Falls verwendet, muss diese Option die erste Option nach dem . sein
Befehlsname.

Der Inhalt der Initialisierungsdateien ist sehr einfach. Jede Zeile der Datei kann
leer, ein Kommentar oder eine Makrodefinition sein. Wenn eine Zeile mit einem umgekehrten Schrägstrich endet, wird der
Backslash wird durch ein Leerzeichen ersetzt und die nächste Zeile wird daran angehängt. Kommentarzeilen haben
ein Hashmaskenzeichen als erstes nicht leeres Zeichen. Kommentarzeilen und Leerzeilen
werden ignoriert.

Die erste Zeile der Initialisierungsdateien muss aus dem Wort . bestehen #ips#, sonst ein Fehler
wird eine Nachricht generiert und das Programm wird beendet.

Makrodefinitionen werden verwendet, um einzelne Argumente auf der Befehlszeile durch möglicherweise . zu ersetzen
große Ersatzstrings mit vielen Argumenten. Die Ersatzsaiten können selbst verwenden
Makros, und diese neuen Makros werden ebenfalls entfernt und ersetzt. Makroersetzung geht weiter
bis entweder keine Makros mehr ersetzt werden müssen oder bis die zulässige Makrotiefe erreicht ist
übertroffen.

Makronamen unterscheiden sich von Nicht-Makros normalerweise dadurch, dass Makros mit beginnen
Großbuchstaben. Da Spaltennamen alle in Kleinbuchstaben geschrieben sind, gibt es kein Problem
Unterscheidung zwischen einem Spaltennamen und einem Makronamen.

Es gibt drei verschiedene Arten von Makros in ips. Diese Typen unterscheiden sich durch die
Ort der Makroverwendung in der Befehlszeile. Die drei Arten von Makros sind
Befehle, Spalten und Ausdrücke. Befehlsmakros definieren eine Liste von Befehlszeilenoptionen
und ihre Argumente. Spaltenmakros definieren eine Liste von Spaltennamen. Ausdrucksmakros
Definiere einen Unterausdruck für die -kond, -sortexpr und -revsortexpr Optionen.

Weil die Bedeutung dieser drei Arten von Makros so unterschiedlich ist und die Ersetzung
Strings für die Makros würden im Allgemeinen keinen Sinn machen, wenn sie für einen anderen Typ verwendet würden
Makro haben die drei Arten von Makros unabhängige Namensräume. Dies bedeutet, dass das gleiche
Makroname könnte dreimal definiert werden, einmal für jeden Makrotyp. (Aber das ist
wahrscheinlich schlechte Praxis).

Um ein Makro in einer Initialisierungsdatei zu definieren, verwenden Sie eines der Schlüsselwörter zu erhalten, Überblick,
or ausdr, gefolgt vom Makronamen und den Ersetzungszeichenfolgen für das Makro, alles auf einem
line (unter Berücksichtigung der Verwendung von Backslashs zum Fortsetzen von Zeilen). Die Makronamen müssen
beginnen Sie mit einem Großbuchstaben.

Das zu erhalten Das Schlüsselwort definiert ein Makro als eine oder mehrere Befehlszeilenoptionen. Die
Ersatzzeichenfolge besteht aus einer Reihe von durch Leerzeichen getrennten Optionen und Argumenten, wie sie verwendet werden
in der Befehlszeile, einschließlich der führenden Bindestriche für die Optionen. Argumente für Optionen
muss in der Makroerweiterung selbst enthalten sein. Die Makroerweiterung kann selbst
enthalten Makros, die auch um weitere Optionen erweitert werden.

Als einzige Ausnahme von der Anforderung, dass Makronamen in Großbuchstaben geschrieben werden, wenn ein Wort
erscheint auf der ips Befehlszeile, die keine Option ist und die kein Argument sein kann
für eine Option wird das Wort mit seinem in Großbuchstaben umgewandelten Anfangsbuchstaben behandelt
als Optionsmakro zu erweitern.

Ein wichtiger Sonderfall davon ist ein Wort, das unmittelbar nach dem getippt wird ips Programmname.
Dies ist normalerweise ein Makroname, der ein bestimmtes Anzeigeformat definiert. Zum Beispiel,
der Befehl ips Top würde das Optionsmakro mit dem Namen erweitern Top was definiert werden könnte zu
emulieren die Ausgabe von Top

Das Überblick Das Schlüsselwort definiert ein Makro als eine Liste von Spaltennamen. Der Ersatz
string besteht aus einer Reihe von durch Leerzeichen getrennten Spaltennamen. Die Makroerweiterung kann
selbst enthalten Makros, die auch in weitere Spaltennamen erweitert werden.

Das ausdr Schlüsselwort definiert ein Makro, das ein Ausdruck ist, der für die -kond, -sortexpr, oder
-revsortexpr Optionen. Die Ersetzungszeichenfolge besteht aus einem vollständigen Ausdruck mit
Zahlen, Zeichenfolgen, Spaltennamen und möglicherweise andere Makros, die ebenfalls erweitert werden.

Hier ist ein Beispiel für eine gültige Initialisierungsdatei:

#ips#

# Das spezielle Befehlsmakro wird standardmäßig ausgeführt
Option SysInit -col pid Parent User Summary Laufzeitbefehl

# Definitionen für andere interessante Befehle
Option Stop -cond Stop
Option Cmd -col pid-Befehl -sep 1
Option Env -col pid-Umgebung -sep 1
Option Vert -vert -sep 1 -col Alle
Option Mytty -cond Mytty

Option Top -sep 1 -col pid Benutzerzusammenfassung Laufzeit \
Prozentcpu-Befehl -revsort Prozentcpu \
-Runorder revsortieren -fluche -clear -active

# Definitionen für Spaltengruppen
Spalte Laufzeit Leerlaufzeit Prozentcpu
Spalte Regs eip esp
Spalte Sigs signalcatch signalignore signalblock
Spalte Größe Residentsetsize Prozent Speichergröße
Spalte Stdio stdin stdout stderr

# Alle Spalten
Spalte Alle pid parentpid uid user gid group \
Prozessgruppe ttyProzessgruppe \
Zustandsflaggen nette Priorität Echtzeitprioritätsrichtlinie \
Systemzeit Benutzerzeit Laufzeit Kindlaufzeit \
Threads Prozentcpu-Runorder \
Bewohnergröße Größe Prozentspeicher \
aktive Leerlaufzeit Startzeit Alter Realtimer \
eip esp Wartekanal Wartesymbol \
Seitenfehler Nebenseitenfehler Hauptseitenfehler \
Seitenswaps untergeordnete Seitenswaps \
signalcatch signalignore signalblock \
ttyname ttydevice \
openfiles stdin stdout stderr stdio \
aktuelles Verzeichnis rootdirectory ausführbare Datei \
Übersicht Programmbefehlsumgebung

# Definitionen für Ausdrücke, die in Bedingungen verwendet werden
expr Ich (uid == meine(uid))
expr-Server (uid < 100)
expr Benutzer !Server
expr Stop (Zustand == 'T')
expr Mytty (ttydev == my(ttydev))

Die spezielle Option Makronamen von SysInit und UserInit werden automatisch erweitert (wenn sie
definiert sind) zu Beginn jedes Laufs von ips. Diese Makros werden verwendet, um zu initialisieren
Parameter auf Standardwerte. Beispiele für diese Initialisierung sind die Angabe der Vorgabe
Liste der anzuzeigenden Spalten und die Standardschlafzeit beim Loopen. Die SysInit
Die Makrodefinition ist normalerweise in der Systeminitialisierungsdatei enthalten, während die
UserInit Die Makrodefinition ist normalerweise in der Initialisierungsdatei des Benutzers enthalten.
Parameter, die von diesen Makros festgelegt werden, können mithilfe von Optionen in der Befehlszeile geändert werden.

SINNVOLL MAKROS


Die standardmäßig mitgelieferte Systeminitialisierungsdatei /etc/ips.init enthält viele Makros von
Interesse. In diesem Abschnitt werden einige der bereitgestellten Standardmakros beschrieben.
Denken Sie daran, dass diese Makros in der Befehlszeile in Kleinbuchstaben verwendet werden können.

Warnung: Diese Makros funktionieren auf Ihrem System möglicherweise nicht wie hier beschrieben, da sie
kann vom Systemadministrator geändert werden. Der Systemadministrator hat möglicherweise auch hinzugefügt
andere nützliche Makros, die hier nicht beschrieben werden. Sie sollten das Makro untersuchen
Definitionen in der Initialisierungsdatei, um den vollen Nutzen aus ips.

Das Standardmakro SysInit fügt eine Bedingung hinzu, um nur Ihre eigenen Prozesse anzuzeigen. Also in Ordnung
Um die Prozesse anderer Benutzer zu sehen, müssen Sie diese Bedingung explizit deaktivieren oder verwenden Sie a
Makro, das es deaktiviert. Die Keine Sekunde Makro entfernt alle Bedingungen bei der Auswahl von
Prozesse, mit denen Sie alle Prozesse sehen können.

Die Spalte mit dem Benutzernamen wird standardmäßig nicht angezeigt. Die Lang Makro ändert die Anzeige
Spalten, um den Benutzernamen und die übergeordnete pid einzuschließen.

Das Alle Makro kombiniert die Keine Sekunde und Lang Makros, um alle Prozesse in einer schönen Darstellung anzuzeigen.

Das Pack Makro zeigt viele nützliche Spalten zusammen an, einschließlich der Benutzer- und Gruppen-IDs, die
Status von stdio und das Prozessalter.

Das Cmd und Unserer Partner Makros zeigen nur die Prozess-ID und die Befehlszeile oder Umgebung an, also
dass Sie von diesen Spalten viel mehr als üblich sehen können.

Das Mappen Makro zeigt dateibezogene Spalten an, z. B. die Anzahl der geöffneten Dateien, die
Status von stdio sowie das aktuelle und das Stammverzeichnis.

Das Zentralprozessor Makro zeigt eine Momentaufnahme der aktuell aktiven Prozesse. Es hat eine zwei
zweiten Schlaf, um laufende Prozesse zu erkennen. Die Top Makro zeigt die gleiche Anzeige
Format, aber in einer Schleife mit Flüche und einschließlich kürzlich aktiver Prozesse.

Die Breite der Laufzeitspalten reicht nicht aus, um wirklich große Laufzeiten aufzunehmen. Die
Widerun Makro vergrößert die Breite dieser Spalten, um größere Laufzeiten anzuzeigen.

Das Weit Makro macht die Ausgabebreite so groß wie möglich und ermöglicht die Anzeige von
sehr lange Befehlszeilen oder Umgebungen.

Das Grün Makro setzt das Ausgabeformat auf vertikal und zeigt jeden Spaltenwert an.

Das Tty Makro fügt eine Bedingung hinzu, um nur Prozesse anzuzeigen, die sich auf einem Terminal befinden.

Das Mytti Makro fügt eine Bedingung hinzu, um nur Prozesse anzuzeigen, die sich auf Ihrem eigenen Terminal befinden.

Das Stoppen Makro fügt eine Bedingung hinzu, um gestoppte Prozesse anzuzeigen.

anderes MERKMALE


Es gibt mehrere andere Funktionen von ips die mit Befehlszeilenoptionen angegeben werden können.
Diese Optionen sind -Standard, -lesen, -einschlafen, -keine Überschrift, -Aktivzeit, -Todeszeit,
-Synchronzeit, -listmakros, -Listenspalten, -Ausführung, -Ende und -Hilfe.

Das -Standard Option ist nützlich, um Parameter zurückzusetzen, die durch vorherige Optionen eingestellt wurden.
Insbesondere ist es sinnvoll, Parameter, die durch die Initialisierung eingestellt wurden, zurückzusetzen
Dateien. Es akzeptiert einen oder mehrere Optionsnamen (ohne führende Bindestriche). Beliebiger Parameter
gesetzt durch die angegebene Option wird in den Anfangszustand zurückgesetzt, als wenn die ips Programm
gestartet. Zum Beispiel, -Standard pid entfernt jede vorherige Einschränkung der Prozess-IDs
das kann man zeigen.

Die Ausgabe von der -Hilfe Option beschreibt kurz die Verwendung der verbleibenden Optionen.

SPALTE BESCHREIBUNGEN


Einige der Spalten zum Anzeigen sind selbstverständlich. Aber viele von ihnen brauchen einen
Erklärung, und dies geschieht hier. Aufgrund der Berechtigungen auf / proc, einige der Spalte
Werte sind möglicherweise nicht für jeden Prozess verfügbar. Als markierte Spalten eingeschränkt sind nur
verfügbar, wenn der Prozess eine eigene Benutzer-ID hat, Sie als Root ausführen oder die ips Programm
selbst ist auf root gesetzt.

Das Zustand Spalte zeigt den aktuellen Status des Prozesses. Dies ist ein einzelner Buchstabe, wobei
'R' ist lauffähig, 'D' ist Festplatten-E/A, 'T' ist gestoppt, 'S' schläft, 'Z' ist Zombie und ' '
ist tot (nicht vorhanden).

Das eip und esp Spalten zeigen den Befehlszeiger und den Stapelzeiger des Prozesses.
Der Befehlszeiger wird auch als Programmzähler oder PC bezeichnet.

Das Wartekanal Spalte zeigt die Hex-Adresse innerhalb des Kernels, die der Prozess ist
schlafen weiter. Dies ist null, wenn der Prozess nicht schläft. Normalerweise unterschiedliche Gründe für
Schlafen verwenden verschiedene Adressen.

Das Wartesymbol Spalte zeigt die symbolische Adresse innerhalb des Kernels, die der Prozess ist
schlafen weiter. Dies ist leer, wenn der Prozess nicht schläft.

Das Programm und Befehl Spalten zeigen den Programmnamen und die Befehlszeile des Prozesses.
Der Programmname ist nur der Name der ausführbaren Datei ohne Argumente. Die
Befehlszeile zeigt die Argumente an, mit denen das Programm gestartet wurde. Wenn keine Befehlszeile
Argumente an das Programm geliefert wurden, dann zeigt diese Spalte den eingeschlossenen Programmnamen an
in Klammern.

Das Wartezeit Spalte zeigt die Anzahl der Minuten, die der Prozess inaktiv war. Ein Leerlauf
Prozess ist ein Prozess, der (nachweisbar) nicht im angegebenen Intervall gelaufen ist. Der Leerlauf
Zeit ist nur durch die Untersuchung von Prozessen über die Zeit bekannt, und daher ist die wahre Leerlaufzeit von a
Prozess, der vorher existierte ips ausgeführt wurde, ist nicht bekannt. In diesen Fällen beträgt die Leerlaufzeit
einfach die zeit die ips gelaufen ist, und die Zeiten sind mit a . gekennzeichnet
führendes Pluszeichen.

Das aktiv Spalte zeigt an, ob der Prozess aktiv war oder nicht. Es zeigt einen der
Werte "aktiv" oder "leer". Diese Spalte ist hauptsächlich für die Verwendung beim Sortieren vorgesehen und
auswählen.

Das ttyname und ttydevice Spalten zeigen das steuernde Terminal des Prozesses, das ist
normalerweise das Terminal, an dem sich der Benutzer angemeldet hat. Das Gerät ist die Kernel-ID für die
Terminal und ist nur eine Zahl. Der Name wird durch die Suche gefunden / dev für einen Charakter
Gerät, das dieselbe ID hat, und dann Anzeige des Gerätenamens mit dem / dev entfernt.

Das Benutzer, uid, Gruppe und gid Spalten zeigen die Benutzer-IDs und Gruppen-IDs eines Prozesses. Die
uid und gid sind die vom Kernel verwendeten numerischen IDs. Der Benutzer und die Gruppe sind die
Umwandlung dieser IDs in Benutzernamen und Gruppennamen, wie in der / etc / passwd und
/ etc / group Dateien.

Das Prozentcpu Spalte zeigt den Prozentsatz der CPU-Zeit, die der Prozess in a . verbraucht hat
ein bestimmtes aktuelles Zeitintervall, das als Abtastintervall bezeichnet wird. Die Proben werden bei a
maximal fünfmal pro Sekunde entsprechend der aktuellen Schlafzeit des ips
Programm. Das Abtastintervall ist ein gleitender Wert, um einen durchschnittlichen CPU-Prozentsatz zu ergeben
über eine bestimmte Anzahl von Sekunden. Dadurch werden die Werte weniger "sprunghaft" als augenblicklich
CPU-Prozentsätze würden sich eher wie die Systemlast-Durchschnitte ergeben und verhalten. Die Probe
Intervall wird mit dem eingestellt -Prozentsekunden Option, die einen Wert von 0 bis 20 haben kann.
Das standardmäßige Abtastintervall beträgt 10 Sekunden. Die prozentuale Laufzeit beträgt das 100-fache der
Quotient der während des Abtastintervalls verbrauchten Laufzeit durch das Abtastintervall selbst.
Beachten Sie, dass bei einem Multithread-Prozess auf einem Multi-CPU-System die prozentuale Laufzeit
ein Vielfaches von 100 erreichen.

Das Einwohnerzahl Spalte ist die Anzahl der K Speicher, die vom Prozess verwendet werden. Seiten von a
Prozesse, die sich nicht im Speicher befinden, werden in dieser Spalte nicht gezählt.

Das Startzeit und Alter Spalten zeigen die Zeit an, zu der der Prozess erstellt wurde. Der Beginn
time ist die Tageszeit, zu der der Prozess gestartet wurde, und wenn der Prozess länger bestanden hat
einen Tag, dann die Anzahl der Tage, vor denen der Prozess gestartet wurde. Das Alter ist das
Anzahl der Minuten, die der Prozess bestanden hat, und ist die Differenz zwischen dem aktuellen
Uhrzeit und die Uhrzeit, zu der der Prozess gestartet wurde.

Das Fahnen Spalte zeigt einige mit dem Prozess verbundene Kernel-Flags in Hex.

Das kleinere Seitenfehler, Majorpagefehler und Seitenfehler Spalten zeigen die Anzahl der Nebenseiten an
Fehler, Hauptseitenfehler und die Gesamtseitenfehler des Prozesses. Kleine Seitenfehler
sind Fehler auf Seiten, die keine Datenträger-I/O erfordern, die beim Schreiben oder Berühren kopiert werden
leere Seiten. Major Page Faults sind Fehler, die Festplatten-I/O erfordern, wie z. B. das Einlesen von
Textdateiseiten oder Auslagerungsseiten.

Das Signalfang, signalignorieren und Signalblock Spalten zeigen den Status der Signalverarbeitung
für den Prozess. Jeder dieser Werte ist ein Hex-Wert, wobei das Signal N die Bitnummer N-1 . ist
(gezählt ab Bit 0 rechts). Gefangene Signale sind solche, für die ein Signalhandler
ist installiert. Ignorierte Signale sind solche, bei denen der Prozess Signale ignoriert.
Gesperrte Signale sind solche, deren Zustellung aussteht, die aber vom Prozess gesperrt wurden
aus geliefert werden.

Das openfiles Spalte zeigt die Anzahl der geöffneten Dateien an, die der Prozess hat. Diese Spalte
ist eingeschränkt.

Das Laufordnung Spalte zeigt die relative Ausführungsreihenfolge der Prozesse. Die Laufreihenfolge ist a
monoton ansteigender Wert, der die Anzahl der Prozessabtastungen darstellt, die ips hat
gemacht, seit es angefangen hat. Prozessen wird immer dann der aktuelle Run-Order-Wert zugewiesen, wenn sie
seit der letzten Probe aktiv waren. Prozesse mit einem größeren Laufauftrag
Wert sind in letzter Zeit gelaufen.

Das Aktuelles Verzeichnis Spalte gibt das aktuelle Arbeitsverzeichnis des Prozesses in der
Kernel-interne Werte von Gerätenummer und Inode-Nummer, getrennt durch einen Doppelpunkt. Die
Gerätenummer ist in Hex und die Inode-Nummer in Dezimal. Diese Spalte ist eingeschränkt.

Das Wurzelverzeichnis Spalte gibt das Wurzelverzeichnis des Prozesses im internen des Kernels an
Werte der Gerätenummer und der Inode-Nummer, getrennt durch einen Doppelpunkt. Die Gerätenummer ist in
hex, und die Inode-Nummer ist dezimal. Diese Spalte ist eingeschränkt.

Das ausführbar Spalte gibt die Gerätenummer und Inode-Nummer der ausführbaren Datei für
den Vorgang, getrennt durch einen Doppelpunkt. Die Gerätenummer ist in Hex und die Inode-Nummer ist
in dezimal. Diese Spalte ist eingeschränkt.

Das Echtzeituhr Spalte zeigt die Zeit an, die der Prozess schlafen möchte, bevor er
aufgewacht. Dies ist entweder nur die Anzahl der Sekunden oder die Anzahl der Sekunden und
Teile von Sekunden. Dieser Wert verringert sich im Laufe der Zeit nicht, sodass Sie nicht wissen, wann
die Ruhezeit läuft ab.

Das Standard, stdout und stderr Spalten zeigen die mit der stdin verknüpften Dateinamen,
stdout- oder stderr-Dateideskriptoren des Prozesses. Diese Spalten sind eingeschränkt.

Das stdio Spalte zeigt eine Zusammenfassung der Dateien, die mit stdin, stdout oder stderr verknüpft sind
Dateideskriptoren des Prozesses. Dies ist in Form einer dreistelligen Zeichenfolge mit Eins
Zeichen für jeden der Standard, stdout und stderr Dateideskriptoren. Der Charakter ist
'T' für ein Terminal, 'P' für eine Pipe, 'S' für einen Socket, 'N' für /dev/null, 'F' für einige
andere Datei und '-' für einen geschlossenen Dateideskriptor (oder wenn die Informationen nicht verfügbar sind).
Diese Spalte ist eingeschränkt.

Das Zusammenfassung Spalte zeigt viele Flaggenzeichen, die einen Teil des Status der
Prozess. Diese besteht aus einer Folge von 14 Zeichen, wobei jedes Zeichen entweder a
Bindestrich oder ein Buchstabe. Ein Buchstabe zeigt an, dass die angegebene Bedingung für dieses Zeichen wahr ist
Position, während ein Bindestrich anzeigt, dass die Bedingung für dieses Zeichen falsch ist
Position.

Zeichen 1 ist der Status des Prozesses, außer dass wenn der Prozess schläft, dann ist es
ist 'A' für kürzlich aktiv oder 'I' für inaktiv, und wenn der Prozess beendet ist (dh nicht mehr
vorhanden), dann ist es '-'. Zeichen 2 ist 'W', wenn der Prozess keinen residenten Speicher hat und
wird daher ausgewechselt. Zeichen 3 ist 'N', wenn der Prozess freundlich war, und 'H', wenn
dem Prozess wurde eine höhere Priorität als normal eingeräumt. Zeichen 4 ist 'S', wenn das
Prozess ist ein Sitzungs-ID-Leader. Zeichen 5 ist 'P', wenn der Prozess eine Prozessgruppe ist
Führer. Zeichen 6 ist 'T', wenn der Prozess ein steuerndes Terminal hat. Zeichen 7 ist 'F'
wenn der Prozess ein Vordergrundprozess ist, was bedeutet, dass seine Prozessgruppe seiner
Prozessgruppe des steuernden Terminals. Zeichen 8 ist 'I', wenn der Prozess kein übergeordnetes Element hat,
was bedeutet, dass es im Besitz von ist init. Zeichen 9 ist 'h', wenn der Prozess SIGHUP oder 'H' abfängt
wenn der Prozess SIGHUP ignoriert. Zeichen 10 ist 't', wenn der Prozess SIGTERM fängt
oder 'T', wenn der Prozess SIGTERM ignoriert. Zeichen 11 ist 'U', wenn der Prozess Ihre . hat
Benutzeridentifikation. Zeichen 12 ist 'G', wenn der Prozess Ihre Gruppen-ID hat. Zeichen 13 ist 'R', wenn
Der Prozess wird als Root ausgeführt. Zeichen 14 zeigt das Alter des Prozesses an. Es ist 'N' für
ein neuer Prozess, 'M' für einen eine Minute alten Prozess, 'F' für einen fünf Minuten alten Prozess, 'T'
für einen Prozess, der zehn Minuten alt ist, 'H' für einen Prozess, der eine Stunde alt ist, 'D' für einen Prozess, der einen Tag alt ist
alt und 'W' für einen Prozess, der eine Woche alt ist.

LEISTUNG


Einige Daten werden nur gesammelt, wenn die Spalten verwendet werden, die diese Daten verwenden. 'gebraucht' bedeutet hier
entweder anzeigen, auswählen oder nach der Spalte sortieren. Spalten vermeiden, wenn sie es sind
nicht erforderlich wird die für die Erhebung dieser Daten aufgewendete Zeit gespeichert.

Die meisten Prozessstatus werden durch Scannen der / proc Verzeichnis sucht nach Dateinamen
die numerisch sind (das sind die Prozess-IDs). Für jeden dieser Prozesse wird die Datei
/ proc //stat muss geöffnet und gelesen werden, um den größten Teil des Prozessstatus zu erfassen.

Wenn detaillierte Thread-Informationen angefordert werden, werden die Verzeichnisse / proc //Aufgabe muss sein
nach Dateinamen gescannt, die numerisch sind (das sind die Thread-IDs). Für jeden von diesen
Threads, die Datei / proc //Aufgabe/ /stat muss geöffnet und gelesen werden, um die zu sammeln
Thread-Status.

Zusätzliche Dateien in / proc müssen möglicherweise gelesen werden, um den erforderlichen vollständigen Status zu erhalten.

Verwendung der -pid Option spart viel Arbeit, da dann der Scan von / proc wird vermieden und
nur die angegebenen Prozess-IDs werden untersucht. Verwenden von -nichtselbst vermeidet es, auf unsere eigenen zu schauen
verarbeiten.

Verwendung der -meine, -Benutzer, -Gruppe und -keine Wurzel Optionen sparen Zeit beim Lesen und Analysieren von
den Prozessstatus für die eliminierten Prozesse und stoppen Sie die Erfassung anderer Daten für die
eliminierte Prozesse.

Das -oben und -kond Optionen können Zeit sparen, indem die Anzeige des Prozesses entfällt
Information. Aber die Informationen werden noch gesammelt.

Das -Synchronzeit Option ändert das Intervall, in dem der vollständige Prozessstatus erfasst wird
für inaktive Prozesse. (Siehe den Abschnitt RISIKEN weiter unten.) Einstellung auf eine kürzere Zeit
Intervall verlängert die Laufzeit.

Das Befehl Spalte erfordert das Öffnen und Lesen von / proc //cmdline wann immer die
Prozess den Status geändert hat oder die Sync-Zeit abgelaufen ist.

Das Umwelt Spalte erfordert das Öffnen und Lesen von / proc //umgeben, wann immer die
Prozess den Status geändert hat oder die Sync-Zeit abgelaufen ist.

Das aktiv, Wartezeit und Prozentcpu Spalten und die -aktiv Option erfordern, dass die ips
Das Programm tastet die Prozesse zweimal ab, bevor es etwas anzeigt, mit einer kleinen Pause dazwischen
die beiden Proben. Es wird also eine Verzögerung geben, bevor Sie etwas sehen.

Das ttyname Spalte erfordert das Lesen von / dev um die Liste der Zeichengeräte zu finden.
Diese Arbeit fügt dem Programm eine Verzögerung hinzu, bevor etwas angezeigt wird. Es ist nur erforderlich
einmal pro Lauf.

Das openfiles Spalte erfordert das Lesen aller Dateien in / proc //fd wann immer die
Prozess den Status geändert hat oder die Sync-Zeit abgelaufen ist.

Das Standard, stdout, stderr und stdio Spalten erfordern die Linkwerte von einem oder mehreren der
/ proc //fd/ Dateien, um ihre Informationen zu erhalten, wenn sich der Prozess geändert hat
Status oder wenn die Synctime abgelaufen ist.

Das Aktuelles Verzeichnis Spalte erfordert das Lesen der / proc //cwd-Datei, wann immer die
Prozess den Status geändert hat oder die Sync-Zeit abgelaufen ist.

Das Wurzelverzeichnis Spalte erfordert das Lesen der / proc // Root Datei, wann immer die
Prozess den Status geändert hat oder die Sync-Zeit abgelaufen ist.

Das Wartesymbol Spalte erfordert das Lesen der / proc //wchan-Datei, wann immer die
Prozess den Status geändert hat oder die Sync-Zeit abgelaufen ist.

Das ausführbar Spalte erfordert das Lesen der / proc //exe-Datei, wann immer die
Prozess den Status geändert hat oder die Sync-Zeit abgelaufen ist.

RISIKEN


Die Feststellung, ob ein Prozess seit der letzten Probe aktiv war, ist nicht
völlig narrensicher. Ein Teil der Prozessdaten wird erst erhoben, wenn ein Prozess abgeschlossen wurde
aktiv ist oder längere Zeit nicht abgeholt wurde, so dass ein geringes Risiko besteht, dass die
Daten sind veraltet. Die Spalten, die nicht unbedingt bei jedem Update erfasst werden, sind die
diejenigen, die eine Prüfung erfordern / proc andere Dateien als die Hauptstatusdatei. Diese Spalten
enthalten die Befehlszeile, die Umgebung, das aktuelle Verzeichnis und die Anzahl der geöffneten
Dateien.

Das ips Programm überprüft viele Prozessstatuswerte, um festzustellen, ob ein Prozess
ist seit der letzten Probenahme aktiv. Wenn eine dieser Angaben von der letzten Probenahme abweicht,
dann ist der Prozess aktiv. Diese Werte sind Prozesszustand, Laufzeit, Flags, Seite
Fehler, Startzeit, Stapelzeiger, Befehlszeiger und Wartekanal. Neue Prozesse sind
immer aktiv, und Prozesse, deren Zustand 'R' oder 'D' ist, sind immer aktiv.

Es ist möglich, dass ein Prozess, der nur kurze Zeit aufwacht, sehr wenig tut und
geht dann wieder in den Schlaf, scheint inaktiv zu sein. (Der Kernel hat nur eine 1/100 Sekunde
Laufzeitauflösung, so dass die geringe Laufzeit des Prozesses möglicherweise nicht von gesehen wurde
der Kernel.)

Das -Synchronzeit Option kann verwendet werden, um dieses Risiko der Anzeige veralteter Daten zu reduzieren oder zu erweitern.
Es akzeptiert die Anzahl der Sekunden, nach der der vollständige Status des Prozesses erfasst wird
auch wenn es im Leerlauf ist. Der Standardwert beträgt eine Minute. Das Setzen der Synctime auf Null erzeugt a
Status ohne veraltete Daten.

Die Liste der Benutzernamen, Gruppennamen und Gerätenamen wird nur gesammelt, wenn ips ist zuerst
gestartet. Änderungen an der Passwortdatei, Gruppendateien oder Gerätedateien werden nicht angezeigt
während das Programm läuft.

Die gesammelten Daten von ips ist dynamisch. Es kann sich auch während der Statusänderung ändern
für einen einzigen Vorgang gesammelt. Die angezeigten Daten sind also nur eine Momentaufnahme und niemals
absolut konsequent.

GRENZEN


Im Folgenden sind einige Einschränkungen für den Betrieb von ips. Dies sind Kompilierzeitkonstanten,
und kann bei Bedarf durch Neukompilieren des Programms erhöht werden.

Sie können nur 100 Prozess-IDs für die -pid .

Sie können nur 100 Benutzernamen oder IDs für die -Benutzer .

Sie können nur 100 Gruppennamen oder IDs für die -Gruppe .

Sie können nur 1000 Argumente in einer Befehlszeile haben.

Die maximale Ausgabebreite beträgt 31 KB Zeichen, wobei K 1024 ist.

Die maximale Länge der Befehlszeichenfolge beträgt 10 KB.

Die maximale Länge der Umgebungszeichenfolge beträgt 20 KB.

Die maximale Länge der Programmnamen-Strings beträgt 32. Diese Länge wird vom Kernel vorgegeben, der
hat nur einen Puffer dieser Größe.

Der maximale Abstand zwischen den Spalten beträgt 20 Leerzeichen.

Die maximale Erweiterungstiefe von Optionsmakros beträgt 20.

Die maximale Erweiterungstiefe von Ausdrucksmakros beträgt 20.

Die maximale Anzahl von Sekunden für die Berechnung der CPU-Prozentsätze beträgt 20 Sekunden.

Verwenden Sie ips online mit den onworks.net-Diensten


Kostenlose Server & Workstations

Laden Sie Windows- und Linux-Apps herunter

Linux-Befehle

Ad