J'ai cet ensemble de cronjob:
* * * * * /usr/bin/systemctl suspend
Et ça ne marche pas. Mais je peux l'exécuter dans un shell et cela fonctionne. Je ne comprends pas ce qui pourrait ne pas fonctionner.
EDIT
Rediriger la sortie d'erreur vers /tmp/errordonne ceci:
Failed to issue method call: Access denied
Failed to issue method call: Access denied
Ma question est alors: les cronjobs sont-ils exécutés en tant qu'utilisateur spécial ( cronpar exemple), ce qui expliquerait que mon utilisateur peut exécuter la commande, mais pas cronlui-même?
Explication supplémentaire:
Ceci est un exemple minimal pour montrer un problème que j'ai dans un script (qui a plus de sens que la seule commande fournie ici)
systemctlfait partie desystemd. Je pense que le redémarrage, l'arrêt, la suspension fonctionnent avec un utilisateur non root avecsystemd. Quoi qu'il en soit, cela fonctionne sur mon système.Enfin, j'utilise Arch Linux et
/bin,/usr/sbin,/sbinsont tous les liens symboliques à/usr/bin.
systemctlest /usr/bindedans et il accepte suspendcomme ça? Quel * nix utilisez-vous?
systemctl suspendne fonctionne pas sur les distributions Debian ou RedHat) et explique donc que vous ne voulez pas vraiment faire ce que vous montrez :). Essayez également d'ajouter 2> /tmp/errorou quelque chose pour capturer les erreurs que vous pourriez rencontrer. Enfin, dites-nous quel utilisateur exécute cette crontab.