web-dev-qa-db-fra.com

rtcwake cron ne fonctionne pas

J'ai l'intention de mettre mon ordinateur en veille chaque nuit et de le faire se réveiller le lendemain matin. J'ai trouvé que rtcwake servirait mon but. Cependant, le mettre dans la crontab ne fait rien. Voici mon entrée crontab pour l'utilisateur "root"

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

Je l'ai ajouté en utilisant 'Sudo crontab -e'. Le syslog montre qu'il a exécuté la commande, mais l'ordinateur ne se met pas en veille. Si j'exécute directement la commande sur le terminal, l'ordinateur est immédiatement mis en veille, comme prévu. Donc, je ne pense pas qu'il y ait de problème avec ACPI.

Est-ce que quelqu'un a un indice? Je suis sur Ubuntu 14.04

1
mand

D'accord, je pense avoir trouvé la solution. Ajouter un Sudo avant que rtcwake résolve le problème.

J'ai cependant maintenant la question suivante: Pourquoi la crontab d'une racine a-t-elle besoin de Sudo pour exécuter une commande? N'est-ce pas déjà en cours d'exécution sous la racine?

2
mand

J'ai fait des recherches à ce sujet, si vous avez "Sudo crontab -e" avec rtcwake à l'intérieur de la table sans Sudo, vous obtiendrez le message d'erreur suivant:

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

il semble que bien que "Sudo crontab -e" soit exécuté sous le compte root, il ne trouve pas le bon chemin de commande. Il y a un autre post qui dit que vous devez mettre PATH devant crontab, etc. Tant que vous mettez Sudo devant votre commande rtcwake, il semble pouvoir retrouver la commande.

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

la configuration ci-dessus dans Sudo crontab fonctionne maintenant, le "autojob" est le script qui contient rtcwake.

1
wyonghao

Je sais que c'est deux ans trop tard, mais j'ai le même problème et je veux donner ma solution à quiconque pourrait avoir ce problème à l'avenir.

Pour réveiller ma machine tous les jours à 06h00, j'ai créé une tâche cron à l'aide de rtcwake. Mon problème était, cependant, que même si le travail temporaire avait fonctionné, cela ne réglait pas l'alarme. J'ai modifié la crontab de l'utilisateur racine avec Sudo crontab -e.

La solution consistait à utiliser le chemin complet de rtcwake dans la crontab, pas seulement la commande. Pour ce faire, utilisez d’abord which rtcwake qui renverra le chemin complet de la commande (dans mon cas, il s’agissait de /usr/sbin/rtcwake) et utilisez-le dans le travail cron.

Mon cronjob ressemble maintenant à ceci: 0 12 * * * /usr/sbin/rtcwake -m no -t $(date +\%s -d 'tomorrow 0600')

En remarque, si vous utilisez date comme moi, vous devez échapper au signe de pourcentage.

0
eirik-ff