Ich habe diesen Cronjob eingestellt:
* * * * * /usr/bin/systemctl suspend
Und es funktioniert nicht. Aber ich kann es in einer Shell ausführen und es funktioniert. Ich verstehe nicht, was nicht funktionieren könnte.
EDIT
Umleitung der Fehlerausgabe zu /tmp/error
:
Failed to issue method call: Access denied
Failed to issue method call: Access denied
Meine Frage lautet dann: Werden Cronjobs beispielsweise als Spezialbenutzer ausgeführt cron
, was erklären würde, dass mein Benutzer den Befehl ausführen kann, aber nicht cron
selbst?
Zusätzliche Erklärung:
Dies ist ein minimales Beispiel für ein Problem in einem Skript (das sinnvoller ist als der hier angegebene einzelne Befehl).
systemctl
ist ein Teil vonsystemd
. Ich denke Neustart, Herunterfahren, Suspendieren arbeiten mit einem Nicht-Root-Benutzer mitsystemd
. Wie auch immer, es funktioniert auf meinem System.Schließlich verwende ich Arch Linux und
/bin
,/usr/sbin
,/sbin
sind alle Symlinks/usr/bin
.
systemctl
ist in /usr/bin
und akzeptiert suspend
wie das? Was * nix benutzt du?
systemctl suspend
funktioniert nicht in Debian- oder RedHat-Distributionen) und erklärt auch, dass Sie nicht wirklich das tun möchten, was Sie anzeigen :). Versuchen 2> /tmp/error
Sie auch, Fehler hinzuzufügen oder zu erfassen, die möglicherweise auftreten. Sagen Sie uns abschließend, welcher Benutzer diese crontab ausführt.