8

Я только начал использовать lftp для удаленной передачи файлов на моем Raspberry Pi с Debian. Я знаю, как передавать файлы, и использовать queue и jobs для добавления и просмотра передаваемых файлов.

Однако на самом деле я не уверен, как просматривать эти передачи, когда lftp перемещается в фоновый режим. Страница man lftp упоминает, как lftp перемещается в фоновый режим, но когда я открываю новый экземпляр программы из оболочки и набираю jobs , очередь становится пустой. Тем не менее, с помощью моего файлового менеджера я могу ясно видеть, что передачи все еще происходят, поскольку файлы там и растут в размере.

Я предполагаю, что когда я снова открываю lftp, он просто открывает новый экземпляр, который не подключен к режиму nohup lftp с активной очередью. Я пробовал искать в разных местах, но, похоже, ни у кого больше нет этой конкретной проблемы.

Итак, я думаю, что я спрашиваю, имеет два аспекта:

  1. Есть ли способ легко присоединиться к фоновому процессу lftp для просмотра текущего списка jobs ?

  2. Если нет, есть ли способ просмотреть это вообще?

3 ответа3

12

Вы правы, что экземпляры lftp не разделяют очередь заданий, что, конечно, похоже на работу очереди заданий оболочки.

Тем не менее, lftp действительно может присоединиться к существующему фоновому сеансу. Согласно истории версий новостей lftp , эта функция была представлена в версии 4.3.0 (2011-06-17). Если ваше соединение с сеансом lftp разрывается или вы выходите с фоновыми передачами, продолжающимися, в последних версиях вы все равно можете возобновить фоновый процесс lftp и получить доступ к его очереди заданий.

Со страницы руководства lftp:

прикрепить [ PID ]

Присоедините терминал к указанному заднему процессу lftp.

Для этого вам нужно знать идентификатор процесса, PID, фонового процесса lftp. Простой способ сделать это - команда pgrep, в которой перечислены соответствующие идентификаторы процесса.

Например, здесь я фон перевод в lftp:

lftp remote:/path> get oi-dev-151a-x86.iso 
[0] get oi-dev-151a-x86.iso &                                             
     `oi-dev-151a-x86.iso' at 655360 (0%) 296.1K/s eta:46m [Receiving data]
lftp remote:/path> exit
[82106] Moving to background to complete transfers...

В этом списке перечислены pid, необходимые для подключения, но в случае, если мы не записали это, мы можем найти его снова с помощью pgrep:

$ pgrep lftp
82106

И здесь мы возобновляем фоновую LFTP:

$ lftp
lftp :~> attach 82106
[82106] Attached to terminal.
lftp remote:/path> jobs
[0] get oi-dev-151a-x86.iso 
    `oi-dev-151a-x86.iso' at 42827776 (5%) 1.49M/s eta:10m [Receiving data]

Стабильная версия Debian может не иметь функции присоединения, но вы все равно можете перечислить активные процессы lftp с помощью pgrep.

1

Со страницы руководства lftp:

If  you exit lftp when some jobs are not finished yet, lftp will move itself to
nohup mode in background. The same happens when you have a real modem hangup or
when you close an xterm.

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

0

Собрано со страницы руководства lftp: используйте ctrl-z для перемещения процесса в фоновом режиме и выхода из lftp , позже снова запустите lftp и введите wait .

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .