Iniciando um processo bash em segundo plano no OS X

3

Estou usando uma modificação do sistema de compilação LaTeX de Paul Biggar .

O núcleo deste sistema é apenas um script bash que executa um loop infinito. A questão é: como eu executo esse script?

No momento, apenas o invoco no terminal:

$ ./build-it.sh report

No entanto, existem dois problemas com isso:

  1. Ele atravessa o terminal com saída irrelevante. Redirecionar os fluxos de saída / erro padrão para /dev/null não ajuda. Na verdade, todas as linhas executadas no script também são gravadas no console. Isso é normal?
  2. Depois de algum tempo (cerca de 30 minutos, eu diria), o script termina com um erro ("Limite de tempo limite excedido").

O primeiro problema provavelmente poderia ser resolvido usando nohup e fechando a janela do terminal. Mas isso ainda deixa o segundo problema. Eu também sinto que esta não é uma solução "limpa" porque eu prefiro executar o script normalmente em segundo plano e impedir sua saída padrão (e, por acaso, não mensagens de erro).

Não existe uma maneira correta de fazer isso?

    
por Konrad Rudolph 17.12.2009 / 12:58

3 respostas

2

Se você estiver usando o script publicado como uma resposta aqui , então você pode remover o set -x que é para depuração.

Se você redirecionar o stderr do script, ele deverá suprimir a saída de depuração, mas também suprimirá as mensagens de erro.

Editar:

Além disso, há uma linha ulimit -t 10 nesse script. Remover isso provavelmente ajudará.

    
por 17.12.2009 / 15:45
1

Tente:

ulimit -t unlimited

para definir o limite de cputime e

man bash

para mais opções do comando interno ulimit bash

    
por 17.12.2009 / 13:58
0

Você pode invocar $ ./build-it.sh report & exit , o que resolverá o primeiro problema.

Quanto ao segundo, pode ter mais a ver com o roteiro atual.

    
por 17.12.2009 / 13:39