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?


@JacobVlijm Seria idealmente executado como um script de shell devido à portabilidade do idioma, principalmente porque a área de uso pretendida é um serviço de IC.
IR-g

1
@ ir-g você pode usar o comando timeout . por exemplo, comando timeout 30s
mcantsin

Respostas:


19

Você pode querer usar o comando timeout .

timeout -k 10s 30s command

que executará o comando por 30s e o matará após 10s, se ainda estiver em execução. - Verifique a página de manual para mais opções.


1
@ ir-g, de nada. Você também pode querer conferir o comando watch , que é semelhante e também muito fácil de usar na linha de comando.
Mcantsin

2
Obrigado por esse ponteiro, watchme parece um comando muito interessante. Pode vir a calhar ...
ir-g

3

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

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

    command &
    sleep 30 && kill $!
  2. Inicie o comando e use pkillou killallpara matá-lo. CUIDADO: Isso pressupõe que apenas um comando com esse nome esteja sendo executado, estou usando firefoxcomo exemplo:

    firefox &
    sleep 30 && pkill firefox

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

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.