Execute um comando para uma quantidade específica de tempo [duplicado]

5

Existe uma maneira de executar um comando por um período de tempo específico e depois eliminá-lo?

Exemplo 1:

Eu gostaria de tocar uma música em cvlc por 1 minuto e depois parar. (a música tem mais de 1 min).

Exemplo 2:

Gostaria de executar o comando cmatrix por 30 segundos e interrompê-lo.

    
por Severus Tux 20.10.2016 / 18:35

1 resposta

7

O comando timeout é construído precisamente para isso. Para executar o comando cvlc por 1 minuto:

timeout 1m cvlc-command

O período de tempo pode usar as strings d para dias, h para horas, m para minutos es para segundos. Se nenhuma letra de medição de tempo for dada, o padrão é segundos.

Uma opção útil é --preserve-status , o que fará com que o comando de tempo limite saia com o código de status do comando controlado, mesmo que seja eliminado. Se esta opção não for usada, o código de status será o do comando controlado se nenhum tempo limite ocorrer, ou 124 se o comando expirar.

Outra opção útil se você precisa ter certeza de que o serviço parou é usar --kill-after=<time> , que enviará outro sinal de kill ao comando se o comando não tiver parado pelo novo limite definido pelo tempo

    
por Arronical 20.10.2016 / 18:44