질문
오랜 시간 동안 매 초마다 정확하게 UNIX 명령을 실행할 수 있기를 바랍니다 .
명령 자체를 실행하는 데 필요한 시간 때문에 특정 시간 후에 지연되지 않는 솔루션이 필요합니다. sleep , watch 및 특정 python 스크립트는 모두 이와 관련하여 나를 실패했습니다.
http://Arduino.cc 와 같은 마이크로 컨트롤러에서는 하드웨어 클럭 인터럽트를 통해 그렇게합니다. 비슷한 시간 정확한 쉘 스크립트 솔루션이 있는지 알고 싶습니다. StackExchange.com에서 찾은 모든 솔루션은 몇 시간에 걸쳐 실행되는 경우 현저한 시간 지연을 초래했습니다. 자세한 내용은 아래를 참조하십시오.
실용 / 응용
nc
1 초마다 (netcat)을 통해 타임 스탬프를 전송하여 네트워크 연결이 지속적으로 작동하는지 테스트하고 싶습니다 .
송신기:
precise-timestamp-generator | tee netcat-sender.txt | nc $receiver $port
리시버:
nc -l -p $port > netcat-receiver.txt
완료 후 두 로그를 비교하십시오.
diff netcat-sender.txt netcat-receiver.txt
차이는 전송되지 않은 타임 스탬프입니다. 이것으로 LAN / WAN / ISP가 몇시에 문제를 일으키는 지 알 수 있습니다.
솔루션 수면
while [ true ]; do date "+%Y-%m-%d %H:%M:%S" ; sleep 1; done | tee timelog-sleep.txt
루프 내의 명령에도 약간의 시간이 걸리므로 시간이 지남에 따라 특정 오프셋을 가져옵니다.
정도
cat timelog-sleep.txt
2012-07-16 00:45:16
[...]
2012-07-16 10:20:36
경과 시간 : 34520
wc -l timelog-sleep.txt
파일 줄 : 34243
정밀성 요약 :
- 34520-34243 = 277 타이밍 문제
- 34520/34243 = 1.008 = 0.8 % 할인
솔루션 반복 피톤
발견 : x 초마다 유닉스 명령을 영원히 반복하십시오 .
repeat.py 1 "date '+%Y-%m-%d %H:%M:%S'" >> timelog-repeat-py.txt
시간 오프셋을 피하려고하지만 그렇게하지 않습니다.
정도
wc -l timelog-repeat-py.txt
2012-07-16 13:42:44
[...]
2012-07-16 16:45:24
경과 시간 : 10960
wc -l timelog-repeat-py.txt
파일 줄 : 10859
정밀성 요약 :
- 10960-10859 = 101 타이밍 문제
- 10960/10859 = 1.009 = 0.9 % 할인
솔루션 시계
watch -n 1 "date '+%Y-%m-%d %H:%M:%S' >> ~/Desktop/timelog-watch.txt"
정도
wc -l timelog-watch.txt
2012-07-16 11:04:08
[...]
2012-07-16 13:25:47
경과 시간 : 8499
wc -l timelog-watch.txt
파일 줄 : 8366
정밀성 요약 :
- 8499-8366 = 133 타이밍 문제.
- 8499/8366 = 1.016 = 1.6 % 할인.
nice
잠이 드는 프로세스는 어떻게됩니까 ?