К примеру: curl http://www.domen.ru/file >> file
Затем я закрываю telnet, и как теперь посмотреть, что происходит с закачкой?
Вобщем зашел я через SSH на роутер, врубил TOP,
процес PPP, я ради любопытства его грохнул через
kill -2 номер пид
И все, не поднимается и все. И ребутил, и выключал. Неужеле резет? В настройках включал как бы.
WL-500gP v1 1.9.2.7-d-r617 + PPPoE AVK
К примеру: curl http://www.domen.ru/file >> file
Затем я закрываю telnet, и как теперь посмотреть, что происходит с закачкой?
господа грамотеи...
Чтобы запустить задачу в субшеле надо делать так:
после этого можно закрыть телнет сессию, потом открыть новую и наблюдать за содержимым file...PHP Code:
curl http://www.domen.ru/file >> file &
да, nohup делает то же самое, но & --- это встроенная фича шела.
на всякий случай добавлю маленький кусочек общего ликбеза:
если запустить
то можно выполнить CTRL-Z (это приведет к тому, что выполняемая задача приостановится)PHP Code:
curl http://www.domen.ru/file >> file
после этого запускаем
и последняя приостановленная задача отправляется на выполнение в фоновом режиме (то же что в первом случае)PHP Code:
bg
Комманды имеющие отношение к контролю задач: fg, bg, %, jobs
Достаточно подробное описание /bin/sh мне попалось здесь:
http://www.freebsd.org/cgi/man.cgi?query=sh&format=html
Last edited by al37919; 31-01-2008 at 19:10.
)господа грамотеи...
да можно конечно ctrl-z пользоваться (под pc именно так и делал) а вот на рутере проще пользоваться screen, памяти мало и после ctrl-z свопиться начинает неприятно долго.
vim имеет два режима - бибикать и все портить (с) не мое
& и screen существуют для разных задач...
& --- удобен если запускается нечто, что не предполагает вмешательства юзера, например, "wget чего-то-там &"
screen --- хорошая весчь если мы имеем возможность управлять процессом иногда отключаясь от него (типичный пример rtorrent)
Господа безграмотные пользователи, не нужно давать необдуманных советов.
Например, в указанном примере не переадресован поток сообщений об ошибках, и в случае вывода оных процесс будет приостановлен, а если связывающий этот поток дескриптор закрыт - то к завершению процесса сигналом.
С nohup этого не произойдет, т.к. :
"`nohup' runs the given COMMAND with hangup signals ignored, so that the
command can continue running in the background after you log out."
Коллега, зря спорим: практика --- критерий истины (с) К. Маркс
Вы просто попробуйте:
Запускаем (закачиваемый файл curl выводит в stdout, а прогресс закачки в stderr --- я этого не знал, т.к. обычно пользуюсь wget)
далее смотрим ps -Af:PHP Code:
curl http://www.chipdip.ru/library/DOC000143087.pdf > 1.pdf &
закрываем pts4 сессию:PHP Code:
root 20902 20219 4 20:53 pts/4 00:00:00 curl http://www.chipdip.ru/library/DOC000143087.pdf
По моему все понятно. Кстати, попробовал этот самый nohup:PHP Code:
root 20902 1 3 20:53 ? 00:00:00 curl http://www.chipdip.ru/library/DOC000143087.pdf
Вот тут то отсутствие редиректа stderr приводит к трагическим последствиям:PHP Code:
nohup curl http://www.chipdip.ru/library/DOC000143087.pdf > 1.pdf
В результате файл закачан ошибочно.PHP Code:
ignoring input and redirecting stderr to stdout
Короче забираю свои слова о том, что & делает то же самое, что и nohup и делаю новое утвеждение, что использование & в общем случае безопаснее, хотя при определенных условиях от nohup можно добиться сходного поведения.
У меня есть сильное подозрение, что nohup предназначен для иных задач.
Возвращаясь к вопросу автора --- уточняю. Запускать закачку надо/можно так:
Если запустить ее коммандой:PHP Code:
curl http://www.domen.ru/file > file 2> logfile &
то результат будет тот же, только нужна ли лишняя комманда где можно обойтись без нее?PHP Code:
nohup curl http://www.domen.ru/file > file 2> logfile &
после этого можно отключиться от сессии, зайти по новой и смотреть прогресс закачки следующим образом:
PHP Code:
tail -f logfile
Last edited by al37919; 02-02-2008 at 18:30.
А у wget'a это фича:
screen - тоже архиполезная штука, с ним никакие дисконнекты не страшны.Wget is non-interactive, meaning that it can work in the background, while the user is not logged on. This allows you to start
a retrieval and disconnect from the system, letting Wget finish the work.
вобщем так или иначе я в putty прописал screen -R в поле SSH/Remote program, теперь при подключении к роутеру если нет ниодной сессии то создается новая сессия со скрином, иначе происходит подключение к существующей. При закрытии текущей сессии программы продолжают работать в бакграунде. Довольно удобно. Если захочу прибить сессию напишу exit.
vim имеет два режима - бибикать и все портить (с) не мое
Как показано выше, у curl с этим проблем тоже нет, если грамотно запускать.
А если у меня по жизни rtorrent в screen живет?
Получается при подключении с screen -r я попаду в rtorrent, а может я этого вовсе не хочу
да проблем то нет --- это точно. Тогда надо запускать что то вроде screen -r -S name чтобы попасть куда-то в ожидаемое место, да еще предварительно это место создать... Так что просто screen -R в виде умолчания у putty как то не катит...