#1 Le 13/02/2011, à 23:40
- Hizoka
récupération des pid des sous processus
Bonsoir,
Le problème a évolué : à savoir, comment récupérer tous les pid des sous processus d'un pid ?
mkv_extractor_g(24934)─┬─mkv_extractor_g(24944)
└─mkv_extractor_g(25033)───mkv_extractor_g(25041)───mkvextract(25042)
j'ai le numéro 25033, je voudrais une commande me renvoyant :
psliste 25033
=> 25041 25042
Ancien problème :
voici mon problème.
J'ai une ligne de code ffmpeg pour capturer mon ecran :
ffmpeg -f alsa -ac 2 -i pulse -f x11grab -r 25 -s 1280x1024 -i :0.0+0,0 -acodec libvorbis -ar 44100 -ab 128k -vcodec libx264 -vpre lossless_ultrafast -crf 20 -g 250 -keyint_min 25 -coder 1 -trellis 1 -deblockalpha 0 -deblockbeta 0 -bf 16 -refs 16 -me_method hex -subq 6 -y -r 25 -s 1280x1024 "/home/hizoka/Download/Screencastor.mkv"
je lance cette commande via un :
xterm -e "commande ou fichier contenant la commande"
je récupére le pid de xterm via un :
pid_xterm=${!}
mais je ne vois pas comment récupérer le pid de ffmpeg... j'aimerai utiliser la même commande que ci dessus.
soit donc au final :
xterm -e 'ffmpeg -f alsa -ac 2 -i pulse -f x11grab -r 25 -s 1280x1024 -i :0.0+0,0 -acodec libvorbis -ar 44100 -ab 128k -vcodec libx264 -vpre lossless_ultrafast -crf 20 -g 250 -keyint_min 25 -coder 1 -trellis 1 -deblockalpha 0 -deblockbeta 0 -bf 16 -refs 16 -me_method hex -subq 6 -y -r 25 -s 1280x1024 "/home/hizoka/Download/Screencastor.mkv"'
pid_xterm=${!}
il est possible d'utiliser un pgrep ffmpeg, mais dans le cas ou ffmpeg est déjà utilisé ailleurs, ça plante le tout...
j'ai réussis à faire :
#!/bin/bash
ffmpeg -f alsa -ac 2 -i pulse -f x11grab -r 25 -s 1280x1024 -i :0.0+0,0 -acodec libvorbis -ar 44100 -ab 128k -vcodec libx264 -vpre lossless_ultrafast -crf 20 -g 250 -keyint_min 25 -coder 1 -trellis 1 -deblockalpha 0 -deblockbeta 0 -bf 16 -refs 16 -me_method hex -subq 6 -y -r 25 -s 1280x1024 "/home/hizoka/Download/Screencastor.mkv" &
echo "$!" > /tmp/piiid
sleep 0.2
while [[ -n $(pgrep ffmpeg) ]]
do
sleep 1
done
que je lance via un :
xterm -e "mon_fichier" &
je récupère bien le pid de ffmpeg mais le problème c'est que xterm ne m'affiche pas le retour (du moins pas complètement) de ffmpeg.
Existe-il d'autres moyens pour choper le pid et être sûr que c'est lui ?
merci
EDIT : cela règle en fait mon problème, car la seule chose qui n'est pas affiché est la taille du fichier, or, cette taille n'est pas indiquée mais sans lancer ffmepg en fond...
Mais ma question sur le pid reste valide
Dernière modification par Hizoka (Le 23/02/2011, à 05:31)
KDE Neon 64bits
Tous mes softs (MKVExtractorQt, HizoSelect, HizoProgress, Qtesseract, Keneric, Services menus...) sont sur github
Hors ligne
#2 Le 14/02/2011, à 01:59
- chopinhauer
Re : récupération des pid des sous processus
T'as qu'à récupérer le PID de l'unique enfant de ton xterm :
pid_ffmpeg=`ps --ppid $pid_xterm -o pid=`
Pensez à donner un bon titre à vos sujets : cela permettra d'aider d'autres utilisateurs dans votre même situation. Ce n'est pas qu'en donnant des solutions qu'on aide, mais aussi en posant des bonnes questions et… facilement trouvables.
Hors ligne
#3 Le 14/02/2011, à 02:05
- Hizoka
Re : récupération des pid des sous processus
super cette commande
merci beaucoup !!
KDE Neon 64bits
Tous mes softs (MKVExtractorQt, HizoSelect, HizoProgress, Qtesseract, Keneric, Services menus...) sont sur github
Hors ligne
#4 Le 23/02/2011, à 01:31
- Hizoka
Re : récupération des pid des sous processus
je relance pour savoir s'il est possible de récupérer tous les sous pids d'un pid, pas uniquement ses enfants mais également ses petits enfants...
KDE Neon 64bits
Tous mes softs (MKVExtractorQt, HizoSelect, HizoProgress, Qtesseract, Keneric, Services menus...) sont sur github
Hors ligne
#5 Le 23/02/2011, à 06:40
- chopinhauer
Re : récupération des pid des sous processus
Une fonction shell récursive ? Genre :
descendants_or_self() {
local res="$1"
if [ "x$res" = "x$$" ]; then echo $res; return; fi
for child in `ps --ppid $1 -o pid=`; do
res="$res $(descendants_or_self $child)"
done
echo $res
}
Dernière modification par chopinhauer (Le 23/02/2011, à 06:46)
Pensez à donner un bon titre à vos sujets : cela permettra d'aider d'autres utilisateurs dans votre même situation. Ce n'est pas qu'en donnant des solutions qu'on aide, mais aussi en posant des bonnes questions et… facilement trouvables.
Hors ligne
#6 Le 26/02/2011, à 07:33
- Hizoka
Re : récupération des pid des sous processus
il n'existe donc pas de commande simple pour cette opération ?!
KDE Neon 64bits
Tous mes softs (MKVExtractorQt, HizoSelect, HizoProgress, Qtesseract, Keneric, Services menus...) sont sur github
Hors ligne
#7 Le 26/02/2011, à 11:22
- Totor
Re : récupération des pid des sous processus
Tu as la commande pstree (à installer, donc nouvelle dépendance) qui te fourni ces informations mais il faut la retravailler :
pstree -p $$|sed -r 's/[^\)]+\(([0-9]+)\)/\1 /g'
Attention, elle te retourne également le pid parent.
-- Lucid Lynx --
Hors ligne