Obtenha o comando PID e envie para outro [duplicado]

1

Eu queria saber se eu posso executar um comando do terminal e logo após o comando começar eu envio seu PID para outro comando a ser monitorado.

Eu preciso fazer algo assim,

dd if=/path/of/file of=/path/of/destination

E então eu preciso monitorar sua execução usando pidstat , mas pidstat pega um pid e eu não sei como fazer um enviar o pid para o outro.

Eu preciso monitorar o uso do disco, o uso da memória, o uso da CPU e o tempo decorrido. Alguém sabe de uma maneira de fazer isso?

    
por cesar.rickinho 12.06.2014 / 04:41

2 respostas

0

No bash (e possivelmente em outras shells) você pode capturar o PID do último processo em background programaticamente usando a variável $! shell, ou seja, deve ser possível fazer algo como

dd if=/path/of/file of=/path/of/destination & pidstat -p $!

Veja esta pergunta semelhante ao askubuntu

    
por 12.06.2014 / 05:09
0

Você pode fazer isso adicionando um & até o final do seu comando.

dd if=/path/of/file of=/path/of/destination &

Quando você faz o comando acima, ele lhe dará um pid e você pode usar o pid para monitorar.

Teste

cat infinite.sh
#!/bin/bash
while :
do
        echo "Press [CTRL+C] to stop.."
        sleep 1
done

Agora, no primeiro terminal eu corro o comando acima como abaixo.

-bash-3.2$ ./s.sh &
[1] 25666
-bash-3.2$ Press [CTRL+C] to stop..
Press [CTRL+C] to stop..
Press [CTRL+C] to stop..
Press [CTRL+C] to stop..

Agora, posso abrir o segundo terminal e usar apenas kill -9 25666 para interromper esse processo. No seu caso, você pode abrir o segundo terminal para monitorar o comando dd usando o pid que você obteve no primeiro terminal.

    
por 12.06.2014 / 04:56

Tags