Yanıtlar:
Amacı, watch
bir komutun sonuçlarını tam ekran göstermek ve sürekli olarak güncellemektir; çıktıyı bir dosyaya yönlendiriyor ve arka plana alıyorsanız, ilk etapta watch kullanmanız için hiçbir neden yoktur.
Bir komutu bir gecikme ile tekrar tekrar çalıştırmak istiyorsanız ( watch
varsayılan olarak iki saniye bekler), şöyle bir şey kullanabilirsiniz:
while true; do
cmd >> output.txt
sleep 2
done
İşte bir yol:
watch -n 1 'date' &>/dev/null &
İşlemi arka planı yaptığınızdan, terminal ekranına ihtiyacınız olmadığını ve bir dosyaya iyi yönlendirdiğinizi varsayabiliriz. Bunu yaparsanız sorunsuz bir şekilde arka plan watch
yapabilirsiniz.
sleep
, Michael Mrozek'in önerdiği gibi, yavaş yavaş gecikir ki bu istenmeyen bir durumdur. Sistem saatini izleyen ve geçen süreye göre bir komut yürüten kıvrımlı bir kabuk betiğinin yanı sıra, watch -p
hassas zamanlamalar için iyi bir seçenek olabilir.
Hassas zamanlamalar için:
watch -n 1 -p 'date' &>/dev/null &
&
iki kez kullanmak mümkün ?
man bash
nasıl &
çalıştığını görmek için adresindeki boru hattı bölümünü okuyun . ;)
Motivasyonlarından emin değilim, ama bu yeterli olabilir mi?
while true; do sleep 2; cmd >>output.txt; done &
Aksi takdirde, lütfen neden gerçekten ihtiyacınız olduğunu açıklayın watch
.
Motivasyonlarınıza bağlıdır:
Bir şeyi periyodik olarak çalıştırmak istiyorsunuz. Sonra doğrudan cron kullanabilirsiniz. (Amacınız için 1 dakikalık bir zaman dilimi yeterliyse).
Bir şeyi tekrar tekrar çalıştırmak istiyorsunuz:
while sleep 2 ; do
cmd
done >& log.txt
(Bunu bir crontab'dan çalıştırabilirsiniz, ancak bir komut dosyası kullanılması önemle tavsiye edilir).
Periyodik olarak bir komut çalıştırmak ve son yürütme çıktısına erişmek istiyorsunuz.
Çıkışı bir ramfs'ye yazabilirsiniz (daha önce komut dosyasını değiştirerek):
while sleep 2 ; do
cmd >& last_execution.log
done
veya daha iyisi:
while sleep 2 ; do
cmd >& last_execution.log.tmp
mv last_execution.log.tmp last_execution.log ## atomically
done
Bir araya getirebilir screen
ve watch
, böylece bir ekranlı sığdığı sürece her zaman en son durumu kontrol edebilirsiniz:
screen watch -n 3660 ./make-backup.sh
Ekran komutunu kullanabilirsiniz.
http://www.cyberciti.biz/tips/linux-screen-command-howto.html