Pertanyaan
Saya ingin dapat menjalankan perintah UNIX tepat setiap detik selama periode waktu yang lama .
Saya membutuhkan solusi, yang tidak ketinggalan setelah waktu tertentu, karena waktu itu perintah itu sendiri perlu untuk dieksekusi. tidur , menonton , dan skrip python tertentu semua gagal saya dalam hal ini.
Pada mikrokontroler seperti http://Arduino.cc saya akan melakukan itu melalui interupsi jam hardware. Saya ingin tahu apakah ada solusi shell script tepat waktu yang serupa. Semua solusi yang saya temukan di dalam StackExchange.com, menghasilkan jeda waktu yang nyata, jika melebihi jam. Lihat detail di bawah.
Tujuan / aplikasi praktis
Saya ingin menguji apakah koneksi jaringan saya terus naik dengan mengirimkan cap waktu via nc
(netcat) setiap 1 detik.
Pengirim:
precise-timestamp-generator | tee netcat-sender.txt | nc $receiver $port
Penerima:
nc -l -p $port > netcat-receiver.txt
Setelah selesai, bandingkan kedua log:
diff netcat-sender.txt netcat-receiver.txt
Difs akan menjadi cap waktu yang tidak dikirim. Dari sini saya akan tahu pada waktu apa LAN / WAN / ISP saya membuat masalah.
Solusi TIDUR
while [ true ]; do date "+%Y-%m-%d %H:%M:%S" ; sleep 1; done | tee timelog-sleep.txt
Mendapat offset tertentu dari waktu ke waktu, karena perintah dalam loop juga membutuhkan sedikit waktu.
Presisi
cat timelog-sleep.txt
2012-07-16 00:45:16
[...]
2012-07-16 10:20:36
Detik berlalu: 34520
wc -l timelog-sleep.txt
Baris dalam file: 34243
Presisi diringkas:
- 34520-34243 = 277 masalah pengaturan waktu
- 34520/34243 = 1,008 = diskon 0,8%
Solusi REPEAT PYTHON
Ditemukan di: Ulangi perintah Unix setiap x detik selamanya
repeat.py 1 "date '+%Y-%m-%d %H:%M:%S'" >> timelog-repeat-py.txt
Seharusnya menghindari waktu offset, tetapi gagal melakukannya.
Presisi
wc -l timelog-repeat-py.txt
2012-07-16 13:42:44
[...]
2012-07-16 16:45:24
Detik berlalu: 10960
wc -l timelog-repeat-py.txt
Baris dalam file: 10859
Presisi diringkas:
- 10960-10859 = 101 masalah waktu
- 10960/10859 = 1,009 = Diskon 0,9%
JAM TANGAN
watch -n 1 "date '+%Y-%m-%d %H:%M:%S' >> ~/Desktop/timelog-watch.txt"
Presisi
wc -l timelog-watch.txt
2012-07-16 11:04:08
[...]
2012-07-16 13:25:47
Detik berlalu: 8499
wc -l timelog-watch.txt
Baris dalam file: 8366
Presisi diringkas:
- 8499-8366 = 133 masalah pengaturan waktu.
- 8499/8366 = 1,016 = diskon 1,6%.
nice
proses yang tidur?