Estou fazendo o script bash para meu uso. Como posso executar um comando por um tempo determinado, como 20 segundos e finalizar o comando? Tentei muitas soluções, mas nada funciona, também tentei o comando timeout sem sucesso. Por favor, me dê uma solução para isso.
por exemplo: desejo executar este comando no script e no terminal após 10 segundos
some command
some command > logfile &
na primeira linha. Depois você pode analisarlogfile
.No prompt do bash, você pode usar "
your_command & sleep 20; kill $!
aptget install timeout
etimeout -k 3m 14s your_command
expect
como explicado aqui: /unix/43340/how-to-introduce-timeout-for-shell-scriptingperl -e "alarm 10; exec @ARGV" "Your_command"
$COMMAND 2>&1 >/dev/null & WPID=$!; sleep $TIMEOUT && kill $! & KPID=$!; wait $WPID
( Fonte e explicação )fonte
Outra maneira é usar o padrão pgrep $ ou pkill $; retorna todos os PIDs correspondentes ao padrão especificado, analisando todos os processos em execução na máquina. Portanto, para limitar o escopo dos PIDs apenas aos seus, use: padrão pgrep -P $ mypid $ ou pkill -P $ mypid $ pattern
Portanto, para executar um processo em segundo plano por um período de tempo definido, seu script seria algo como isto:
Lembre-se de que isso eliminará todos os processos com o mesmo padrão de nome em execução no PID pai atual. Então você pode usar isso para iniciar vários processos e matá-los todos simultaneamente após um certo tempo.
fonte