GNU/Linux >> Tutoriels Linux >  >> Linux

Quelles sont les méthodes disponibles pour obtenir l'utilisation du processeur dans la ligne de commande Linux ?

Comme d'autres l'ont dit, le meilleur moyen est probablement top . Il a besoin d'un peu de peaufinage et d'un peu d'analyse, mais vous pouvez l'obtenir pour vous donner l'utilisation actuelle du processeur en pourcentage.

top répartit l'utilisation du processeur entre l'utilisateur, les processus système et nice processus, nous voulons la somme des trois. Donc, nous pouvons exécuter top en b atch mode qui nous permet d'analyser sa sortie. Cependant, comme expliqué ici, la 1ère itération de top -b retourne les pourcentages depuis le boot, il faut donc au moins deux itérations (-n 2 ) pour obtenir le pourcentage actuel. Pour accélérer les choses, vous pouvez définir le d délai entre les itérations à 0.01 . Enfin, vous grep la ligne contenant les pourcentages CPU puis utilisez gawk pour additionner l'utilisateur, le système et les processus agréables :

    top -bn 2 -d 0.01 | grep '^%Cpu' | tail -n 1 | gawk '{print $2+$4+$6}'
        -----  ------   -----------    ---------   ----------------------
          |      |           |             |             |------> add the values
          |      |           |             |--> keep only the 2nd iteration
          |      |           |----------------> keep only the CPU use lines
          |      |----------------------------> set the delay between runs
          |-----------------------------------> run twice in batch mode

Je pensais que vous pouviez également obtenir ces informations via ps -o pcpu ax en ajoutant le % d'utilisation de chaque processus en cours d'exécution. Malheureusement, comme expliqué ici, ps "renvoie le pourcentage de temps passé à s'exécuter pendant toute la durée de vie d'un processus", ce qui n'est pas ce dont vous avez besoin.

MODIFIER

D'après votre commentaire, votre version de top est différent du mien et vous devriez utiliser ceci à la place :

top -bn 2 -d 0.01 | grep '^Cpu.s.' | tail -n 1 | gawk '{print $2+$4+$6}'

Et, pour éviter les problèmes de localisation, définissez les paramètres régionaux sur C :

LC_ALL=C top -bn 2 -d 0.01 | grep '^Cpu.s.' | tail -n 1 | gawk '{print $2+$4+$6}'

sar est la façon définitive de le faire. Ainsi, par exemple sar -u affichera quelque chose comme ceci :

08:30:01 AM       CPU     %user     %nice   %system   %iowait     %idle
08:40:01 AM       all      6.94      0.00      1.77      4.92     86.36
08:50:01 AM       all      5.73      0.00      2.31     12.72     79.24
09:00:01 AM       all      5.95      0.00      2.58     18.36     73.11
09:10:01 AM       all      6.88      0.00      2.22     17.44     73.45
09:20:01 AM       all      8.61      0.00      2.68     27.93     60.78

Vous ne dites pas quel Linux vous utilisez mais pour CentOS/RedHat vous devez installer le sysstat package, et je pense que c'est la même chose sur Debian/Ubuntu.

Vous pouvez également utiliser sar pour collecter des statistiques ad hoc :

sar -o /tmp/sar.out 60 600

Rassemblera des statistiques toutes les 60 secondes 600 fois, donc 600 minutes.


Linux
  1. Générer des mots de passe sur la ligne de commande Linux

  2. 8 conseils pour la ligne de commande Linux

  3. Comment puis-je obtenir le nombre d'images dans une vidéo sur la ligne de commande Linux ?

  4. Obtenir la résolution d'affichage à partir de la ligne de commande pour Linux Desktop

  5. Commande top Linux :Que sommes-nous, sy, ni, id, wa, hi, si et st (pour l'utilisation du processeur) ?

Patch dans The Matrix à la ligne de commande Linux

3 gestionnaires de mots de passe pour la ligne de commande Linux

Qu'est-ce que la commande Linux Watch + Exemples

Maîtrisez la ligne de commande Linux

Qu'est-ce que la commande kill sous Linux ?

Qu'est-ce qu'un outil de ligne de commande simple et courant pour afficher l'utilisation du réseau sur une machine Linux ?