Aqui está a situação ... Eu tenho um programa que estou executando em vinho. Este programa irá, por vezes, travar .. Eu queria criar um 'script de monitoramento' para assisti-lo e matá-lo e reiniciá-lo se ele travar. Eu consegui isso para encontrar o processo e matá-lo se ele travar, mas o script para naquele ponto sem terminar ... o final seria dormir por 30 segundos e depois iniciar o programa novamente ... mas em vez disso ... o script simplesmente para
Primeiro de tudo, eu vou dizer que sou muito ruim em escrever coisas como esta ... isso é de coisas do googling e colocá-las em um arquivo e tentar fazê-lo fazer o que eu quero: D
Aqui está o que eu tenho .. é um pouco desleixado e provavelmente pode ser limpo ...
#!/bin/bash
CPU_USAGE_THRESHOLD="120"
TOPPROCESS="0"
i="1"
re='^[0-9]+([.][0-9]+)?$'
while [ $i -eq 1 ]; do
MYPROCESS=$(ps aux --sort=-pcpu | grep -v %CPU | head -n 1 | cut -d"." -f1 | cut -d" " -f7)
MYPROCESS2=$(ps aux --sort=-pcpu | grep -v %CPU | head -n 1 | cut -d"." -f1 | cut -d" " -f6)
if ! [[ $MYPROCESS2 =~ $re ]] ; then
>&2;
else
if [ "$MYPROCESS2" -gt "1" ]; then
TOPPROCESS="$MYPROCESS2"
echo "the calculated top process2 is $TOPPROCESS"
echo "the usage threshold is $CPU_USAGE_THRESHOLD";
fi
fi
if ! [[ $MYPROCESS =~ $re ]] ; then
>&2;
else
if [ "$MYPROCESS" -gt "1" ]; then
TOPPROCESS="$MYPROCESS"
echo "the calculated top process is $TOPPROCESS"
echo "the usage threshold is $CPU_USAGE_THRESHOLD";
fi
fi
if [ "$TOPPROCESS" -gt "$CPU_USAGE_THRESHOLD" ]; then
exec pkill SAMBC.exe;
echo "process killed"
sleep 30
exec wine C:\SAMBC\SAMBC.exe
sleep 60
i="1"
else
sleep 60
i="1"
fi
done
O resultado disso parece que ele pára de matar o processo ... Eu recebo isso como resultado se eu executar isso a partir de um prompt de comando.
{~}:$ monitorsam
the calculated top process2 is 121
the usage threshold is 120
{~}:$
Parece parar depois do kill porque não echo "process killed"
A razão pela qual eu tenho process e process2 é por algum motivo que o valor que eu preciso irá aparecer em um ou outro .. Eu acho que depende do que é o seu PID.
Como eu disse, eu sou muito ruim com essas coisas .. Eu realmente não entendo completamente o código que acabei de copiar nas pesquisas do google e encontrei os erros e corrigi-los usando o google .. mas .. ainda realmente don entenda completamente .. apenas uma pequena compreensão ... é provavelmente alguma coisa de ponto e vírgula ou algo que eu estou perdendo, mas eu tentei tudo o que posso pensar.
Ele mata o processo quando ele trava .. mas não o inicia novamente e não continua executando o script do monitoram ... Eu quero que ele reinicie o programa e continue monitorando-o para que ele possa matá-lo e reinicie-o novamente se ele cair novamente.
lol desculpe pelo livro, mas eu queria ter certeza de que eu dava todas as informações que eu podia: D
qualquer ajuda seria apreciada.