假设我正在scp
将一个大文件 (300GB) 从公司服务器传输到我的工作场所计算机,而周末期间我无法访问该计算机(防火墙阻止 ssh 到办公网络内的计算机);因此我不能只是连接到它并查看进度。现在scp
,当我使用家用计算机上的相同帐户 ssh 进入服务器时,我是否可以看到该工作的进度?这当然不是很有用,但无论如何我很好奇。
答案1
您可以使用lsof
列出服务器上 scp 进程打开的当前文件的信息。pidof scp
例如,使用 查找其进程 ID ,然后lsof -p
在该 pid 上使用。您还需要选项-o
来显示正在读取的文件中的当前偏移量scp
。例如
$ pidof scp
29273
$ lsof -op 29273
COMMAND PID USER FD TYPE DEVICE OFFSET NODE NAME
scp 29273 meuh cwd DIR 179,2 273367 /home/meuh
scp 29273 meuh rtd DIR 179,2 2 /
scp 29273 meuh txt REG 179,2 260817 /usr/bin/scp
...
scp 29273 meuh 0r FIFO 0,10 0t0 3005108 pipe
scp 29273 meuh 1w FIFO 0,10 0t0 3005109 pipe
scp 29273 meuh 2w FIFO 0,10 0t0 3005110 pipe
scp 29273 meuh 3r REG 179,2 0t2834432 530 /home/meuh/x
最后一行显示文件描述符 3 已准备好从 file 的偏移量 2834432 读取/home/meuh/x
。您可以watch
重复该命令并查看更改。