Comprendre le format de temps écoulé ps pour les processus de longue durée

10

J'utilise une pscommande dans le cadre d'un exercice pour identifier les processus exécutés plus longtemps qu'un seuil donné.

J'utilise le modèle suivant pour obtenir le temps écoulé pour une commande de processus connu:

ps -eo etime,command | grep <something to identify a process> | grep -v grep | awk '{print $1}'

Je remarque qu'avec des processus à court terme, la valeur etime (temps écoulé) prend le format minutes:secondset à partir de cela, je peux facilement déterminer la durée d'un processus.

Pour les processus très longs (jours), je ne comprends pas le format.

J'ai un processus de serveur MySQL qui htops'affiche comme fonctionnant pendant 126 heures.

L'exécution ps -eo etime,command | grep mysql | grep -v grep | awk '{print $1}'me donne une valeur de 9-03:35:32.

Ma meilleure supposition est que cela signifie 9 quelque chose, 3 heures, 35 minutes, 32 secondes. Je ne peux pas comprendre quelles sont les unités pour le 9.

Le processus en question a fonctionné 126 heures, environ 5,25 jours. Cela suggère que le 9 dans la sortie ci-dessus ne représente pas les jours. Ils ne peuvent pas non plus être des demi-journées car (9 * 12) heures + 3 heures + 35 minutes + 32 secondes est inférieur à 5 jours.

Comment interpréter la valeur de temps écoulé que je vois pour les processus de longue durée? Quelles unités accompagnent les 9 dans la sortie ci-dessus?

Jon Cram
la source
Ici, vous voyez le format d'heure POSIX. Minutes: secondes est le format d'heure BSD. Linux psaffiche l'un ou l'autre selon les options que vous passez.
Gilles 'SO- arrête d'être méchant'
Pour revérifier, essayez etimesau lieu de etimeet comparez les résultats.
Ruslan

Réponses:

16

Selon la norme :

Dans l'environnement local POSIX, le temps écoulé depuis le démarrage du processus, sous la forme:

[[dd-]hh:]mm:ss

où dd représente le nombre de jours, hh le nombre d'heures, mm le nombre de minutes et ss le nombre de secondes. Le champ dd doit être un entier décimal. Les champs hh, mm et ss doivent être des nombres décimaux à deux chiffres, complétés à gauche par des zéros.

Donc, le 9 signifie les jours, que vous le croyiez ou non. Pourriez-vous mal interpréter la sortie de htop? Que dit top (qui a un format d'heure minutes:seconds)? Êtes-vous certain que le champ que vous regardez dans htop est équivalent à etime? (par exemple, cela pourrait-il signifier 126 minutes de temps processeur ?)

Aléatoire832
la source
Merçi pour la confirmation. htop affiche définitivement 126 heures, mais je pense que ce n'est peut-être pas l'heure du mur mais une autre fois (peut-être du temps CPU). Le champ dans htop n'est pas équivalent à etime, j'ai supposé à tort ici.
Jon Cram
1
@JonCram Êtes-vous sûr que c'est des heures? Le sommet d'origine ne montre que les minutes (c'est-à-dire qu'il ira à des minutes au-dessus de 60 plutôt qu'à des heures), un nombre comme 126: 37 signifie 126 minutes et 37 secondes. Je pensais que le htop pourrait être le même. 126 heures de temps CPU en 9 jours, c'est beaucoup.
Random832