OSX가 설치된 MiniMac이 있습니다.
내 스크립트는 다음과 같습니다
while true
do echo "Sleep 300 seconds = 5 minutes"
date
sleep 300
echo "end of sleep"
date
done
5분마다 반복하고 싶지만 때때로 "sleep 300"이 되면 몇 시간 동안 일시 중지되고 결과는 다음과 같습니다.
Sleep 300 seconds = 5 minutes
Fri Nov 8 15:52:49 CET 2013
end of sleep
Fri Nov 8 15:57:49 CET 2013
Sleep 300 seconds = 5 minutes
Fri Nov 8 15:57:49 CET 2013
end of sleep
Fri Nov 8 16:02:49 CET 2013
Sleep 300 seconds = 5 minutes
Fri Nov 8 16:02:49 CET 2013
end of sleep
Fri Nov 8 16:20:59 CET 2013
Sleep 300 seconds = 5 minutes
Fri Nov 8 16:20:59 CET 2013
Sleep 300 seconds = 5 minutes
Fri Nov 8 15:52:49 CET 2013
end of sleep
답변1
좋은 수준을 더 낮은 수준으로 설정했거나 설정하는 프로세스처럼 들립니다. 다음 명령으로 이를 확인합니다.
$ ps -eo "%p %y %x %c %n" | less
마지막 열은 적절한 값이며 대부분의 경우 0이어야 합니다. -20(가장 유리한 스케줄링)에서 19(가장 유리한 스케줄링) 사이의 다른 값인 경우 무언가가 이 다른 값에 좋은 값을 설정하고 있는 것입니다.
예
$ ps -eo "%p %y %x %c %n"| head -10
PID TTY TIME COMMAND NI
1 ? 00:00:01 init 0
2 ? 00:00:00 kthreadd 0
3 ? 00:00:02 ksoftirqd/0 0
4 ? 00:00:03 migration/0 -
5 ? 00:00:00 watchdog/0 -
15 ? 00:00:06 events/0 0
19 ? 00:00:00 cpuset 0
20 ? 00:00:00 khelper 0
21 ? 00:00:00 netns 0
다른 것들
다른 것들@德로버트의지적했다. 일부 출력의 타이밍에 이상한 오프셋이 있습니다. 시계에 문제가 있을 수 있습니다.
특히 이 블록은 다음과 같습니다.
Fri Nov 8 16:20:59 CET 2013 Sleep 300 seconds = 5 minutes Fri Nov 8 15:52:49 CET 2013 end of sleep
이곳은 마치 과거로 시간여행을 하고 있는 것 같아요!
댓글의 일부 사람들은 시스템이 절전 모드에 들어갔거나 최대 절전 모드에 들어갔을 수 있다고 제안했습니다.
sleep
@Gilles가 내 답변에 대한 의견에서 지적했듯이 일반적으로 CPU 시간을 거의 사용하지 않으므로 일반적으로 좋은 수준의 변경에 영향을 받지 않기 때문에 이 아이디어가 가장 좋은 단서인 것 같습니다 .