команда не запущена в cron (systemctl suspend)

У меня есть этот набор cronjob:

* * * * * /usr/bin/systemctl suspend 

И он не работает. Но я могу запустить его в оболочке, и он работает. Я не понимаю, что не может работать.

EDIT Перенаправление вывода ошибки в /tmp/error дает следующее:

 Failed to issue method call: Access denied Failed to issue method call: Access denied 

Мой вопрос заключается в следующем: работают ли cronjobs как специальный пользователь (например, cron ), что объясняет, что мой пользователь может запустить команду, но не сам cron ?

Дополнительное объяснение:

  • Это минимальный пример, чтобы показать проблему, которая у меня есть в скрипте (что имеет больше смысла, чем приведенная здесь одиночная команда)

  • systemctl является частью systemd . Я думаю, что перезагрузка, shutdown, suspend работают с пользователем без systemd root с systemd . Во всяком случае, он работает над моей системой.

  • Наконец, я использую Arch Linux и /bin , /usr/sbin , /sbin – все символические ссылки в /usr/bin .

5 Solutions collect form web for “команда не запущена в cron (systemctl suspend)”

Я не могу ответить как таковой, но я думаю, что могу указать вам в правильном направлении. Я нашел это на странице Arch Wiki systemd :

polkit необходим для управления питанием. Если вы находитесь в локальном пользовательском сеансе systemd-logind и никакой другой сеанс не активен, следующие команды будут работать без привилегий root. Если нет (например, поскольку другой пользователь зарегистрирован в tty), systemd автоматически запросит пароль root.

[список различных команд systemctl]

systemctl suspend

Это предлагает мне следующие возможности:

  1. У вас есть еще один пользователь. Возможно, вы вошли в систему через tty?

  2. cron запускает свои команды с помощью /bin/sh . По умолчанию на Arch это символическая ссылка на /bin/bash . Это означало бы, что cron запускает неинтерактивную оболочку bash, которая затем обнаруживает, что есть еще один пользовательский сеанс (ваш), поэтому он не имеет права запускать systemctl несмотря на работу в качестве пользователя.

Итак, если ваша проблема systemctl тем, что cron не может запускать systemctl потому что вы уже вошли в систему, вы можете обойти это, играя с polkit, но у меня нет опыта, поэтому я не могу помочь.

Если вы используете систему crontab, вы забыли поле пользователя. Пытаться:

 * * * * * root /usr/bin/systemctl suspend 

Цитируя отсюда :

Другой ответ велик! Но для этого требуется root cron.

Если вы хотите спящий режим из non-sudo cron, есть 2 варианта:

1. Использование polkit

Создайте файл, содержащий следующее:

 [Enable hibernate to be run via cron] Identity=unix-user:* Action=org.freedesktop.login1.hibernate;org.freedesktop.login1.hibernate-multiple-sessions ResultAny=yes 

с именем com.0.enable-hibernation-from-cron.pkla в каталоге /etc/polkit-1/localauthority/50-local.d/ .

Объяснение приведено здесь .

2. Используя visudo

Цитируя отсюда :

Если пользователям разрешено использовать команды останова, но не иметь других привилегий sudo, то, как root, добавьте следующее в конец /etc/sudoers используя команду visudo .

 user hostname =NOPASSWD: /usr/bin/systemctl poweroff,/usr/bin/systemctl halt,/usr/bin/systemctl reboot 

Замените user на свое имя пользователя и hostname для имени машины.
Теперь ваш пользователь может sudo systemctl poweroff с sudo systemctl poweroff и перезагрузиться при перезагрузке sudo systemctl reboot . Пользователи, желающие отключить систему, также могут использовать sudo systemctl halt .
Используйте тег NOPASSWD: только если вы не хотите получать запрос на ввод пароля.

В моем случае точная строка:

 anmol ALL=NOPASSWD: /bin/systemctl hibernate 

(Обратите внимание, что расположение systemctl может отличаться в вашей системе.)

После этого вы можете написать sudo systemctl hibernate cron для спящего режима.

Примечание. Непосредственная модификация /etc/sudoers является плохим ; вместо этого создайте пользовательский файл sudoers под /etc/sudoers.d/ с помощью команды – sudo visudo -f /etc/sudoers.d/custom .

Простым решением является использование crontab root вместо вашего собственного. Отредактируйте его с помощью:

 $ sudo crontab -e 

вместо:

 $ crontab -e 

Вам нужно использовать файл конфигурации systemd в /etc/systemd/system

 [Unit] Description=Pimcore Events Processor [Service] WorkingDirectory=/var/www/html ExecStart=/usr/bin/php run something Restart=always WatchdogSec=300 #in seconds User=www-data Group=www-data [Install] WantedBy=multi-user.target 
  • Служба Squid systemd не запускается при загрузке
  • Удаление пакета Debian автоматически маскирует службу systemd - вызывает предупреждение systemd
  • Попытка понять, чего хочет системная цель
  • Разрешение системной зависимости от Amazon Linux для установки RabbitMQ
  • Запуск службы systemd после network-online.target, но DNS по-прежнему недоступен
  • systemd slow boot - systemd-tmpfiles-setup
  • Как включить Bluetooth * автоматически при загрузке * для последних чипсетов Intel и Broadcom, полагающихся на btattach?
  • Как ограничить права пользователя sudo для журналаctctl на конкретный блок?
  • Подключенная мышь увеличивает время загрузки
  • PID-файл /var/run/named/named.pid не читается (еще?) После запуска
  • Где я могу поместить свой файл systemd в Arch Linux?
  • Вывод скрипта python, выполняющегося как единица, не соответствует порядку, в то время как оболочки не отображаются
  • Interesting Posts

    Как сохранить / dev / stdout целевое местоположение в сценарии bash?

    Как разработать приложение Windows Forms с помощью MonoDevelop на Ubuntu 16.04?

    Насколько хорошо работает grep / sed / awk на очень больших файлах?

    Значение root в файле конфигурации GRUB

    Как создать шаблон виртуальной машины Debian?

    команда: ls / etc | сортировать | grep d * не дает результатов, но ls / etc | сортировать | grep p * перечисляет всю директорию

    Возможно ли создать freebsd 10 или 11 тюрьму в freebsd 9?

    Почему bash очищает OLDPWD при запуске дочернего скрипта?

    отключить «стереомикс» или звуковой шлейф в linux mint 17.3

    Выполняется ли eval путем создания процесса оболочки для оценки следующей команды?

    Как настроить беспроводной USB-адаптер Belkin (F5D7050A)? (Linux Mint 18.1 Xfce)

    Nginx loadbalancing между PHP-FPM и Apache

    Белкинская громоздкая док-станция с внешним монитором, не работающая на macbook pro с Fedora 24?

    Не удалось переустановить Grub из live CD

    В чем разница между началом x и запуском диспетчера дисплеев?

    Linux и Unix - лучшая ОС в мире.