Я загружаю файл wget, и я хочу выключить свой компьютер после того, как загрузка будет закончена, но я должен пойти куда-нибудь теперь :) Действительно ли возможно выполнить команду в ударе exacly, когда процесс будет закончен?
Я знаю, что это работает:
wget http://example.com/file.rar; shutdown now
Но что, если я ввожу только:
wget http://example.com/file.rar
Можно сделать что-то вроде этого:
ожидание будет ожидать всех программ, работал в фоне от текущей оболочки - т.е. этот wget.
После того, как ожидание закончится - завершение работы продолжится.
В другой оболочке использовать
ps -u <your username> | grep wget
для нахождения PID команды, Вы хотите ожидать на, затем
wait <PID>; shutdown -h now
так, чтобы завершение работы не работало, пока процесс не завершился. См. также ответ depesz.
Мои решения - это: приостановите свою продолжительную задачу с Control+Z, затем введите что-то как:
fg; echo "Done!"
Если Вы хотите работать, реагируют по-другому на основе успешности или неуспешности Вашей команды, используют && и || как операторы короткого замыкания.
fg && echo "Success!" || echo "Failure!"
Править: Это не будет работать с sudo, потому что он попросит Ваш пароль. Я, соответственно, удалил примеры с помощью sudo. При необходимости в sudo для второй задачи используйте другой из методов, отправленных здесь.
С другой стороны, я полагаю, что и GNOME и KDE предлагают способы инициировать завершение работы/перезагрузку, не используя sudo путем отправки соответствующего сигнала D-шины или чего-то.
Да, просто выведите свою вторую команду и нажмите Enter. Если Ваша текущая программа прокручивает текст, Вы не видите то, что Вы вводите правильно, так наблюдайте свои ключи, таким образом, Вы делаете его правильно.
Более умный путь состоит в том, чтобы переключиться на другой TTY (CTRL+ALT+F1 через F6) и выполнить команду одновременно, или если Вы используете программу командной строки, любят экран, Вы могли бы создать новое окно в нем.
Если Вы хотите стать необычными, проверьте статус возврата wget и только завершите работу, если это было успешно.
% wget http://example.com/file.rar
% if [ $? -eq 0 ]
> then
> shutdown now
> fi
wget
выполнения Вы не возвращаете подсказку для создания теста.
– dmckee
03.09.2009, 22:35