Comprensione del formato di tempo trascorso ps per processi di lunga durata


10

Sto usando un pscomando come parte di un esercizio per identificare i processi che durano più a lungo di una determinata soglia.

Sto usando il seguente modello per ottenere il tempo trascorso per un comando di processo noto:

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

Noto che con processi a esecuzione breve, il valore etime (tempo trascorso) assume il formato minutes:secondse da questo posso facilmente determinare da quanto tempo è in esecuzione un processo.

Per i processi di esecuzione molto lunghi (giorni), non capisco il formato.

Ho un processo server MySQL che htopmostra come in esecuzione per 126 ore.

L'esecuzione ps -eo etime,command | grep mysql | grep -v grep | awk '{print $1}'mi dà un valore di 9-03:35:32.

La mia ipotesi migliore è che ciò significhi 9 qualcosa, 3 ore, 35 minuti, 32 secondi. Non riesco a capire quali siano le unità per il 9.

Il processo in questione dura 126 ore, circa 5,25 giorni. Ciò suggerisce che il 9 nell'output sopra non rappresenta i giorni. Non possono essere nemmeno mezza giornata in quanto (9 * 12) ore + 3 ore + 35 minuti + 32 secondi è inferiore a 5 giorni.

Come posso interpretare il valore del tempo trascorso che vedo per i processi di lunga durata? Quali unità accompagnano il 9 nell'output sopra?


Qui, stai vedendo il formato ora POSIX. Minuti: secondi è il formato dell'ora BSD. Linux psvisualizza l'uno o l'altro a seconda delle opzioni che si passano.
Gilles 'SO- smetti di essere malvagio'

Per ricontrollare, provare etimesinvece etimee confrontare i risultati.
Ruslan,

Risposte:


16

Secondo lo standard :

Nella locale POSIX, il tempo trascorso dall'avvio del processo, nel formato:

[[dd-]hh:]mm:ss

dove dd deve rappresentare il numero di giorni, hh il numero di ore, mm il numero di minuti e ss il numero di secondi. Il campo dd deve essere un numero intero decimale. I campi hh, mm e ss devono essere numeri decimali a due cifre riempiti a sinistra con zeri.

Quindi, 9 significa giorni, che ci crediate o no. Potresti interpretare male l'output di htop? Cosa dice top (che ha un formato orario di minutes:seconds)? Sei sicuro che il campo che stai guardando in htop è equivalente a etime? (ad esempio, potrebbe significare 126 minuti di tempo CPU ?)


Grazie per la conferma. htop sta sicuramente mostrando 126 ore, ma penso che questo potrebbe non essere il tempo di wall ma qualche altra volta (forse il tempo della CPU). Il campo in htop non è equivalente a etime, ho assunto erroneamente qui.
Jon Cram,

1
@JonCram Sei sicuro che siano ore? La parte superiore originale mostra solo i minuti (ovvero passerà a minuti superiori a 60 anziché a ore), un numero come 126: 37 significa 126 minuti e 37 secondi. Pensavo che htop potesse essere lo stesso. 126 ore di tempo della CPU in 9 giorni sembrano molte.
Casuale 832
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.