ppt de subprocesso de tempo limite

1

Estou usando o utilitário timeout dentro de um script bash para executar um comando por um determinado período (por exemplo, timeout -s SIGINT 500s ./my_script ). Quero monitorar o processo myscript para ver quanto CPU / memória ele usa (por exemplo, com o comando htop -p <pid> ).

Eu sei que quando um processo é iniciado em segundo plano (com & ) eu posso obter seu pid programaticamente, recuperando a variável $! . O problema é que o tempo limite gera um novo subprocesso e com a variável $! eu recebo o "pid de timeout" e não o pid do myscript.

Como você pode recuperar o pid do subprocesso gerado pelo tempo limite?

    
por Briomkez 03.06.2018 / 13:04

1 resposta

2

Conceda a timeout a chance de iniciar o script e, em seguida, peça ps para o processo cujo pai é timeout :

timeout -s SIGINT 500s ./my_script &
bgpid=$!
sleep 1
p=$(ps -o pid= --ppid "$bgpid")
echo The pid you want is: "$p"
    
por 03.06.2018 / 13:37