Я обычно начинаю загрузку перед тем, как пойти в школу.
Какую команду следует использовать для автоматического сохранения и выключения компьютера после выполнения определенной задачи?
(Скажем, после установки обновлений или после загрузки большого файла.)
wget http://..../somelargefile && halt- haltбудет выполнен, если не wgetвернет ошибок
wget http://..../somelargefile || halt- haltбудет выполнен, если wgetвернутся ошибки
Альтернативой этому является использование kshutdown- в этом приложении вы можете указать, какое действие должно быть выполнено (перезагрузка / выключение / спящий режим / и т. Д. Или выполнение команды) и когда (через некоторое время или после выхода из другого приложения). Если вы хотите использовать этот инструмент, вам нужно выбрать правильный процесс - некоторые утилиты обновления запускают несколько подпроцессов.
Вы также можете дать shutdownвремя для ожидания; нет необходимости использовать kshutdown для этой цели.
Каскабель
1
Нет, но shutdownне может ждать реального события.
Шадур
18
Каждый процесс имеет каталог, названный в соответствии с его идентификатором процесса (pid) в procфайловой системе. Поэтому вы можете дождаться завершения определенного процесса, проверив, существует ли его каталог повторно.
Вы можете использовать это, чтобы выполнить выключение системы после завершения процесса, как это (замените 2296 на pid для ожидания):
su -c 'while [[ -d /proc/2296 ]]; do sleep 1; done; poweroff'
Преимущества:
Вы можете решить, следует ли завершить работу после отключения команды оболочки
Завершение работы выполняется от имени пользователя root, команда ожидания не обязательно выполняется от имени пользователя root (нет необходимости sudoобходить приглашение позднего пароля).
Недостатки:
Может случиться, что ваш процесс завершится, и ОС затем повторно использует тот же pid для вновь порожденного процесса в течение этой секунды (состояние гонки). Таким образом, вы бы продолжали ждать завершения этого нового процесса.
Если вы запустили что-то с терминала, который у вас все еще открыт psв этом же терминале, это поможет вам определить PID для CMD. Если процесс был / находится на другом терминале, то вывод команды ps для всего через grep для фильтрации вашей команды должен помочь вам найти егоps -elf | grep <command_related_word>
TafT
Лучше проверить мой ответ на основе pgrepака процесса Grep ...
Жиль Quenot
Как я могу поставить эту команду в фоновом режиме?
Вы можете использовать &&и ||оператор команды цепи вместе. Например:
apt-get update && sleep 2 && init 0
который выполнит обновление системы с помощью aptitude, подождет 2 секунды и перейдет к уровню выполнения 0, в зависимости от вашей системы это может или не может фактически отключить оборудование.
Чтобы говорить с одной или несколькими операциями, выполняемыми после более произвольной операции, такой как, например, загрузка через веб-браузер, вам потребуется дополнительная логика для просмотра загружаемого файла, чтобы убедиться, что загрузка фактически завершена, однако логика оболочки не изменилась.
shutdown
время для ожидания; нет необходимости использовать kshutdown для этой цели.shutdown
не может ждать реального события.Каждый процесс имеет каталог, названный в соответствии с его идентификатором процесса (pid) в
proc
файловой системе. Поэтому вы можете дождаться завершения определенного процесса, проверив, существует ли его каталог повторно.Вы можете использовать это, чтобы выполнить выключение системы после завершения процесса, как это (замените 2296 на pid для ожидания):
Преимущества:
sudo
обходить приглашение позднего пароля).Недостатки:
источник
ps
в этом же терминале, это поможет вам определить PID для CMD. Если процесс был / находится на другом терминале, то вывод команды ps для всего через grep для фильтрации вашей команды должен помочь вам найти егоps -elf | grep <command_related_word>
pgrep
ака процесса Grep ...Вы можете использовать
&&
и||
оператор команды цепи вместе. Например:который выполнит обновление системы с помощью aptitude, подождет 2 секунды и перейдет к уровню выполнения 0, в зависимости от вашей системы это может или не может фактически отключить оборудование.
Чтобы говорить с одной или несколькими операциями, выполняемыми после более произвольной операции, такой как, например, загрузка через веб-браузер, вам потребуется дополнительная логика для просмотра загружаемого файла, чтобы убедиться, что загрузка фактически завершена, однако логика оболочки не изменилась.
источник
Если вы хотите отслеживать уже запущенный процесс, вы можете сделать это в оболочке :
источник
Существует приложение с именем sentinella, которое может сделать это с помощью графического интерфейса пользователя:
для его установки:
источник