なぜ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分ごとに繰り返したいのですが、時々「スリープ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

最後の列は適切な値であり、ほとんどの場合ゼロでなければなりません。 -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時間をほとんど使用しないため、通常は良いレベルの変更の影響を受けないため、このアイデアが最善の手がかりのようです。

関連情報