Estou implementando o pstree como uma atribuição
e gostaria de criar árvore de teste de processos , mas estou com dificuldades para fazer isso.
Eu tentei fazer algo assim para criar uma árvore de processos em segundo plano para que eu possa testar meu script mais tarde.
árvore recursiva de processos
childProcess(){
echo "mine PID is: "$$
local -i level=$(expr $1 - 1) # level of recursion
if [[ $level -gt 0 ]]; then
echo $level
childProcess $level & # we do binary tree
echo "Process with PID $! launched"
childProcess $level &
echo "Process with PID $! launched"
sleep $level
echo "baf! "$level" pid is: "$$
fi
}
# create binary tree of depth 4
for (( i = 0; i < 2; i++ )); do
childProcess 4 &
echo "running proces no. :"$!
done
Mas eu gostaria de fazer eco ao PID a partir do processo, e com isso não posso.
Outra solução que não funciona seria isso, mas cria processos na "maneira DFS".
declare -i level=$1
if [[ $level -gt 0 ]]; then
sh $0 $(expr $level - 1) # spawn children
sh $0 $(expr $level - 1) # spawn children
sleep 100;
echo "level :"$level" process no: "$$
fi
Alguém pode me dizer como construir uma árvore de processos que eu possa acessar pelo PID, e que estaria lá até que eu os exclua, por exemplo? matando o processo mais antigo.
Tags process ps tree recursive shell-script