Как просмотреть очередь заданий в lftp после ее перемещения в фоновый процесс?
Я только начал использовать lftp для удаленной передачи файлов на моем Raspberry Pi с Debian. Я знаю, как передавать файлы, и использовать queue
а также jobs
добавлять и просматривать передаваемые файлы.
Однако на самом деле я не уверен, как просматривать эти передачи, когда lftp перемещается в фоновый режим. Страница man lftp упоминает, как lftp перемещается в фоновый режим, но когда я открываю новый экземпляр программы из оболочки и набираю jobs
, очередь пуста. Тем не менее, с помощью моего файлового менеджера я могу ясно видеть, что передачи все еще происходят, поскольку файлы там и растут в размере.
Я предполагаю, что когда я снова открываю lftp, он просто открывает новый экземпляр, который не связан с nohup
Режим LFTP, который имеет активную очередь. Я пробовал искать в разных местах, но, похоже, ни у кого больше нет этой конкретной проблемы.
Итак, я думаю, что я спрашиваю, имеет два аспекта:
Есть ли способ легко присоединиться к фоновому процессу lftp для просмотра текущего
jobs
список?Если нет, есть ли способ просмотреть это вообще?
4 ответа
Вы правы, что экземпляры 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.
Собрано со страницы руководства lftp: Использование ctrl-z
переместить процесс в фоновом режиме и выйти lftp
позже запусти lftp снова и набери wait
,
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, если родительский процесс завершен.
У меня стабильный Debian.
После того, как мой компьютер перешел в спящий режим, я запустил его снова, и мне пришлось повторно подключиться к ssh, затем я перешел в локальный каталог с помощью cd, затем вошёл на внешний сервер через lfpt, перешёл в удаленный каталог и выполнил ту же команду, которую использовал из начать инициировать зеркалирование.
зеркало -c --параллель=10
Это возобновило предыдущую передачу.
Я до сих пор злюсь на себя за то, что не запустил его на экране с самого начала. Это то, что я бы порекомендовал всем остальным. Запускайте всю подобную ерунду на экране, чтобы не беспокоиться о том, что вас отключат и т. д.