|
Publicité ' | |||||||||||||||||||||||
|
|
#1 |
|
Inscrit
![]() Inscription : août 2004 Messages : 3 275 ![]() |
Bonjour,
nous avons une application qui tourne sur différentes machines, et nous voudrions vérifier que toutes ces applications sont de la même version (même fichier exécutable). Les problèmes sont que: - l'exécutable présent sur la machine peut être différent de celui qui est en cours d'exécution. - aucun système de version n'a été implémenté sur cette application. - l'arrêt de cette application est lourde de conséquence, il s'agit donc de ne pas toucher les exécutions en cours - nous n'avons pas accés aux source de l'appli. Nous avons donc besoin de pouvoir différencier les différentes version de cette application uniquement à partir de son processus en cours d'exécution. Je ne connais pas suffisemment l'environnement linux pour m'en sortir tout seul. Toute piste est la beinvenue. Les systèmes cibles sont des Ubuntu (6 et 7). Merci pour toute aide que vous pourrez m'apporter. r0d. |
|
|
00
|
|
|
#2 | ||||
|
Expert Confirmé Sénior
![]() francois Ingénieur systèmes et réseaux Inscription : juillet 2006 Messages : 3 546 ![]() |
si c'est le fichier binaire que vous voulez comparer alors c'est assez simple :
Code :
typiquement si les binaires sont identiques alors on a aucun retour sauf la variable $? qui est à valeur zéro sinon à 1 Code :
|
||||
|
|
00
|
|
|
#3 |
|
Inscrit
![]() Inscription : août 2004 Messages : 3 275 ![]() |
Yop, merci pour te pencher sur le problème
cela dit, ce ne sont pas les fichiers binaires (que j'appelle exécutable) que je veux comparer, mais les processus en cours d'exécution. Car comme je l'ai dit dans ñon premier post, les fichiers binaires présents sur les machines peuvent être différents du programme en cours d'exécution. |
|
|
00
|
|
|
#4 | ||
|
Expert Confirmé Sénior
![]() francois Ingénieur systèmes et réseaux Inscription : juillet 2006 Messages : 3 546 ![]() |
alors il faut comparer le fichier binaire ouvert par le processus en cours d'execution (/proc/numeroprocessus/cmdline) j'ai complété la première réponse pour donner un exemple.
our le cas du processus en exécution maintenant il suffit d'aller récupérer son chemin dans /proc/numero_processus/cmdline et de faire la comparaison sur celui là bien sur. par exemple on récupéré le nom du fichier vraiment ouvert par le processus 3073 comme ça : Code :
|
||
|
|
00
|
|
|
#5 |
|
Inscrit
![]() Inscription : août 2004 Messages : 3 275 ![]() |
ok.
sinon j'ai vu que dans /proc/numeroprocessus, il y a un fichier 'stat'. Est-ce qu'on peut utiliser le contenu de ce fichier pour comparer? A quoi correspondent les chiffres de ce fichier?
|
|
|
00
|
|
|
#6 |
|
Expert Confirmé Sénior
![]() francois Ingénieur systèmes et réseaux Inscription : juillet 2006 Messages : 3 546 ![]() |
le fichier stat c'est (par colones)
1- pid 2- com (nom d'executable) 3-state ( etat du thread R/S/D/Z/T/X) 4-ppid (parend proces id) 5-groupe de processus 6-session SID 7-... etc... y'n a 39 comme ca... il faudrait consulter /proc & /sys un bouquin qui decrit tout ca bien plus complet que ma memoire.... bref pour comparer tu est cuit...y'aura trop de valeurs differentes ne serai ce que les ID SID PPID .... |
|
|
00
|
Copyright © 2000-2012 - www.developpez.com