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.
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.
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
| 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
HP-UX 11.00 ne possede pas l'option -o.
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.
Si si, il suffit juste de lui passer UNIX95 dans son
environnement.
UNIX95= ps -o pid=,... -p $$
par exemple
--
Stéphane
Merci.
Je ne m'en étais pas rendu compte lors du premier message.