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/error
donne 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 ( cron
par exemple), ce qui expliquerait que mon utilisateur peut exécuter la commande, mais pas cron
lui-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)
systemctl
fait 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
,/sbin
sont tous les liens symboliques à/usr/bin
.
systemctl
est /usr/bin
dedans et il accepte suspend
comme ça? Quel * nix utilisez-vous?
systemctl suspend
ne 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/error
ou quelque chose pour capturer les erreurs que vous pourriez rencontrer. Enfin, dites-nous quel utilisateur exécute cette crontab.