Como executar o aplicativo por um tempo definido no shell

12

Se e como é possível, em Terminal , fazer com que um aplicativo seja executado por 30 segundos, antes de ser forçado a fechar e ecoar os logs desse processo?

    
por ir-g 27.04.2014 / 16:11

2 respostas

19

Você pode querer usar o comando timeout .

timeout -k 10s 30s command

que irá executar o comando por 30s e matá-lo após 10s se ainda estiver em execução. - Verifique a manpage para mais opções.

    
por mcantsin 27.04.2014 / 16:25
3

Aqui estão duas maneiras (mas o comando timeout sugerido por mcantsin é provavelmente melhor):

  1. Inicie o comando em segundo plano, assim seu PID é salvo em $! e você pode usá-lo para eliminá-lo após o tempo especificado:

    command &
    sleep 30 && kill $!
    
  2. Inicie o comando e use pkill ou killall para eliminá-lo. CUIDADO: Isso pressupõe que apenas um comando com esse nome esteja em execução. Estou usando firefox como exemplo:

    firefox &
    sleep 30 && pkill firefox
    

Não tenho ideia do que você quer dizer com "os registros desse processo", mas o erro padrão de um processo pode ser salvo em um arquivo com command 2> logfile.txt .

    
por terdon 27.04.2014 / 16:22