У меня есть этот набор cronjob:
* * * * * /usr/bin/systemctl suspend
И это не работает. Но я могу запустить его в оболочке, и он работает. Я не понимаю, что может не работать.
РЕДАКТИРОВАТЬ
Перенаправление вывода ошибок, чтобы получить /tmp/error
это:
Failed to issue method call: Access denied
Failed to issue method call: Access denied
Мой вопрос: запускаются ли cronjobs как специальный пользователь ( cron
например), что объясняет, что мой пользователь может запускать команду, но не cron
сам?
Дополнительное объяснение:
Это минимальный пример, показывающий проблему, с которой я сталкиваюсь в сценарии (это имеет больше смысла, чем приведенная здесь одна команда)
systemctl
является частьюsystemd
. Я думаю, перезагрузка, завершение работы, приостановка работы с пользователем без полномочий rootsystemd
. Во всяком случае, это работает на моей системе.Наконец, я использую Arch Linux и
/bin
,/usr/sbin
,/sbin
все символические ссылки на/usr/bin
.
systemctl
есть, /usr/bin
и он так принимает suspend
? Какой * nix вы используете?
systemctl suspend
не работает на дистрибутивах Debian или RedHat) и поэтому объясняет, что вы на самом деле не хотите делать то, что вы показываете :). Кроме того, попробуйте добавить 2> /tmp/error
или что-нибудь, чтобы зафиксировать любые ошибки, которые вы можете получить. Наконец, сообщите нам, какой пользователь запускает этот crontab.