У меня есть резервный скрипт, который выполняется ежедневно с помощью задания cron. Это копирование с FTP-серверов и подключенных жестких дисков USB, баз данных и т. Д.
В конце сценария я хочу перезагрузить компьютер с Linux, поэтому я добавил конец сценария:
reboot
Но если на следующий день набрать uptime, то обнаружится, что он не перезагрузился. Задание cron выполняется пользователем root, поэтому мне не нужно ставить sudo или su перед командой afaik. Поэтому вместо этого я попробовал другие варианты команды, такие как:
shutdown -t 10 -r
shutdown -r now
/sbin/shutdown -t 10 -r
/sbin/shutdown -r now
/sbin/reboot
Одна попытка за раз, конечно, не все вышеперечисленные 5 строк друг за другом. ПК просто не перезагружается.
У кого-нибудь есть идеи по этому поводу?
logger
команды внутри вашего скрипта (для записи соответствующих сообщений в системный журнал), чтобы проверить, действительно ли он запущен. Может быть дажеlogger -t $0 reboot is $(which reboot)
echo $?
после, если перезагрузка не работает. Разобрать скрипт, чтобы проверить, что он не заканчивается вручную перед вашей командой перезагрузки.Ответы:
Адский способ перезагрузки это использовать
Но это перезагрузит ваш компьютер через 3 секунды без изящной остановки каких-либо служб / приложений, так что вы можете подумать о другом.
Также shutdown может не распознать аргумент "-t", взяв вместо этого аргумент time:
В любом случае, отключение человека может пригодиться. Похоже, что выключение не принимает ничего, кроме минутного разрешения, но ваш пробег может отличаться.
источник
Разрешить перезагрузку для пользователя, использующего
visudo
В вашем скрипте поменяйте
reboot
вsudo reboot
источник