В настоящий момент отключены автоматические обновления для перезагрузки компьютера в 2 часа ночи, если для обновления требуется перезагрузка. Этот шаг остановит это поведение.
Шаг: отредактируйте файл /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. Затем система перезапустится.
Мы хотим запустить скрипт с правами администратора. Поэтому мы используем sudo. Откройте терминал, нажав Ctrl + Alt + T и введите:
sudo crontab -e
Эта команда откроет файл crontab для пользователя root, если он существует, или создайте пустой новый файл. Добавьте следующую строку в конец файла:
* 02 * * * `/opt/bin/reboot_if_needed.sh` >> /var/log/reboot_history.log
Если вы используете nano в качестве редактора текстовых файлов, выйдите из редактора, нажав Ctrl + X. Редактор предложит вам сохранить изменения. Нажмите Alt , а затем нажмите Enter, чтобы выбрать имя файла по умолчанию.
Пояснение
Строка, добавленная в crontab, заставит скрипт reboot_if_needed.sh запускаться каждую ночь в 2 часа ночи. [F19] перенаправляет вывод в файл /var/log/reboot_history.log. Этот файл будет создан в первый раз, когда crontab запускает скрипт.
См. Https://help.ubuntu.com/community/CronHowto о том, как использовать crontab
Автоматически обновляется, по-видимому, планирует перезапуск с задержкой. Например:
sudo shutdown -r 02:00
Приведенная выше команда планирует перезапуск в 2 часа ночи.
Мы используем crontab, чтобы позаботиться о начале процесса перезапуска в 2 часа ночи вместо того, чтобы планировать его из . Таким образом, отключение не выполняется, как только запускается автоматическое обновление. Любой пользователь может перезагрузить компьютер.
Когда какой-либо пользователь перезагружает компьютер, файл /var/run/reboot-required, если он выходит, удаляется системой, так как перезагрузка больше не требуется.
Надеюсь, что это поможет
Ubuntu по умолчанию уже установлен secure_path:
~ sudo -l
Matching Defaults entries for muru on muru-1604:
env_reset, mail_badpass, secure_path=/usr/local/sbin\:/usr/local/bin\:/usr/sbin\:/usr/bin\:/sbin\:/bin\:/snap/bin
User muru may run the following commands on muru-1604:
(ALL : ALL) ALL
Нет опции командной строки, которая может переопределить secure_path, установленную в sudoers.
From man sudoers:
secure_path Path used for every command run from sudo. If you don't
trust the people running sudo to have a sane PATH
environment variable you may want to use this. Another use
is if you want to have the “root path” be separate from the
“user path”. Users in the group specified by the
exempt_group option are not affected by secure_path. This
option is not set by default.
Итак, либо установите exempt_group в sudoers, либо добавьте себя в эту группу или освободите себя от sudoers:
Defaults:rick !secure_path
( rick предположительно является вашим именем пользователя.)
Ubuntu по умолчанию уже установлен secure_path:
~ sudo -l
Matching Defaults entries for muru on muru-1604:
env_reset, mail_badpass, secure_path=/usr/local/sbin\:/usr/local/bin\:/usr/sbin\:/usr/bin\:/sbin\:/bin\:/snap/bin
User muru may run the following commands on muru-1604:
(ALL : ALL) ALL
Нет опции командной строки, которая может переопределить secure_path, установленную в sudoers.
From man sudoers:
secure_path Path used for every command run from sudo. If you don't
trust the people running sudo to have a sane PATH
environment variable you may want to use this. Another use
is if you want to have the “root path” be separate from the
“user path”. Users in the group specified by the
exempt_group option are not affected by secure_path. This
option is not set by default.
Итак, либо установите exempt_group в sudoers, либо добавьте себя в эту группу или освободите себя от sudoers:
Defaults:rick !secure_path
( rick предположительно является вашим именем пользователя.)
Ubuntu по умолчанию уже установлен secure_path:
~ sudo -l
Matching Defaults entries for muru on muru-1604:
env_reset, mail_badpass, secure_path=/usr/local/sbin\:/usr/local/bin\:/usr/sbin\:/usr/bin\:/sbin\:/bin\:/snap/bin
User muru may run the following commands on muru-1604:
(ALL : ALL) ALL
Нет опции командной строки, которая может переопределить secure_path, установленную в sudoers.
From man sudoers:
secure_path Path used for every command run from sudo. If you don't
trust the people running sudo to have a sane PATH
environment variable you may want to use this. Another use
is if you want to have the “root path” be separate from the
“user path”. Users in the group specified by the
exempt_group option are not affected by secure_path. This
option is not set by default.
Итак, либо установите exempt_group в sudoers, либо добавьте себя в эту группу или освободите себя от sudoers:
Defaults:rick !secure_path
( rick предположительно является вашим именем пользователя.)