Под управлением Ubuntu 14.04 в общедоступной компьютерной комнате, я включил необслуживаемые обновления и настроил к перезагрузке в 02,00 ночью. ПК являются двойной загрузкой, таким образом, пользователь перезагрузил бы компьютер для начальной загрузки другой ОС, но если бы u-u установил некоторые обновления и установил его на перезагрузку, то пользователи не смогли бы сделать это собой: если они нажимают на значок механизма и затем выбирают завершение работы и Перезагрузку, система просто ничего не делает.
Если я вхожу в систему как корень и пытаюсь дать команду перезагрузки, ответ является "другим завершением работы, уже ожидающим", таким образом, я должен завершить работу-c для отмены его, и после этого я могу перезагрузить. Это, очевидно, не, что я хочу, потому что пользователи должны смочь перезагрузить каждый раз, когда они хотят без моего (или корень) вмешательство.
Кто-либо мог помочь мне в достижении моей цели (=have u-u набор, чтобы установить автоматически, и перезагрузить в 2,00 ночью, позволяя пользователям, свободным к перезагрузке/завершению работы, когда они хотят, не давая им корневые полномочия)?
Большое спасибо,
Andrea
Прямо сейчас Необслуживаемые Обновления являются установкой для перезапуска компьютера в 2:00, если обновление требует перезапуска. Этот шаг остановит это поведение.
Шаг: отредактируйте файл /etc/apt/apt.conf.d/50unattended-upgrades
В файле ищут строку:
unattended-Upgrade::Automatic-Reboot "true";
и заставьте его быть похожим:
Unattended-Upgrade::Automatic-Reboot "false";
Сценарий ниже проверок, если файл reboot-required
существует и если так, это сразу перезагружает компьютер. Давайте назовем этот файл reboot_if_needed.sh
.
#!/bin/bash
if [ -f /var/run/reboot-required ]; then
echo $(date) Sytem restart required by: $(cat /var/run/reboot-required.pkgs)
/sbin/reboot now
fi
Сохраните этот файл как /opt/bin/reboot_if_needed.sh
Сделайте этот исполняемый файл файла:
sudo chmod +x /opt/bin/reboot_if_needed.sh
Объяснение
Когда сценарий работает и файл var/run/reboot-required
существует это произведет некоторый текст, который будет получен в файле журнала /var/log/reboot_history.log
. Затем система перезапустит.
reboot_if_needed.sh
каждую ночь в 2:00Мы хотим запустить скрипт с правами администратора. Таким образом, мы используем sudo
. Откройте терминал путем нажатия Ctrl+Alt+T и войдите:
sudo crontab -e
Эта команда откроет crontab файл для пользователя root, если Вы будете существовать, или создайте пустой новый файл. Добавьте следующую строку в конце файла:
0 02 * * * /opt/bin/reboot_if_needed.sh >> /var/log/reboot_history.log
Если Вы используете nano
как редактор текстового файла, выйдите из редактора путем нажатия Ctrl+X. Редактор предложит Вам сохранять изменения. Нажмите Y и затем нажмите Enter для выбора имени файла по умолчанию.
Объяснение
Строка, добавленная к crontab
сделает сценарий reboot_if_needed.sh
выполняемый каждую ночь в 2:00. >>
перенаправляет вывод к /var/log/reboot_history.log
файл. Этот файл будет создан в первый раз crontab
запускает скрипт.
См. https://help.ubuntu.com/community/CronHowto для того, как использовать crontab
Необслуживаемое обновление, по-видимому, планирует перезапуск с задержкой. Например:
sudo shutdown -r 02:00
Вышеупомянутая команда планирует перезапуск в 2:00. Когда такая команда в действительности, Вы получаете сообщение "другое завершение работы, уже ожидающее".
Мы используем crontab для заботы о запуске процесса перезапуска в 2:00, вместо того, чтобы планировать его из shutdown
команда. Таким образом нет никакого завершения работы, ожидающего, после того как Необслуживаемое Обновление работало. Любой пользователь может перезагрузить компьютер.
Когда любой пользователь перезагружает компьютер файл /var/run/reboot-required
если это выходит, удален системой, поскольку перезагрузка больше не требуется. Компьютер не будет перезапущен в 2:00 сценарием.
Надеюсь, это поможет