Comment connaitre la date de demarrage d'un process ?

Le
gaelt
Evidemment il y a la version Posix de 'ps -o' ou /proc pour les
systemes qui le supportent.

Existe-t'il une solution portable sur Linux, AIX, HP-UX et Solaris qui
permette, en specifiant un pid, de connaitre la date et le l'heure de
son demarrage ?

L'idee sous-jacente est l'identification certaine d'un pid (apres N
cycles d'allocation. 1 cycle = pid de 0 a 65535) en lui adjoignant une
date.

Le triplet (pid,date,heure) permettant d'etre sur qu'un pid a un
instant donne est bien celui specifie par le triplet et non celui d'un
autre programme s'etant fait attribue le meme pid apres N cycles.

Merci par avance.
  • Partager ce contenu :
Vos réponses
Trier par : date / pertinence
Stephane CHAZELAS
Le #397824
Je ne pense pas que tu trouveras quoi que ce soit de très
portable. Cela dit, si tu te limites à ces 4 systemes (Linux,
AIX, HPUX, Solaris), tu devrais pouvoir t'en sortir avec le
parsing du résultat de ps en gérant les cas particuliers

case `uname` in
Linux) stime=`ps -p "$pid" -o start=`;;
HPUX) stime=`UNIX95= ps -p "$pid" -f | awk '...'`;;
...
esac

regarde les pages de man de chaque. Je pense que tu auras
l'information (pas forcément à la seconde près) au moins pour
Linux, Solaris et HPUX. Pour AIX, je ne sais pas.

--
Stéphane
[SauroN]
Le #397823
"Gael Trinquart" news:
| Evidemment il y a la version Posix de 'ps -o' ou /proc pour les
| systemes qui le supportent.
|
| Existe-t'il une solution portable sur Linux, AIX, HP-UX et Solaris qui
| permette, en specifiant un pid, de connaitre la date et le l'heure de
| son demarrage ?
|
| L'idee sous-jacente est l'identification certaine d'un pid (apres N
| cycles d'allocation. 1 cycle = pid de 0 a 65535) en lui adjoignant une
| date.
|
| Le triplet (pid,date,heure) permettant d'etre sur qu'un pid a un
| instant donne est bien celui specifie par le triplet et non celui d'un
| autre programme s'etant fait attribue le meme pid apres N cycles.
|
| Merci par avance.

man ps

ps -o stime,comm

et si le process est la depuis plus de 24h, alors ca n affiche que la date
gaelt
Le #397817
"[SauroN]"
ps -o stime,comm

et si le process est la depuis plus de 24h, alors ca n affiche que la date


HP-UX 11.00 ne possede pas l'option -o.

gaelt
Le #397816
Stephane CHAZELAS
Je ne pense pas que tu trouveras quoi que ce soit de très
portable. Cela dit, si tu te limites à ces 4 systemes (Linux,
AIX, HPUX, Solaris), tu devrais pouvoir t'en sortir avec le
parsing du résultat de ps en gérant les cas particuliers

case `uname` in
Linux) stime=`ps -p "$pid" -o start=`;;
HPUX) stime=`UNIX95= ps -p "$pid" -f | awk '...'`;;
...
esac

regarde les pages de man de chaque. Je pense que tu auras
l'information (pas forcément à la seconde près) au moins pour
Linux, Solaris et HPUX. Pour AIX, je ne sais pas.


En fait, j'ai renoncé a utiliser ps car cela cree une dependance
externe qui peut eventuellement etre manipulée ou remplacée. Pour des
contraintes de sécurité, je ne peux pas introduire cette faiblesse
dans le systeme.

En fait, j'ai pris le parti de construire une fonction en C en
m'inspirant du code de top. C'est a dire utiliser (en parsant) /proc
sur Linux et Solaris, getprocs() sur AIX et pstat_getproc() sur HP-UX.
L'avantage des deux dernieres fonctions est qu'elles sont disponible
dans libc.a donc elles peuvent etre liées statiquement a mon
exécutable. Et ca tombe bien car je ne pouvais pas non plus utiliser
un shared objet pour les memes raisons de sécurité.

Gael.

Stephane CHAZELAS
Le #397756
Le 4 Jul 2003 03:02:06 -0700, Gael Trinquart
"[SauroN]"
ps -o stime,comm

et si le process est la depuis plus de 24h, alors ca n affiche que la date


HP-UX 11.00 ne possede pas l'option -o.


Si si, il suffit juste de lui passer UNIX95 dans son
environnement.

UNIX95= ps -o pid=,... -p $$

par exemple

--
Stéphane


gaelt
Le #397755
Stephane CHAZELAS
Le 4 Jul 2003 03:02:06 -0700, Gael Trinquart
"[SauroN]"
ps -o stime,comm

et si le process est la depuis plus de 24h, alors ca n affiche que la date


HP-UX 11.00 ne possede pas l'option -o.


Si si, il suffit juste de lui passer UNIX95 dans son
environnement.

UNIX95= ps -o pid=,... -p $$

par exemple


Merci.
Je ne m'en étais pas rendu compte lors du premier message.



Poster une réponse
Anonyme