[LINUX] [Note] Un script shell qui vérifie l'utilisation du processeur d'un processus spécifique dans une boucle while.

0. Introduction

Partagez le script shell créé pour surveiller périodiquement le processus avec la commande top. Plus précisément, c'est aussi simple que de continuer à afficher le résultat de l'exécution de la commande top dans le fichier journal dans une boucle while.

1. Environnement de vérification, etc.

2. Résultat d'exécution de la commande supérieure

Commencez par partager le résultat de l'exécution de la commande top comme un script shell comme exemple.

$ 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    

La commande top peut limiter le nombre de mises à jour d'écran (frame?) En utilisant l'option n. Dans cet article, afin de surveiller régulièrement l'utilisation du processeur de tout processus, nous passerons le résultat de la commande top dans un tube et affinerons le résultat de sortie d'un processus spécifique avec grep.

3. Code source

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. Comment exécuter

4-1. Exécutez la commande en arrière-plan avec & à la fin de la commande

$  . toploop.sh chrome&
[1] 11175

4-2 Après avoir exécuté le script shell, suivez la mise à jour du fichier journal avec la commande tail.

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

5. Référence

P.S. Je fais aussi Twitter donc je suis content si vous me suivez :)

@gkzvoice

Recommended Posts

[Note] Un script shell qui vérifie l'utilisation du processeur d'un processus spécifique dans une boucle while.
Traitez le contenu du fichier dans l'ordre avec un script shell
Traitez les fichiers du dossier dans l'ordre avec le script shell
Prenez note de la liste des utilisations de base de Pandas
Programme Shell qui devient aho par multiples de 3
Un script qui peut effectuer des tests de résistance en fonction du nombre de cœurs CPU
Remarques sur l'intégration du langage de script dans les scripts bash
Remarque 2 pour intégrer le langage de script dans un script bash
Obtenez le nombre d'éléments spécifiques dans la liste python
[OCI] Script Python pour obtenir l'adresse IP d'une instance de calcul dans Cloud Shell
[Note] Importation de fichiers dans le répertoire parent en Python
Un ensemble de fichiers de script qui font wordcloud avec Python3
Script Python qui compare le contenu de deux répertoires
J'ai écrit un script qui divise l'image en deux
L'histoire selon laquelle Fabric ne peut pas obtenir le code d'état au milieu du tube dans le script shell
Écrivez un script dans Shell et Python pour vous avertir dans Slack lorsque le processus est terminé
L'histoire de la création d'un Bot qui affiche les membres actifs dans un canal spécifique de Slack avec Python
pandas Récupère le nom d'une colonne contenant un caractère spécifique
Script Shell (Linux, macOS) qui affiche la date de la semaine dernière
Branche conditionnelle en raison de l'existence d'un fichier de script shell
Une fonction qui mesure le temps de traitement d'une méthode en python
[python] Une note que j'ai commencé à comprendre le comportement de matplotlib.pyplot
Une note sur les fonctions de la bibliothèque Linux standard qui gère le temps
Une note utile lors de l'utilisation de Python après une longue période
[Python] Note: Fonction auto-conçue pour trouver la zone de distribution normale
[Note] Sur la base de la latitude et de la longitude du fichier CSV, nous avons créé un script qui extrait les données dans la plage cible et ajoute un code de maillage.
L'histoire de la création de Botonyan qui renvoie le contenu de Google Docs en réponse à un mot-clé spécifique sur Slack
Implémenter une partie du processus en C ++
Comment passer le résultat de l'exécution d'une commande shell dans une liste en Python
Collection de conseils Numpy, Pandas souvent utilisés sur le terrain
Remarque) Conversion par lots de symboles spécifiques contenus dans une chaîne de caractères avec un dictionnaire
Créez un BOT qui affiche le nombre de personnes infectées dans le nouveau Corona
Sortie du nombre de cœurs de processeur en Python
Récupérer l'appelant d'une fonction en Python
Copiez la liste en Python
Trouvez le nombre de jours dans un mois
Réécrire des éléments dans une boucle de listes (Python)
[Note] À propos du rôle du trait de soulignement "_" en Python
Visualisation de l'état d'utilisation de l'évier dans l'entreprise
Sortie sous la forme d'un tableau python
Lancez le shell pendant que le script Python est en cours d'exécution
Un programme shell qui affiche une séquence de Fibonacci
Lorsqu'un fichier est placé dans le dossier partagé de Raspberry Pi, le processus est exécuté.
Notez que j'étais accro au script npm ne passant pas dans l'environnement de vérification
Comprenons ensemble les entrées / sorties standard de bash et écrivons un script shell.
Une note sur l'implémentation de la bibliothèque qui explore les hyperparamètres à l'aide de l'optimisation bayésienne en Python
[Python] Un programme qui trouve le nombre d'étapes le plus court dans un jeu qui traverse les nuages
[Python] Changer la couleur du texte et la couleur d'arrière-plan d'un mot clé spécifique dans la sortie d'impression
Une note qui implémente une tâche en Python qui charge un fichier GCS dans BigQuery
[Python] Ne laissez que les éléments commençant par une chaîne de caractères spécifique dans le tableau
Notez que la méthode de publication des modules sur PyPI a changé de différentes manières.
Un script qui transfère les tweets contenant des mots-clés spécifiques sur Twitter vers Slack en temps réel.
Un moyen simple de mettre en cache la valeur dans le décorateur de propriété. En lecture seule. Notez qu'il conserve la mise en cache jusqu'à ce que l'objet soit supprimé.