Я загружаю файл с помощью wget, и я хочу выключить компьютер после того, как загрузка будет завершена, но мне нужно куда-то идти :) Можно ли выполнить команду в bash точно, когда процесс будет завершен?
Я знаю, что это работает:
wget http://example.com/file.rar; отключение сейчас
Но что, если я наберу только:
wget http://example.com/file.rar
Ответы:
Вы можете сделать что-то вроде этого:
wait будет ждать всех программ, запущенных в фоновом режиме из текущей оболочки - т.е. этого wget.
После окончания ожидания отключение будет продолжено.
источник
В другой оболочке используйте
чтобы найти PID команды, от которой вы хотите ждать, затем
так что отключение не будет запущено, пока процесс не завершится. Смотрите также ответ Депеша .
источник
wait
будет работать только для команд, запущенных из одной оболочкиМои решения таковы: приостановите свою долгосрочную задачу с помощью Control + Z, затем введите что-то вроде:
Если вы хотите, чтобы программа реагировала по-разному в зависимости от успеха или неудачи вашей команды, используйте && и || как операторы короткого замыкания.
РЕДАКТИРОВАТЬ: Это не будет работать с sudo, потому что он попросит ваш пароль. Соответственно, я удалил примеры, используя sudo. Если вам нужно sudo для второго задания, используйте другой из методов, размещенных здесь.
С другой стороны, я считаю, что и GNOME, и KDE предлагают способы инициирования выключения / перезагрузки без использования sudo, посылая соответствующий сигнал D-Bus или что-то в этом роде.
источник
fg
..., ноsudo
может возникнуть проблема, если запросит парольДа, просто наберите вторую команду и нажмите ввод. Если ваша текущая программа прокручивает текст, вы не можете видеть, что вы печатаете правильно, поэтому следите за своими клавишами, чтобы вы делали это правильно.
Более разумный способ - переключиться на другой TTY (CTRL + ALT + F1 - F6) и запустить команду одновременно, или, если вы используете программу командной строки, такую как screen, вы можете создать в ней новое окно.
источник
Если вы хотите стать модным, проверьте статус возврата wget и выключите его только в случае успеха.
источник
wget
вы не получите подсказку для создания теста.