왜 300시간(5분) 수면이 몇 시간 동안 지속되나요? [폐쇄]

왜 300시간(5분) 수면이 몇 시간 동안 지속되나요? [폐쇄]

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

다른 것들

  1. 다른 것들@德로버트의지적했다. 일부 출력의 타이밍에 이상한 오프셋이 있습니다. 시계에 문제가 있을 수 있습니다.

    특히 이 블록은 다음과 같습니다.

    Fri Nov  8 16:20:59 CET 2013
    Sleep 300 seconds = 5 minutes
    Fri Nov  8 15:52:49 CET 2013
    end of sleep
    

    이곳은 마치 과거로 시간여행을 하고 있는 것 같아요!

  2. 댓글의 일부 사람들은 시스템이 절전 모드에 들어갔거나 최대 절전 모드에 들어갔을 수 있다고 제안했습니다. sleep@Gilles가 내 답변에 대한 의견에서 지적했듯이 일반적으로 CPU 시간을 거의 사용하지 않으므로 일반적으로 좋은 수준의 변경에 영향을 받지 않기 때문에 이 아이디어가 가장 좋은 단서인 것 같습니다 .

관련 정보