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
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![]()
Toutes les vertus des hommes se perdent dans l’intérêt comme les fleuves se perdent dans la mer.
N'oubliez pas de consulter les FAQ Linux et les cours et tutoriels Linux
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
Code : Sélectionner tout - Visualiser dans une fenêtre à part /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 : Sélectionner tout - Visualiser dans une fenêtre à part ps aux | grep StartTaskEngine | cut -f3 -d' '
Toutes les vertus des hommes se perdent dans l’intérêt comme les fleuves se perdent dans la mer.
N'oubliez pas de consulter les FAQ Linux et les cours et tutoriels Linux
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 : Sélectionner tout - Visualiser dans une fenêtre à part
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
Envoyé par zul
![]()
![]()
Chapeau bas.
Toutes les vertus des hommes se perdent dans l’intérêt comme les fleuves se perdent dans la mer.
N'oubliez pas de consulter les FAQ Linux et les cours et tutoriels Linux
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
Code : Sélectionner tout - Visualiser dans une fenêtre à part /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 quemonott3et qui correspond à la commande de lancement d'une application...
sinon pgrep ne fait pas ce que je veux malheureusementEnvoyé par zul
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.
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...Envoyé par zul
je crois que je vais faire comme ça...
merci en tout cas![]()
moi ca me parait bien
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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 : Sélectionner tout - Visualiser dans une fenêtre à part
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![]()
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?Envoyé par MarcG
Code : Sélectionner tout - Visualiser dans une fenêtre à part 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=$iOPTIONS
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 unixdonc awk -v var=$i![]()
il faut trouver autre chose...
donne une partie significative de ton script et l'usage dans awk de "var"
Partager