warum wird der Ruhezustandsvorgang bei PS nicht angezeigt?

warum wird der Ruhezustandsvorgang bei PS nicht angezeigt?

Ich erstelle das erste Terminal, verwende dann „sleep 1000 &“ und habe es über „ps“ gefunden. Das Problem ist, dass es keinen Sleep-Prozess gibt, wenn ich das zweite Terminal erstelle und „ps“ eingebe. Ich möchte wissen, warum?

Bildbeschreibung hier eingeben(meine Hausaufgabe lautet „Hinweis: TTY-Spalte“)

Antwort1

Standardmäßig pswerden nur Prozesse angezeigt, die an das aktuelle Terminal (tty) angeschlossen sind: in Ihrem Fall Ihre Shell und pssich selbst (beide auf pts/2). Sie müssen diese Einschränkung aufheben, um zu sehen sleep; zum Beispiel

ps -e

Informieren Sie sich man psüber die zahlreichen Möglichkeiten zum Filtern von Prozessen.

Antwort2

Das Problem ist, dass kein Prozess stattfindet, wenn ich das zweite Terminal erstelle und „ps“ eingebe sleep.

Bei einigen (nicht allen) interaktiven Shells sleep könnte es sich um eine integrierte Shell handeln, die beispielsweiseSchlaf(3)(genau wie cd ein Shell-Builtin, daschdir(2)).

Wenn das der Fall ist, sehen Sie keinesleep Verfahrenweil es keine gibt. Der Prozess, der dannSchlaf(3)-ing ist IhrUnix-Shell; Sie könnten sogar Ihren eigenen Shell-Interpreter schreiben (sehen Sie sichSchärpefür ein einfaches, aber etwas fehlerhaftes Beispiel).

Viele Linux-Shells sindOpen SourceSoftware (odergratis Software), also untersuchen Sie bitte deren Quellcode, um herauszufinden, ob sieSchlaf(3)oderwirschlafen(3)-oder sogar angemessenUmfrage(2), usw ...- Siehe auchZeit(7)Undselect_tut(2)Lesen Sie mehr überSystemaufrufe(2)und denke an die von deiner Muschel ausgeführten (oder beobachte sie mitstrace(1)oderltrace(1)oder ein Debugger).

Viele Linux-Distributionen habenGNU Bashals die übliche interaktive Shell. Aber Sie könnten installierenzshoderFischoderesals Ihre Login-Shell (mitchsh(1)).

Meine persönliche Vorliebe ist zsh(derenAutovervollständigungDie Einrichtungen unter Debian sind hervorragend).

Lesen Sie einigeLehrbuch überBetriebssystemeund/oder eigene ProgrammierungUnix-Shellals Übung oder als Erweiterung eines vorhandenen (z. B. durch Hinzufügen eines sleepintegrierten Elements, falls keines vorhanden ist).

verwandte Informationen