rtcwake cron não funciona

1

Eu pretendo colocar meu computador para dormir todas as noites e fazer com que ele acorde novamente na manhã seguinte. Eu descobri que o rtcwake serviria ao meu propósito. No entanto, colocá-lo no crontab não faz nada. A seguir está minha entrada crontab para usuário "root"

0 1 * * * rtcwake -m disk -s 25200

Eu adicionei usando 'sudo crontab -e'. O syslog mostra que executou o comando, mas o computador não dorme. Se eu executar o comando diretamente no terminal, o computador será colocado em suspensão imediatamente, conforme o esperado. Então eu não acho que haja algum problema com ACPI.

Alguém tem uma pista? Eu estou no Ubuntu 14.04

    
por mand 19.07.2014 / 04:18

3 respostas

1

Ok, acho que encontrei a solução. Adicionando um sudo antes do rtcwake resolve o problema.

Agora eu tenho a seguinte pergunta: Por que um crontab de root precisa do sudo para executar um comando. Já não está rodando sob a raiz?

    
por mand 20.07.2014 / 22:19
1

Eu fiz alguma investigação sobre isso, se você fez "sudo crontab -e" com rtcwake dentro da tabela sem sudo, você receberá a mensagem de erro:

/home/leo/autojob: line 4: rtcwake: command not found

parece que, embora "sudo crontab -e" seja executado na conta root, ele não consegue encontrar o caminho de comando correto. Há outro post que diz que você deve colocar o PATH na frente do crontab, etc. Contanto que você coloque o sudo na frente do seu comando rtcwake, ele poderá encontrar o comando novamente.

# m h  dom mon dow   command
40 14 * * * sudo /home/leo/autojob >> /home/leo/cron_log 2>&1

a configuração acima no sudo crontab agora funciona, o "autojob" é o script que contém o rtcwake.

    
por wyonghao 02.06.2016 / 17:10
0

Eu sei que isso é dois anos mais tarde, mas eu tive o mesmo problema e quero dar a minha solução para qualquer um que possa ter esse problema no futuro.

Para ativar minha máquina todos os dias às 06:00, eu configurei um cronjob usando rtcwake . Meu problema era, no entanto, que, embora o cronjob fosse executado, ele não definia o alarme. Eu editei o usuário root crontab with sudo crontab -e .

A solução foi usar o caminho completo de rtcwake no crontab, não apenas o comando. Para fazer isso, primeiro use which rtcwake , que retornará o caminho completo do comando (no meu caso, foi /usr/sbin/rtcwake ) e use-o no cronjob.

Meu cronjob agora se parece com isso: 0 12 * * * /usr/sbin/rtcwake -m no -t $(date +\%s -d 'tomorrow 0600')

Como uma nota lateral, se você estiver usando date como eu, você tem que escapar do sinal de porcentagem.

    
por eirik-ff 07.08.2016 / 12:33