Eu criei o seguinte script no Ubuntu que pode pausar e iniciar um processo específico:
#!/bin/bash
loopProcess () {
COUNTER=0
while [ true ]; do
echo $COUNTER
sleep 1
let COUNTER=COUNTER+1
done
}
loopProcess &
pidLoopProcess="$!"
while [ true ]; do
read -p "" state
if [ "$state" == 'a' ]; then
echo "Process is running"
kill -CONT "$pidLoopProcess"
elif [ "$state" == 'b' ]; then
echo "Process is sleeping"
kill -STOP "$pidLoopProcess"
fi
done
Demonstração de como funciona:
Gostaria de saber se é possível verificar quando um processo específico está em execução ou dormindo usando a linha de comando. O pseudocódigo seria algo assim:
if [ "$(StatePID $pidLoopProcess)" == 'sleeping' ]; then
## do something
fi
Eu sei que com este script eu poderia declarar algumas variáveis globais e usá-las como sinalizadores... Mas eu quero saber se existe uma ferramenta de linha de comando que faça isso para mim. Existe? É possível?
No Linux, você pode usar isso para obter o status de um processo com um determinado PID:
Isso retorna
T
quando um processo é interrompido. Então, supondo que você esteja em um sistema Linux, você pode fazer algo assim:Uma lista completa de códigos de estado do processo é fornecida em
man ps
: