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

  1. #1
    Responsable Systèmes


    Homme Profil pro
    Technicien maintenance
    Inscrit en
    août 2011
    Messages
    10 256
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : août 2011
    Messages : 10 256
    Points : 22 904
    Points
    22 904

    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.
    Ma page sur developpez.com : http://chrtophe.developpez.com/ (avec mes articles)
    Mon article sur la création d'un système : http://chrtophe.developpez.com/tutoriels/minisysteme/
    Mon article sur le P2V : http://chrtophe.developpez.com/tutoriels/p2v/
    Consultez nos FAQ : Windows, Linux, Virtualisation

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

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

    Informations forums :
    Inscription : novembre 2010
    Messages : 2 687
    Points : 7 324
    Points
    7 324

    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.
    Avant donc que d'écrire, apprenez à penser.
    Selon que notre idée est plus ou moins obscure, l'expression la suit, ou moins nette, ou plus pure.
    Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément.
                                                        - Nicolas Boileau, L'Art poétique

  3. #3
    Responsable Systèmes


    Homme Profil pro
    Technicien maintenance
    Inscrit en
    août 2011
    Messages
    10 256
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : août 2011
    Messages : 10 256
    Points : 22 904
    Points
    22 904

    Par défaut

    Limpide.

    Tu es mieux que le man, man.

    Ma page sur developpez.com : http://chrtophe.developpez.com/ (avec mes articles)
    Mon article sur la création d'un système : http://chrtophe.developpez.com/tutoriels/minisysteme/
    Mon article sur le P2V : http://chrtophe.developpez.com/tutoriels/p2v/
    Consultez nos FAQ : Windows, Linux, Virtualisation

+ 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