
Я пытаюсь запустить простой bash-скрипт, который выключает мой ноутбук, если он не подключен к сети переменного тока с помощью задания cron.
Мой сценарий следующий:
#!/bin/bash
if ! on_ac_power; then
poweroff
fi
И я настроил cron на запуск каждую минуту следующим образом:
*/1 * * * * /home/user/Documents/script.sh
Скрипт отлично работает, если запустить его вручную, но в противном случае он, похоже, не оказывает никакого эффекта под cron.
Что я здесь упускаю?
решение1
Во-первых, я не запускал cron под root.
Судя по всему, для запуска cron под root его нужно добавить с помощью sudo crontab -e
, все, что добавлено просто с помощью , crontab -e
не будет работать как sudo.
Во-вторых, как указано в ссылке:
По умолчанию cron работает в очень ограниченной среде, поэтому многим командам, запускаемым с помощью имени команды из пользовательского терминала, требуется полный путь в crontab или объявление в начале crontab для расширения пути.
Поэтому я в итоге заменил poweroff
на /sbin/shutdown
в своем скрипте, и теперь он работает так, как и ожидалось.
#!/bin/bash
if ! on_ac_power;
then
/sbin/shutdown
fi