Перезвоните фоновому процессу к stdout

Общие протоколы HTTP, FTP и SFTP поддерживают запросы диапазона , так что вы можете запросить часть файла. Обратите внимание, что это также требует поддержки сервера, так что это может работать, а может и не работать на практике.

Вы можете использовать curl и опцию -r или --range, чтобы задать диапазон и в конце концов, просто catting файлы вместе. Пример:

curl -r 0-104857600         -o distro1.iso 'http://files.cdn/distro.iso'
curl -r 104857601-209715200 -o distro2.iso 'http://files.cdn/distro.iso'
[…]

И в конце концов, когда вы собрали отдельные части, вы их объединили:

cat distro* > distro.iso

Вы можете получить дополнительную информацию о файле, включая его размер, с помощью опции --head:

curl --head 'http://files.cdn/distro.iso'

Вы можете получить последний фрагмент с открытым диапазоном:

curl -r 604887601- -o distro9.iso 'http://files.cdn/distro.iso'

Прочитайте страницу curl man page для получения дополнительных опций и пояснений.

Вы можете использовать дополнительные рычаги ssh и tmux, чтобы облегчить запуск и удержание. отслеживать загрузку на нескольких серверах.

1
02.08.2014, 16:07
2 ответа

На самом деле, нет. Есть утилиты, которые могут отсоединить процесс от его выходного файла и прикрепить его к текущему терминалу - см. Как отключить запущенный процесс и связать его с новой оболочкой экрана?. Однако:

  • Эти утилиты работают через отладочный интерфейс (ptrace) и модифицируют выполнение программы. Это может привести к краху некоторых программ.
  • Если это сработает, то вывод будет на терминале, а не в лог-файле, куда он должен пойти.
  • Вывод, выданный перед запуском инструмента, будет только в лог-файле.

Вывод задания cron будет где-то записан в лог-файл: либо скрипт в crontab перенаправит вывод в файл, либо cron отправит вывод администратору по электронной почте. Проверьте запись в crontab, чтобы узнать, куда идет вывод.

В Linux, вы можете проверить, куда идет вывод процесса, посмотрев на его файловые дескрипторы в /proc/PID/fd/. Дескриптор файла 1 - стандартный вывод, а 2 - стандартная ошибка.

.
1
27.01.2020, 23:52

Я не думаю, что это возможно. Это будет предположить, что этот процесс знает, как справиться с этой ситуацией и открыть бы Stdin / Stdout / Stderr.

0
27.01.2020, 23:52

Теги

Похожие вопросы