我刚刚开始在运行 Debian 的 Raspberry Pi 上使用 lftp 进行远程文件传输。我知道如何传输文件,以及如何使用queue
和jobs
添加和查看正在传输的文件。
然而,我实际上并不确定一旦 lftp 移至后台如何查看这些传输。lftp 手册页提到了 lftp 如何移至后台,但当我从 shell 打开程序的新实例并键入 时jobs
,队列为空。但是,我可以使用文件管理器清楚地看到传输仍在进行,因为文件在那里并且大小不断增加。
我猜想当我重新打开 lftp 时,它只是打开了一个未连接到nohup
具有活动队列的模式 lftp 的新实例。我尝试搜索了各个地方,但似乎没有人遇到这个特定问题。
所以,我想我要问的是双重的:
有没有办法可以轻松地附加到后台 lftp 进程来查看当前
jobs
列表?如果没有的话,有什么办法可以查看这个吗?
答案1
您说得对,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...
这列出了需要附加的 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 稳定版本可能没有附加功能,但您仍然可以使用 pgrep 列出活动的 lftp 进程。
答案2
来自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 运行的后台进程。
答案3
从 lftp 手册页收集:使用ctrl-z
将进程移至后台并退出lftp
,稍后再次启动 lftp 并输入wait
。
答案4
我使用的是稳定的 Debian。
我的计算机进入睡眠模式后,我再次启动它,并且必须重新连接到 ssh,然后我使用 cd 导航到本地目录,然后通过 lfpt 登录到外部服务器并转到远程目录并运行我从一开始就使用的相同命令来启动镜像。
镜像-c --parallel=10
这恢复了之前的转移。
我仍然对自己从一开始就没有在屏幕上运行它感到生气。这是我向其他人推荐的。在屏幕上运行所有这样的事情,这样你就不必担心断开连接等。