Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 14/02/2011, à 00: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 smile

Dernière modification par Hizoka (Le 23/02/2011, à 06:31)


KDE Neon 64bits
Tous mes softs (MKVExtractorQt, HizoSelect, HizoProgress, Qtesseract, Keneric, Services menus...) sont sur github

Hors ligne

#2 Le 14/02/2011, à 02: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, à 03:05

Hizoka

Re : récupération des pid des sous processus

super cette commande smile

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, à 02: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, à 07: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, à 07: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, à 08: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, à 12: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