J'ai cherché sans succès une manière simple via bash sous GNU/Linux de trouver
les process id des enfants d'un processus. Pourquoi je cherchais ça? Je
voulais changer la priorité d'une tâche de compilation (qui évidemment part
plein de sous-processus).
Me suis fâché et j'ai pondu un petit script.
Avec ce script, il suffit donc maintenant de trouver le numéro du processus
parent (`pstree -ph` vous aidera), et d'exécuter, supposant que le processus
parent porte le numéro 12345 :
renice 20 `childpid 12345`
Le script se trouve à la fin de ce message.
========================================================================
I searched without success an easy way to find the children pid of a process,
using bash on GNU/Linux. Why was I looking for such a thing? I wanted to
change priority of a compilation job (that of course spawns lots of
sub-processes).
I got frustrated then wrote a little script.
With this script, you only have to find the parent process id number
(`pstree -ph` will help you), and then execute, for a parent process number
12345:
renice 20 `childpid 12345`
========================================================================
childpid:
########################################################################
#!/bin/bash
# childpid: returns a space-delimited list of the children process id
# of a process. Note that it won't return the parent ID you fed it
#
# Usage: childpid PID
cpid () {
c=$( egrep "^PPid:[[:space:]]+$1$" /proc/[1-9]*/status 2>/dev/null \
| sed -e "s|/proc/\([0-9]\+\)/.*|\\1|" 2>/dev/null )
[ -z "$c" ] \
|| for i in $c; do echo -n "${i} "; cpid $i; done
}
cpid $1
########################################################################
--
--====|====--
--------================|================--------
Patrice Levesque
http://ptaff.ca/
wayneptaff.ca
--------================|================--------
--====|====--
--