Câu hỏi
Tôi muốn có thể chạy một lệnh UNIX chính xác mỗi giây trong một khoảng thời gian dài .
Tôi cần một giải pháp, không bị tụt lại sau một thời gian nhất định, vì thời gian mà chính lệnh cần để thực thi. ngủ , xem , và một kịch bản trăn nhất định đều làm tôi thất bại về vấn đề này.
Trên vi điều khiển, chẳng hạn như http://Arduino.cc, tôi sẽ thực hiện điều đó thông qua các ngắt đồng hồ phần cứng. Tôi muốn biết liệu có một giải pháp kịch bản shell chính xác theo thời gian tương tự hay không. Tất cả các giải pháp mà tôi tìm thấy trong StackExchange.com, dẫn đến độ trễ thời gian đáng chú ý, nếu chạy trong nhiều giờ. Xem chi tiết bên dưới.
Mục đích / ứng dụng thực tế
Tôi muốn kiểm tra xem kết nối mạng của tôi có liên tục lên hay không bằng cách gửi dấu thời gian qua nc
(netcat) cứ sau 1 giây.
Người gửi:
precise-timestamp-generator | tee netcat-sender.txt | nc $receiver $port
Người nhận:
nc -l -p $port > netcat-receiver.txt
Sau khi hoàn thành, so sánh hai bản ghi:
diff netcat-sender.txt netcat-receiver.txt
Khác biệt sẽ là dấu thời gian chưa được truyền. Từ đó tôi sẽ biết lúc nào LAN / WAN / ISP của tôi gây rắc rối.
Giải pháp SLEEP
while [ true ]; do date "+%Y-%m-%d %H:%M:%S" ; sleep 1; done | tee timelog-sleep.txt
Nhận được một độ lệch nhất định theo thời gian, vì lệnh trong vòng lặp cũng mất một ít thời gian.
Độ chính xác
cat timelog-sleep.txt
2012-07-16 00:45:16
[...]
2012-07-16 10:20:36
Giây trôi qua: 34520
wc -l timelog-sleep.txt
Dòng trong tệp: 34243
Tóm tắt chính xác:
- 34520-34243 = 277 vấn đề thời gian
- 34520/34243 = 1.008 = giảm 0,8%
Giải pháp REPEAT PYTHON
Tìm thấy tại: Lặp lại lệnh Unix cứ sau x giây
repeat.py 1 "date '+%Y-%m-%d %H:%M:%S'" >> timelog-repeat-py.txt
Giả sử để tránh thời gian bù, nhưng không làm như vậy.
Độ chính xác
wc -l timelog-repeat-py.txt
2012-07-16 13:42:44
[...]
2012-07-16 16:45:24
Giây trôi qua: 10960
wc -l timelog-repeat-py.txt
Dòng trong tệp: 10859
Tóm tắt chính xác:
- 10960-10859 = 101 vấn đề thời gian
- 10960/10859 = 1,009 = 0,9%
Giải pháp XEM
watch -n 1 "date '+%Y-%m-%d %H:%M:%S' >> ~/Desktop/timelog-watch.txt"
Độ chính xác
wc -l timelog-watch.txt
2012-07-16 11:04:08
[...]
2012-07-16 13:25:47
Giây trôi qua: 8499
wc -l timelog-watch.txt
Dòng trong tệp: 8366
Tóm tắt chính xác:
- 8499-8366 = 133 vấn đề thời gian.
- 8499/8366 = 1.016 = 1.6%.
nice
quá trình ngủ?