Обычно я начинаю загрузку перед тем, как пойти в школу.
Какую команду использовать, чтобы автоматически сделать необходимые сохранения и выключить компьютер после выполнения определенной задачи?
(Скажите, после установки обновлений или после загрузки большого файла.)
Я также опубликовал это на unix.stackexchange .
Чтобы сделать один раз, чтобы выключить аппарат без пароля:
Откройте командную строку и введите:
sudo visudo
В открывшемся файле добавьте следующую строку в конец:
yourusername ALL=NOPASSWD: /sbin/halt
Затем выйдите из редактора и сохраните его ( Ctrl kbd> + X kbd>).
Теперь вы можете выключить компьютер из командной строки, например, после загрузки чего-либо:
wget UrlOfTheFileYouWantToDownload && sudo halt
Для завершения работу после обновления, можно использовать этот сценарий Python: http://kotbcorp.blogspot.com/2009/06/shutdown-after-update-in-ubuntu.html
Для завершения работу после загрузки, я использую эту команду:
wget http://somehwere.com/path/to/some.file && halt
Другие ответы верны, но чего-то не хватает:
wget UrlOfTheFileYouWantToDownload ; sudo halt
против
wget UrlOfTheFileYouWantToDownload && sudo halt
Второй ответ только выключит компьютер, если wget
возвращается успешно. Первый из них будет остановлен независимо от того, вернется ли wget
успешно или нет.
вы можете использовать менеджеры загрузок или торрент-клиенты, чтобы завершить работу ПК после завершения или предположить, что вы дефрагментируете диск, который вы можете нажать, чтобы завершить работу после завершения, что доступно в большинстве программ.
Я думаю, это во многом зависит от того, как вы загрузили.
Если вы говорите об обновлении apt-get, обновите последовательность, когда вы будете суперпользователем root, соберите свои команды вместе, используя & amp; & amp; (последовательность продолжается, только если ошибок не было)
sudo su -
apt-get update && apt-get upgrade && shutdown -h now
Если вы говорите о загрузке (например, с помощью wget) [еще раз, объедините команды вместе, используя & amp; & amp; запись, гарантирующая, что команды выполняются по порядку, только если предыдущая команда была успешной]
sudo su -
wget -t0 -c http://somedownloadsite/path/file.foo && shutdown -h now
Если ваша загрузка была выполнена графическим клиентом (графическим интерфейсом), то это будет зависеть от механизмов этого клиента для выполнения сценариев после успешной загрузки.
Лично я обнаружил, что было проще использовать gedit для настройки оригинала
yourusername ALL=NOPASSWD: /sbin/halt
, так как sudo visudo
сбивал меня с толку и не показывал последнюю строку четко
. использовал
sudo -H gedit /etc/sudoers
, затем закончил с чистой (для меня) страницей
# User privilege specification
root ALL=(ALL:ALL) ALL
# Members of the admin group may gain root privileges
%admin ALL=(ALL) ALL
# Allow members of group sudo to execute any command
%sudo ALL=(ALL:ALL) ALL
#includedir /etc/sudoers.d
shantiq ALL=NOPASSWD: /sbin/halt
Просто подумал, что упомяну, что в случае, если кто-то еще тоже будет немного смущен
Вместо изменения разрешений на завершение работы вы могли бы сделать следующее:
sudo bash -c 'apt-get update; apt-get dist-upgrade; shutdown -h now'
Для этого нужно запустить приглашение bash от имени пользователя root, который выполняет элементы в единственном списке в кавычках и затем завершает работу. Преимуществом этого метода является то, что Ubuntu забудет вашу первоначальную sudo
аутентификацию через некоторое время (в зависимости от установленного периода времени ожидания - 15 минут по умолчанию), и кто-то, сталкиваясь с вашей машиной, может только остановить текущую команду, но не запустить новую. , Кроме того, для всех, кто говорит об использовании su
, попробуйте:
sudo -s
Я не думаю, что вы можете сделать это ... Нет способа узнать, когда конкретное приложение завершило свою работу.
Раньше я делал sudo su; sleep 3600; halt;
Я знаю, что это не совсем отвечает на ваш вопрос, но вы также можете сделать его основанным на времени, т.е. если вы думаете, что ваша загрузка завершится через 2 часа, вы можете просто выполнить команду:
shutdown -h +120