在移至后台进程后,如何查看 lftp 中的作业队列?

drp*_*son 9 ftp ssh

我刚刚开始使用 lftp 在运行 Debian 的 Raspberry Pi 上远程传输文件。我知道如何传输文件,并使用queuejobs添加和查看传输文件。

但是,一旦 lftp 移至后台,我实际上不确定如何查看这些传输。lftp 手册页提到了 lftp 如何移到后台,但是当我从 shell 打开程序的新实例并键入时jobs,队列为空。但是,我可以使用我的文件管理器清楚地看到传输仍在进行,因为文件在那里并且大小不断增长。

我猜当我重新打开 lftp 时,它只是打开一个未连接到nohup具有活动队列的模式 lftp的新实例。我试过搜索不同的地方,但似乎没有其他人有这个特殊问题。

所以,我想我要问的是双重的:

  1. 有没有办法轻松附加到后台lftp进程查看当前jobs列表?

  2. 如果没有,有没有办法查看这个?

jon*_*koo 14

您是正确的,lftp 的实例不共享作业队列,这当然类似于 shell 作业队列的工作方式。

尽管如此,lftp 确实可以附加到现有的后台会话。根据lftp 新闻版本历史,该功能是在 4.3.0 (2011-06-17) 版本中引入的。如果您与 lftp 会话的连接断开或您在后台传输正在进行的情况下退出,使用最新版本您仍然可以恢复后台 lftp 进程并访问其作业队列。

从 lftp 手册页:

附上 [ PID ]

将终端附加到指定的后台 lftp 进程。

为此,您需要知道后台 lftp 进程的进程 ID、PID。执行此操作的一种简单方法是 pgrep 命令,它列出匹配的进程 ID。

例如,这里我在 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...
Run Code Online (Sandbox Code Playgroud)

这列出了需要附加的 pid,但如果我们没有记录下来,我们可以用 pgrep 再次找到它:

$ pgrep lftp
82106
Run Code Online (Sandbox Code Playgroud)

在这里我们恢复后台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]
Run Code Online (Sandbox Code Playgroud)

Debian 稳定版可能没有附加功能,但您仍然可以使用 pgrep 列出活动的 lftp 进程。