您的位置:首页 > 运维架构 > Linux

linux 后台执行scp

2016-05-18 11:41 525 查看
linux 下后台执行scp

因为要传输一个大文件到另一台服务器上,因为传输速度不是很高,传输需要十几个小时,为了保证传输过程不会因为其他原因导致中断,准备把scp放到后台运行。说到后台执行 我们都知道 nohup command &,但是scp命令需要输入密码,所以无法直接使用nohup 。

方法1:

我们可以先配置两台服务器之间的互信,然后在执行

1)配置互信

ssh-keygen -t rsa

ssh-copy-id -i /root/.ssh/id_rsa.pub root@172.172.230.211

##配置成功后,可以在本服务器免密码登录172.172.230.211

2)后台执行scp

nohup scp -l 100000 test.tar root@172.172.230.211:/data &

##可以使用-l控制传输速度,传输过程中占用过大带宽,影响其他服务器。(100000/8/1024=12M)

方法2:使用bg命令转后台执行

1) 直接执行scp

scp -l 100 ibdata1 root@172.172.230.211:/data

2) 查看scp进程号

ps -a

PID TTY TIME CMD

30761 pts/4 00:12:45 mysql

31928 pts/5 00:00:00 scp

31930 pts/5 00:00:00 ssh

32006 pts/3 00:00:00 ps

3) 暂停进程

kill -stop procNumber

kill -stop 31928 >>命令输出如下:

[root@shaofei-test-mysql-01 db_recover]# scp -l 100 ibdata1 root@172.172.230.211:/data
root@172.172.230.211's password:
ibdata1                                                                                                      0% 3024KB  12.6KB/s 39:22:36 ET
<span style="color:#ff0000;">[1]+</span>  Stopped                 scp -l 100 ibdata1 root@172.172.230.211:/data
##注意该输出信息是在你执行scp的session中(从输出信息中我们可以看到scp的job号为1)

4) 查看jobs

jobs
[1]+  Stopped                 scp -l 100 ibdata1 root@172.172.230.211:/data
##此时我们看到的是刚刚被我们暂停的scp,job号为1。(该命令需要在之前执行scp的session下执行才会有输出)

4) 把scp转到后台执行

bg 1 >>命令输出如下:

bg 1
[1]+ scp -l 100 ibdata1 root@172.172.230.211:/data &
##bg命令需要在之前执行scp的session执行,如果在其他窗口执行会报如下错误:

bg 1
-bash: bg: 1: no such job


##可以使用fg jobnum 把进程掉到前台来执行
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: