[LINUX] [Hinweis] Ein Shell-Skript, das die CPU-Auslastung eines bestimmten Prozesses in einer while-Schleife überprüft.

0. Einleitung

Geben Sie das Shell-Skript frei, das zur regelmäßigen Überwachung des Prozesses mit dem Befehl top erstellt wurde. Insbesondere ist es so einfach, das Ausführungsergebnis des Befehls top in einer while-Schleife in der Protokolldatei auszugeben.

1. Verifizierungsumgebung usw.

2. Ausführungsergebnis des Befehls top

Geben Sie zunächst das Ausführungsergebnis des Befehls top als Beispiel für ein Shell-Skript frei.

$ top -n 1
top - 00:58:08 up 55 min,  1 user,  load average: 0.67, 0.58, 0.64
Tasks: 329 total,   1 running, 328 sleeping,   0 stopped,   0 zombie
%Cpu(s):  4.6 us,  0.8 sy,  0.0 ni, 93.1 id,  0.0 wa,  0.0 hi,  1.5 si,  0.0 st
MiB Mem :  15662.8 total,   9716.0 free,   2467.8 used,   3478.9 buff/cache
MiB Swap:   2048.0 total,   2048.0 free,      0.0 used.  11582.7 avail Mem 

    PID USER      PR  NI    VIRT    RES    SHR S  %CPU  %MEM     TIME+ COMMAND                                                                                                                             
   9095 gkz       20   0 4616108 107196  70536 S  25.0   0.7   0:00.37 chrome                                                                                                                              
   2487 gkz       20   0 4730532 335940 156620 S   6.2   2.1   2:42.61 gnome-shell                                                                                                                         
   4102 gkz       20   0  321656  12708  11268 S   6.2   0.1   0:05.56 ibus-engine-moz                                                                                                                     
   7243 gkz       20   0  961388  52248  37448 S   6.2   0.3   0:05.53 gnome-terminal-                                                                                                                     
      1 root      20   0  168164  11936   8272 S   0.0   0.1   0:10.67 systemd    

Der Befehl top kann die Anzahl der Bildschirmaktualisierungen (Frame?) Mit der Option n begrenzen. In diesem Artikel übergeben wir das Ergebnis des Befehls top in einer Pipe und schränken das Ausgabeergebnis eines bestimmten Prozesses mit grep ein, um die CPU-Auslastung eines Prozesses regelmäßig zu überwachen.

3. Quellcode

toploop.sh


#!/bin/bash

# debug mode
# bash -x toploop.sh $process

# your monitored process, e.g. dockerd
process=$1

starttime=`date +"%Y%m%d_%H%M%S"`
filename=`echo "log/top.log.$process.$starttime"`

while true
do
  sleep 5
  output=`top -n 1| grep $process`
  val=`echo $output | awk '{print $13}'`
  if [ "$val" == "$process" ]; then
    num=`echo "$output" | grep -oP "[S|R]\s+[0-9]*[.]?[0-9]" | awk '{print $2}'`
    date +"%Y%m%d_%H%M%S" >> $filename
    echo "$process:  $num%" >> $filename
  else
    date +"%Y%m%d_%H%M%S" >> $filename
    echo "$process: notfound" >> $filename
  fi
done

4. Ausführen

4-1. Führen Sie den Befehl im Hintergrund mit & am Ende des Befehls aus

$  . toploop.sh chrome&
[1] 11175

4-2 Folgen Sie nach dem Ausführen des Shell-Skripts der Aktualisierung der Protokolldatei mit dem Befehl tail.

$ tail -f log/top.log.chrome.20200526_011531
20200526_011602
chrome: notfound
20200526_011608
chrome:  6.2%

5. Referenz

PS: Ich mache auch Twitter, also bin ich froh, wenn du mir folgst :)

@gkzvoice

Recommended Posts

[Hinweis] Ein Shell-Skript, das die CPU-Auslastung eines bestimmten Prozesses in einer while-Schleife überprüft.
Verarbeiten Sie den Inhalt der Datei der Reihe nach mit einem Shell-Skript
Verarbeiten Sie die Dateien im Ordner in der Reihenfolge mit dem Shell-Skript
Notieren Sie sich die Liste der grundlegenden Verwendungszwecke von Pandas
Shell-Programm, das in Vielfachen von 3 aho wird
Ein Skript, das Stresstests entsprechend der Anzahl der CPU-Kerne durchführen kann
Hinweise zum Einbetten der Skriptsprache in Bash-Skripte
Hinweis 2 zum Einbetten der Skriptsprache in ein Bash-Skript
Holen Sie sich die Anzahl der spezifischen Elemente in der Python-Liste
[OCI] Python-Skript zum Abrufen der IP-Adresse einer Recheninstanz in Cloud Shell
[Hinweis] Import von Dateien in das übergeordnete Verzeichnis in Python
Eine Reihe von Skriptdateien, die Wordcloud mit Python3 ausführen
Python-Skript, das den Inhalt zweier Verzeichnisse vergleicht
Ich habe ein Skript geschrieben, das das Bild in zwei Teile teilt
Die Geschichte, dass Fabric den Statuscode in der Mitte der Pipe im Shell-Skript nicht erhalten kann
Schreiben Sie ein Skript in Shell und Python, um Sie in Slack zu benachrichtigen, wenn der Vorgang abgeschlossen ist
Die Geschichte des Erstellens eines Bots, der aktive Mitglieder in einem bestimmten Slack-Kanal mit Python anzeigt
pandas Ruft den Namen einer Spalte ab, die ein bestimmtes Zeichen enthält
Shell-Skript (Linux, macOS), das das Datum der letzten Woche ausgibt
Bedingte Verzweigung aufgrund des Vorhandenseins einer Shell-Skriptdatei
Eine Funktion, die die Verarbeitungszeit einer Methode in Python misst
[Python] Ein Hinweis, dass ich das Verhalten von matplotlib.pyplot zu verstehen begann
Ein Hinweis zu den Funktionen der Standard-Linux-Bibliothek, die sich mit Zeit befasst
Ein nützlicher Hinweis, wenn Sie Python nach langer Zeit verwenden
[Python] Hinweis: Selbst erstellte Funktion zum Ermitteln des Bereichs der Normalverteilung
[Hinweis] Basierend auf dem Breiten- und Längengrad der CSV-Datei haben wir ein Skript erstellt, das Daten im Zielbereich extrahiert und einen Netzcode hinzufügt.
Die Geschichte der Erstellung von Botonyan, das den Inhalt von Google Text & Tabellen als Antwort auf ein bestimmtes Keyword in Slack zurückgibt
Implementieren Sie einen Teil des Prozesses in C ++
So übergeben Sie das Ergebnis der Ausführung eines Shell-Befehls in einer Liste in Python
Sammlung von Numpy, Pandas Tipps, die häufig auf dem Feld verwendet werden
Hinweis) Stapelkonvertierung bestimmter Symbole in einer Zeichenfolge mit einem Wörterbuch
Erstellen Sie einen BOT, der die Anzahl der infizierten Personen in der neuen Corona anzeigt
Geben Sie die Anzahl der CPU-Kerne in Python aus
Holen Sie sich den Aufrufer einer Funktion in Python
Kopieren Sie die Liste in Python
Finden Sie die Anzahl der Tage in einem Monat
Umschreiben von Elementen in einer Listenschleife (Python)
[Hinweis] Über die Rolle des Unterstrichs "_" in Python
Visualisierte den Nutzungsstatus der Spüle im Unternehmen
Ausgabe in Form eines Python-Arrays
Starten Sie die Shell, während das Python-Skript ausgeführt wird
Ein Shell-Programm, das eine Fibonacci-Sequenz anzeigt
Wenn eine Datei im freigegebenen Ordner von Raspberry Pi abgelegt wird, wird der Vorgang ausgeführt.
Beachten Sie, dass ich süchtig nach dem npm-Skript war, das in der Überprüfungsumgebung nicht übergeben wurde
Lassen Sie uns gemeinsam die Standardeingabe / -ausgabe von bash verstehen und ein Shell-Skript schreiben.
Ein Hinweis zur Bibliotheksimplementierung, in der Hyperparameter mithilfe der Bayes'schen Optimierung in Python untersucht werden
[Python] Ein Programm, das die kürzeste Anzahl von Schritten in einem Spiel findet, das Wolken überquert
[Python] Ändern Sie die Textfarbe und Hintergrundfarbe eines bestimmten Schlüsselworts in der Druckausgabe
Ein Hinweis, der einen Job in Python implementiert, der eine GCS-Datei in BigQuery lädt
[Python] Lassen Sie nur Elemente im Array, die mit einer bestimmten Zeichenfolge beginnen
Beachten Sie, dass sich die Methode zum Veröffentlichen von Modulen in PyPI auf verschiedene Weise geändert hat.
Ein Skript, das Tweets mit bestimmten Schlüsselwörtern auf Twitter in Echtzeit an Slack überträgt.
Eine einfache Möglichkeit, den Wert im Eigenschaftsdekorator zwischenzuspeichern. Schreibgeschützt. Beachten Sie, dass er so lange zwischengespeichert wird, bis das Objekt gelöscht wird.