Jawaban:
Tujuannya watch
adalah untuk menunjukkan hasil dari layar penuh perintah dan memperbarui terus menerus; jika Anda mengarahkan output ke file dan melatar belakanginya, sebenarnya tidak ada alasan untuk menggunakan arloji.
Jika Anda hanya ingin menjalankan perintah berulang dengan penundaan ( watch
menunggu dua detik secara default), Anda dapat menggunakan sesuatu seperti ini:
while true; do
cmd >> output.txt
sleep 2
done
Begini caranya:
watch -n 1 'date' &>/dev/null &
Karena Anda melatarbelakangi proses tersebut, kami dapat menganggap Anda tidak memerlukan tampilan terminal dan Anda akan diarahkan ke suatu file. Jika Anda melakukannya, Anda akan dapat latar watch
tanpa masalah.
sleep
, seperti yang disarankan oleh Michael Mrozek, perlahan akan tertinggal yang tidak diinginkan. Selain skrip shell yang berbelit-belit yang memonitor waktu sistem dan mengeksekusi perintah berdasarkan waktu yang telah berlalu, watch -p
bisa menjadi pilihan yang baik untuk pengaturan waktu yang tepat.
Untuk ketepatan waktu:
watch -n 1 -p 'date' &>/dev/null &
&
dua kali?
man bash
untuk melihat cara kerja yang pertama &
. ;)
Saya tidak yakin dengan motivasi Anda, tetapi mungkin ini sudah cukup?
while true; do sleep 2; cmd >>output.txt; done &
Kalau tidak, tolong jelaskan mengapa Anda benar-benar membutuhkan watch
.
Tergantung pada motivasi Anda:
Anda ingin menjalankan sesuatu secara berkala. Maka Anda bisa menggunakan cron secara langsung. (Jika perincian waktu 1 menit sudah cukup untuk keperluan Anda).
Anda ingin menjalankan sesuatu berulang kali:
while sleep 2 ; do
cmd
done >& log.txt
(Anda dapat menjalankan ini dari crontab misalnya, meskipun menggunakan skrip sangat disarankan).
Anda ingin menjalankan perintah secara berkala dan memiliki akses ke output dari eksekusi terakhirnya.
Anda dapat menulis output ke ramfs (memodifikasi skrip sebelumnya):
while sleep 2 ; do
cmd >& last_execution.log
done
atau bahkan lebih baik:
while sleep 2 ; do
cmd >& last_execution.log.tmp
mv last_execution.log.tmp last_execution.log ## atomically
done
Anda dapat menggabungkan screen
dan watch
, sehingga Anda selalu dapat memeriksa status terbaru, asalkan cocok dalam satu layar penuh:
screen watch -n 3660 ./make-backup.sh
Anda dapat menggunakan perintah layar.
http://www.cyberciti.biz/tips/linux-screen-command-howto.html