Quando eu corro:
watch 'cmd >> output.txt' &
o trabalho é suspenso pelo sistema:
3569 parado (saída tty)
Existe uma solução alternativa?
shell
command-line
tty
watch
background-process
Juliusz
fonte
fonte
Aqui está uma maneira:
Como você processa o processo em segundo plano, podemos presumir que você não precisa da exibição do terminal e você pode redirecionar para um arquivo. Se você fizer isso, poderá obter um plano de fundo
watch
sem problemas.sleep
, como sugerido por Michael Mrozek, ficará lento o que pode ser indesejável. Além de um shell script complicado que monitora a hora do sistema e executa um comando com base no tempo decorrido,watch -p
pode ser uma boa opção para horários precisos.Para horários precisos:
fonte
&
duas vezes?man bash
para ver como o primeiro&
funciona. ;)Não tenho certeza sobre suas motivações, mas talvez isso seja suficiente?
Caso contrário, explique por que você realmente precisa
watch
.fonte
tee
é seu amigo. Por exemplo, veja como você pode mostrar o número de arquivos no diretório atual e anexá-lo ao count.txt a cada 2 segundos:fonte
Depende de suas motivações:
Você deseja executar algo periodicamente. Então você pode usar o cron diretamente. (Se uma granularidade de tempo de 1 minuto for suficiente para seus propósitos).
Você deseja executar algo repetidamente:
(Você pode executar isso no crontab, por exemplo, embora seja altamente recomendável usar um script).
Você deseja executar periodicamente um comando e ter acesso à saída de sua última execução.
Você pode gravar a saída em um ramfs (modificando o script antes):
ou melhor ainda:
Você pode combinar
screen
ewatch
, para sempre verificar o status mais recente, desde que ele se encaixe em uma única tela:fonte
Você pode usar o comando de tela.
http://www.cyberciti.biz/tips/linux-screen-command-howto.html
fonte
Se você deve usar
watch
- Basta combinar as respostas de mike dangelo e l0b0por exemplo
então assista os segundos passarem
fonte
O Watch foi projetado para gerar saída para a tela, mas sua saída pode ser redirecionada (stdout e stderr) e será executada em segundo plano.
fonte