it-swarm.com.de

Wie kann ich die Anzahl der Schlafvorgänge in meinem System zählen?

Wie kann ich die Anzahl der Schlafvorgänge mit einem Shell-Skript zählen?

7
aeomey amani

Erweiterte Erklärung ... Ich vertraue darauf, dass du alles erledigst, da es deine Hausaufgaben sind ...

Listen Sie Prozesse mit dem Befehl ps auf

$ ps
  PID TTY          TIME CMD
 4879 pts/3    00:00:00 bash
 5003 pts/3    00:00:00 ps

Oh, dies zeigt nur die Prozesse der aktuellen Sitzung. Wir wollen alle Prozesse im System anzeigen. Dafür können wir das -e -Flag verwenden

$ ps -e
  PID TTY          TIME CMD
    1 ?        00:00:05 systemd
    2 ?        00:00:00 kthreadd
    3 ?        00:00:00 ksoftirqd/0
[and many more lines]

aber wie zeigen wir welche schlafen ??

Sie können die Option -l oder u verwenden. Dies gibt detailliertere Informationen, einschließlich des Status des Prozesses. Schlafvorgänge haben in der Spalte STAT den Buchstaben S oder D

aus man ps

PROCESS STATE CODES Hier sind die verschiedenen Werte, die die Ausgabespezifizierer s, stat und state (Header "STAT" oder "S") anzeigen, um den Status eines Prozesses zu beschreiben:

           D    uninterruptible sleep (usually IO)
           R    running or runnable (on run queue)
           S    interruptible sleep (waiting for an event to complete)
           T    stopped by job control signal
           t    stopped by debugger during the tracing
           W    paging (not valid since the 2.6.xx kernel)
           X    dead (should never be seen)
           Z    defunct ("zombie") process, terminated but not reaped by its parent

Wir können die Ausgabe von ps so formatieren, dass NUR die Status angezeigt werden, um das Zählen zu vereinfachen:

ps -e -o state

hier verwenden wir -e, um alle Prozesse und das -o -Flag abzurufen, gefolgt von dem gewünschten Ausgabetyp. Dieser Befehl gibt nur den Statusbuchstaben aus. Wir können diese Ausgabe dann mit | an grep leiten, um die Zeilen mit S oder D zu zählen.

ps -e -o state | grep -cE 'S|D'

grep sucht nach Text. Die Option -c weist es an, nur Übereinstimmungen zu zählen, anstatt den gefundenen Text selbst auszugeben. Die Option -E weist grep an, erweiterte reguläre Ausdrücke zu verwenden, sodass wir die Zeichen | verwenden können, um Dinge OR mit folgendem Ausdruck abzugleichen: thing|stuff . Verwenden Sie bei Verwendung von Regex einfache Anführungszeichen, um Erweiterungen durch die Shell zu verhindern.

8
Zanna

Sehr einfach, wenn Sie wissen, dass der Befehl ps den Status für Schlafvorgänge als S für unterbrechbaren Schlaf und D für unterbrechungsfreien Schlaf ausgibt, und Sie können das Flag -o s verwenden, um den Status dieser Prozesse zu ermitteln. Jetzt müssen Sie nur noch die Ausgabe über grep ausführen, um das Auftreten dieser Flags zu zählen. Wie so:

$ ps -e -o s | grep -o 'S\|D' -c                                                                                         
260
5

Eine andere Möglichkeit besteht darin, die Anzahl der Prozesse in den einzelnen Zuständen aufzulisten, indem Sie Folgendes verwenden:

$ ps -e -o state | sort | uniq -c
  1 R
141 S
1
Pete Escalante

Das Hilfsprogramm top gibt die Anzahl der Aufgaben an, die angeben, wie viele ausgeführt werden und wie viele schlafen. Das ändert sich natürlich von Moment zu Moment, aber auch die Leistung dieser Einzeiler. Wie bei jedem * nix-Dienstprogramm wird die Seite man detaillierter dargestellt.

0
DukeW