Por que um sono de 300 (5 minutos) pode durar várias horas? [fechadas]

3

Eu tenho um MiniMac com o sistema OSX.

Meu script é:

while true
  do echo "Sleep 300 seconds = 5 minutes"
  date
  sleep 300
  echo "end of sleep"
  date
done

Eu quero repetir a cada 5 minutos; mas em algum momento ele fica suspenso por várias horas quando faz esse "sleep 300", aqui está o resultado:

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
    
por user50933 08.11.2013 / 16:49

1 resposta

1

Isso soa como um processo que tem ou está tendo seu nível bom configurado para um nível inferior. Eu confirmaria isso com o comando:

$ ps -eo "%p %y %x %c %n" | less

A última coluna é o valor legal e deve ser 0 na maioria dos casos. Se é algum outro valor entre -20 (agendamento mais favorável) para 19 (pelo menos), então algo está definindo o valor legal para esse valor diferente.

Exemplo

$ 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

Outras coisas

  1. Outra coisa que @ derobert's apontou. O tempo está distorcido de forma estranha em alguns dos seus resultados. Pode haver algo errado com o seu relógio.

    Especificamente, este bloco:

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

    Parece que voltamos no tempo aqui!

  2. Várias pessoas nos comentários indicaram que seu sistema pode ter entrado no modo de suspensão ou pode ter hibernado. Essa idéia parece ser a melhor, já que sleep normalmente usa pouco tempo de CPU, como indicado por @Gilles nos comentários da minha resposta, então normalmente não seria afetado pelo bom nível que está sendo alterado.

por 08.11.2013 / 17:05