IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Linux Discussion :

start time d'un processus


Sujet :

Linux

  1. #1
    Responsable Systèmes


    Homme Profil pro
    Gestion de parcs informatique
    Inscrit en
    Août 2011
    Messages
    17 828
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Gestion de parcs informatique
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Août 2011
    Messages : 17 828
    Points : 44 124
    Points
    44 124
    Par défaut start time d'un processus
    Bonsoir,

    Je cherche à déterminer l'heure de démarrage d'un processus exemple :
    Ligne dans ps -aux :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    dvp      14905 22.5  3.2 274440 50028 ?        Rl   22:18   0:02 midori
    contenu du proc/stat :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    cat /proc/14905/stat
    14905 (midori) S 2853 2757 2757 0 -1 4202496 33099 0 390 0 1500 254 0 0 20 0 6 0 224993774 340111360 26250 4294967295 3077672960 3078299200 3218690688 3218689492 3077547048 0 0 4096 16391 4294967295 0 0 17 0 0 0 957 0 0
    D'après la doc de proc, le champs 22 correspond à starttime exprimé en tops d'horloge (divisé par sys‐conf(_SC_CLK_TCK))
    Comment convertir la valeur 224993774 en 22:18 ?

    Merci d'avance.

  2. #2
    Expert éminent Avatar de BufferBob
    Profil pro
    responsable R&D vidage de truites
    Inscrit en
    Novembre 2010
    Messages
    3 038
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : responsable R&D vidage de truites

    Informations forums :
    Inscription : Novembre 2010
    Messages : 3 038
    Points : 8 405
    Points
    8 405
    Par défaut
    salut,

    Citation Envoyé par chrtophe Voir le message
    D'après la doc de proc, le champs 22 correspond à starttime exprimé en tops d'horloge (divisé par sys‐conf(_SC_CLK_TCK))
    Comment convertir la valeur 224993774 en 22:18 ?
    en fait il suffit de soustraire la valeur de celle de l'uptime global de la machine, l'intervention de la constante CLK_TCK complique à peine l'opération, mais comme par défaut elle vaut 100 on s'y retrouve vite entre ce qui est en secondes et ce qui est -de fait- en centièmes de seconde

    un exemple :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    #!/bin/bash
     
    # spawn child process, get its PID, then make parent sleepy for few (centi)seconds
    sleep 10 & pid=$! && sleep 6.78
     
    # parse /proc/uptime and /proc/$pid/stat, set some variables
    ticks=$(getconf CLK_TCK)
    now=$(date +'%s')
    read system_uptime _ < "/proc/uptime"
    sysuptime=$(bc <<< "$system_uptime * $ticks / 1")
    read _ tcomm _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ start_time _ < "/proc/$pid/stat"
    delta=$(( sysuptime - start_time ))
    val=$(bc <<< "(($now * $ticks) - $delta) / $ticks")
     
    # stop the child
    kill $pid && wait $pid 2>/dev/null
     
    echo "CLK_TCK    : $ticks"
    echo "pid        : $pid"
    echo "tcomm      : $tcomm"
    echo "start_time : $start_time"
    echo "uptime     : $sysuptime"
    echo "---------------------------------"
    echo "uptime - start_time : ${delta}"
    date -d@$now +'il est              : %H:%M:%S'
    date -d@$val +'processus démarré à : %H:%M:%S'
    et le résultat :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    $ ./pouet.bash
    CLK_TCK    : 100
    pid        : 10680
    tcomm      : (sleep)
    start_time : 3649413277
    uptime     : 3649413956
    ---------------------------------
    uptime - start_time : 679
    il est              : 07:22:35
    processus démarré à : 07:22:28
    on note qu'on retrouve bien notre diff de 6.78 secondes, mesuré ici comme 679 ticks, et l'heure de démarrage du processus fils, arrondi à la seconde.

  3. #3
    Responsable Systèmes


    Homme Profil pro
    Gestion de parcs informatique
    Inscrit en
    Août 2011
    Messages
    17 828
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Gestion de parcs informatique
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Août 2011
    Messages : 17 828
    Points : 44 124
    Points
    44 124
    Par défaut
    Limpide.

    Tu es mieux que le man, man.


+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 0
    Dernier message: 17/04/2017, 20h06
  2. Réponses: 2
    Dernier message: 13/10/2012, 21h07
  3. Réponses: 3
    Dernier message: 03/02/2011, 19h11
  4. Réponses: 4
    Dernier message: 09/08/2010, 09h48
  5. Process.start avec un processus père
    Par DranDane dans le forum C#
    Réponses: 2
    Dernier message: 24/09/2008, 15h02

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo