bonjour,
est ce que c'est possible de récupérer le nom d'un process à partir de son PID? si oui, quelle commande permet de le faire?
merci d'avance
Version imprimable
bonjour,
est ce que c'est possible de récupérer le nom d'un process à partir de son PID? si oui, quelle commande permet de le faire?
merci d'avance
pidof fait l'inverse de ce que tu veux :(.
Sinon a base de ps et de cut tu peux magouiller.
Il doit exister un commande :?
je doute bien que je puisse y arriver à base de ps car j'ai des commandes de la forme:
et ce n'est pas du tout évident de récupérer le nom du process là-dedans 8O 8OCode:/usr/local/j2re1.4.2_06//bin/java -server -Xmx512m -Dsun.rmi.dgc.client.gcInterval=3600000 -Dsun.rmi.dgc.server.gcInterval=3600000 -Xbootclasspath:/BZFHOMTT/home/bzfhomtt/server/libs/vbjorb.jar:/usr/local/j2re1.4.2_06//lib/rt.jar -Dcalypso.home=/BZFHOMTT/home/bzfhomtt/server -Dsdd.marketdata.client.instanceName=BZF -Dsdd.marketdata.client.autorecovery=true -Dsdd.marketdata.client.autostart=false -Dcorba.config.file=/BZFHOMTT/home/bzfhomtt/server/config/jcf-eds.xml -DclientEDS.config.file=/BZFHOMTT/home/bzfhomtt/server/config/ceds.properties -Dapp.dir=/BZFHOMTT/home/bzfhomtt/server -Duser.home=/BZFHOMTT/home/bzfhomtt -Duser.dir=/BZFHOMTT/home/bzfhomtt/server com.calypso.apps.startup.StartTaskEngine -logfile /BZFHOMTT/home/bzfhomtt/log/TaskEngine-HOM01.log -userhome /BZFHOMTT/home/bzfhomtt -nogui -env HOM01 -user calypso_user -password quemonott3
dans ce cas le nom de l'appli qui est lancée est "StartTaskEngine"
Un truc du genre :
C'est pas très propre, il y a mieux à faire je pense...Code:ps aux | grep StartTaskEngine | cut -f3 -d' '
As-tu essayé de regarder dans l'arborescence /proc/numero_du_process pour voir si un fichier peut contenir une info qui t'intéresserait (genre cmdline, ou bien la valeur qui est entre parenthèses dans stat, ou bien la ligne Name: dans status) ???
le problème est que je n'ai pas que ça, il doit y avoir une dizaine comme ça...:(
à chaque fois je répète cette commande ou il y a moyen de faire des groupement?
Si tu as une liste des PID qui t'intéressent, tu peux faire une boucle FOR dans ton script
Genre :
À affiner !Code:
1
2
3
4 for i in $pid do ps aux | grep $i | cut -f3 -d' ' done
tu peux aussi utiliser pgrep qui fait exactement ce que tu veux
:!: :!:Citation:
Envoyé par zul
Chapeau bas.
ok merci beaucoup pour les réponses :)
je vais éssayer tout ça et je vous tiens au courant ;)
j'ai oublié de vous dire en fait que ça:
est une seule ligne en fait 8O et qui correspond à la commande de lancement d'une application...Code:/usr/local/j2re1.4.2_06//bin/java -server -Xmx512m -Dsun.rmi.dgc.client.gcInterval=3600000 -Dsun.rmi.dgc.server.gcInterval=3600000 -Xbootclasspath:/BZFHOMTT/home/bzfhomtt/server/libs/vbjorb.jar:/usr/local/j2re1.4.2_06//lib/rt.jar -Dcalypso.home=/BZFHOMTT/home/bzfhomtt/server -Dsdd.marketdata.client.instanceName=BZF -Dsdd.marketdata.client.autorecovery=true -Dsdd.marketdata.client.autostart=false -Dcorba.config.file=/BZFHOMTT/home/bzfhomtt/server/config/jcf-eds.xml -DclientEDS.config.file=/BZFHOMTT/home/bzfhomtt/server/config/ceds.properties -Dapp.dir=/BZFHOMTT/home/bzfhomtt/server -Duser.home=/BZFHOMTT/home/bzfhomtt -Duser.dir=/BZFHOMTT/home/bzfhomtt/server com.calypso.apps.startup.StartTaskEngine -logfile /BZFHOMTT/home/bzfhomtt/log/TaskEngine-HOM01.log -userhome /BZFHOMTT/home/bzfhomtt -nogui -env HOM01 -user calypso_user -password quemonott3
sinon pgrep ne fait pas ce que je veux malheureusement :( car je ne connais pas les noms de tous les process qui sont lancés et je ne peux pas les parcourir à caus de leur complexité... c'est pour ça que je voudrai pouvoir récupérer le nom du process à partir de son PID.Citation:
Envoyé par zul
Désolé j'avais mal lu la question.
La solution de 2EurosCent me parait bien.
oui en éffet sinon il faut que je liste tous les process qui m'intéressent et je les passent en paramètre au script...Citation:
Envoyé par zul
je crois que je vais faire comme ça...
merci en tout cas ;)
moi ca me parait bien :oops:Code:
1
2 ebola@gentoo ~ $ ps -e | grep 7997 7997 tty1 00:00:00 bash
fin, j'ai tetre mal compris la question :!:
finalement voici mon script:
il calcule ce que je veux sauf que je voudrai ajouter une colonne au fichier result.log sous la forme "processname=$i" (à chaque itération de la boucle, $i est le nom d'un parametre du script) pour chaque ligne dans la boucle, sauf que j'y arrive pas avec awk car apparamment $i a une autre signification pour lui.Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14 #!/bin/ksh clear /usr/ucb/ps -auxwww > processes.log tmp=""; echo $tmp > result.log; for i in $* do grep -v process.sh | grep $i processes.log > tmp.log awk 'NR > 1{print "user="$1",","pid="$2",","cpu="$3",","ram="$4";"}' tmp.log >> result.log done rm processes.log rm tmp.log
est ce que quelqu'un sait comment je dois faire?
dites-moi aussi si j'ai un truc mal écrit dans mon code...
merci :oops:
awk ne connait pas les parametres shell il faut lui "repasser" ceux donc on a besoin dedans le script awk (man awk) de memoire (pas ma machine sous la main), awk var=$i et utiliser $var dans awk.
tu es sûr qu'il y a cette commande?Citation:
Envoyé par MarcG
Code:awk var=$i
non c'est pour cela que j'indique le man ......
allez c'est un jour ensoleillé :
http://man.developpez.com/man1/awk.1.php
et plus precisement cette partie :
donc awk -v var=$iCitation:
OPTIONS
gawk accepte les options suivantes, listées alphabétiquement :
-F sc
--field-separator sc Utiliser sc en tant que séparateur de champs (la valeur de la variable prédéfinie FS).
-v var=val
--assign var=val Affecter la valeur val à la variable var, avant que l'exécution du programme ne débute. De telles valeurs de variables sont accessibles au bloc BEGIN d'un programme AWK.
-f fichier-programme
!
ça marche pas sous unix :roll:Citation:
donc awk -v var=$i
il faut trouver autre chose...
donne une partie significative de ton script et l'usage dans awk de "var"