Como posso ter um script para definir o horário durante a inicialização no Intel Mac OSX?

0

A bateria do meu computador está ruim, mas eu realmente não quero gastar o dinheiro para substituí-lo porque ainda dura várias horas. Mas quando chega a cerca de 10%, às vezes apenas desliga completamente o computador sem aviso prévio. Quando isso acontece, o relógio interno é redefinido para 31 de dezembro de 2000. Eu não acho que o relógio é mantido por uma bateria de relógio como no PC, senão eu mudaria isso.

De qualquer forma, assim que o sistema operacional é carregado, recebo um aviso de que a data está definida para antes de 2008 e que alguns aplicativos podem não funcionar corretamente, sendo meu WiFi um deles. Depois, preciso executar algumas etapas para alterar o horário, salvá-lo, fazer logoff e logon novamente. É apenas uma pequena dor na bunda, mas eu gostaria de ter um script semelhante ao arquivo autoexec.bat de um PC para fazer o trabalho para mim.

Durante a inicialização, gostaria de ter um script para verificar a hora. Se é antes de 2008, então configure-o para uma data além de 2008. Contanto que a data seja posterior a 1º de janeiro de 2008, meu WiFi funcionará e o sistema automaticamente corrigirá a hora em alguns instantes.

Estou executando o OSX 10.6.8 em um Mac baseado em Intel.

Agradecemos antecipadamente por sua ajuda Pete

    
por Peter Holtan 24.09.2013 / 07:27

1 resposta

0

Agendamento

Para executar um comando em uma programação, sua melhor opção provavelmente é usar crontab

Cron is a time-based job scheduler in Unix-like computer operating systems. The name cron comes from the word "chronos", Greek for "time". Cron enables users to schedule jobs (commands or shell scripts) to run periodically at certain times or dates.

Assim, você pode configurar scripts e / ou programas, etc. para executar em um agendamento com isso. Para seus usos, o timer mais aplicável é @reboot , que será executado em cada reinicialização. A sintaxe real para isso seria a seguinte:

@reboot /path/to/my/script

Já que em alguns sistemas unixy, data controlando coisas é root - você pode precisar editar crontab de um terminal root - então faça isso (você precisa ter direitos admin / sudo):

  1. Abra um terminal
  2. digite sudo -i ou su -
  3. Digite crontab -e (que abre o crontab em seu editor de texto ambiental
  4. Coloque o acima em sua própria linha ( @reboot /path/to/my/script )
  5. Sair e salvar (os comandos reais dependem de qual editor você usa)
  6. Verifique se o script está marcado como executável ( chmod +x /path/to/my/script )

O script real

Então, como eu disse acima - eu gostaria de ver você fazendo um pouco de trabalho sobre isso, já que nós não somos um serviço de roteiro , mas eu posso muito bem dar-lhe um começo .

Você pode usar o comando date com parâmetros para obter a hora atual do sistema - você pode fazer isso com date '+%Y'

Então aqui está uma comparação baseada no ano:

#!/usr/bin/env bash

sysYr=$(date '+%Y')
cutoff=2008

if [[ $sysYr -lt $cutoff ]]; then
    echo "It's before ${cutoff}!"
else
   echo "It's ${cutoff} or greater!"
fi

Repartição do acima:

  1. Isso apenas informa ao sistema onde procurar pelo programa que executa o script. Isso é mais portátil que /usr/bin/bash , como costumava ser comum. Eu acredito que também funciona no mac. Se não, digite which bash e você pode apontar diretamente para ele.
  2. A $( something ) é a substituição de comandos que substitui o comando pela saída de o comando. Nesse caso, estamos executando date '+%Y' , que expandirá (atualmente) para o inteiro 2013
  3. Definir outra variável para o limite, apenas para bom código saquê.
  4. Compare e faça comandos condicionais. Geralmente, é melhor citar os itens que estão sendo comparados para proteger contra espaços e afins; no entanto, estes números são numerais e não há razão para que não sejam, também -lt é a comparação bash para um numeral "menor que".
  5. O resto é bastante autoexplicativo - echo exibe o seguinte texto.
por 24.09.2013 / 15:59