• # Et les jours aussi

    Posté par . En réponse au message Conversion d'heure en bash. Évalué à 5.

    Attention : ps est aussi susceptible de renvoyer des jours, si temps > 24H :
    % ps -p 1 -o etime
     ELAPSED
     1-23:54:12
    
    À part ça, ton idée de parsing ne me choque pas outre mesure. Enfin perso, je l'écrirais comme ça aussi je pense. Genre en Bash-3.x :
    #!/bin/bash
    PTIME=$(ps -p ${1} -o etime | tail -n 1)
    if [[ "$PTIME" =~ "(((([0-9]+)-)?([0-9]+):)?([0-9]+):)?([0-9]+)$" ]] ; then
    	DD=${BASH_REMATCH[4]:-0}
    	HH=${BASH_REMATCH[5]:-0}
    	MM=${BASH_REMATCH[6]:-0}
    	SS=${BASH_REMATCH[7]}
    	(( TOTAL = (((DD * 24 + HH) * 60 + MM) * 60) + SS ))
    	echo "Elapsed seconds for PID ${1}: ${TOTAL}"
    else
    	echo "Erreur !" >&2
    fi
    
    Test :
    % /tmp/ptime 1
    Elapsed seconds for PID 1: 172456
    % /tmp/ptime 4052
    Elapsed seconds for PID 4052: 1292