Como posso fazer o gnu watch rodar em segundo plano?

1

Se eu iniciar um comando watch em segundo plano, ele será interrompido. Trazer o trabalho para o primeiro plano faz com que ele seja executado novamente, mas quero que isso seja executado em segundo plano.

$ watch ./do-something.sh &
[1] 97673
[1]+  Stopped                 watch ./do-something.sh

Espero que este trabalho esteja sendo executado em segundo plano, mas não é

$ bg 1
[1]+ watch ./hello.sh &
[1]+  Stopped                 watch ./hello.sh

Isso também não faz nada. Iniciar o trabalho em primeiro plano e mover-se em segundo plano com Ctrl-Z e "iniciar" com bg 1 também não funciona.

Isso é um "recurso" do relógio? Eu só quero periodicamente executar algo, a cada poucos segundos, e eu particularmente não me importo com a saída. (cron não é a ferramenta certa para isso, fwiw).

    
por tobym 12.12.2011 / 20:35

1 resposta

2

I just want to periodically run something, every few seconds, and I don't particularly care about the output. (cron is not the right tool for this, fwiw).

E nem é watch . Ele é projetado para interativamente monitorar a saída de algum comando - ele se recusará a ser executado em segundo plano se não puder controlar o terminal, como qualquer outro programa interativo.

Tente algo mais simples:

while sleep 2; do ./do-something.sh; done &

Ah, e o cron seria a ferramenta certa para fazer isso - afinal, esse é o seu único trabalho. Há apenas a limitação de não poder especificar tarefas com segunda precisão.

    
por 12.12.2011 / 20:43