scp 需要在前台输入密码,然后慢慢等着传输完成,但是在传很大数据的时候,长时间占用当前的窗口很是不方便,其实是有命令可以把scp放到后台的。
先介绍几个用到的命令。
首先需要注意区分【任务】和【进程】,任务是对于人来说,人与系统的交互接口就是命令,可以理解为一个任务就相当于一个命令,而进程是相对计算机来说,计算机执行一个任务可以包含多个进程,两个都用id号来标识。
ctrl + z
: 将当前任务暂停并挂载至后台,但是此任务并没有结束,它只是被系统挂起,等待唤醒(ctrl+c是强制结束)
jobs
: 查看当前后台中的任务
bg %n
:将后台id为n的任务由暂停变成继续执行(stopped -> running),但仍在后台执行
fg %n
: 将后台id为n的任务提到前台执行
disown -h %n
:使id为n的任务忽略HUP信号,和 nohup 的功能类似,当使用过 disown 之后,会将把目标任务从任务列表中移除,我们将不能再使用jobs来查看它,但是依然能够用ps -ef查找到它
具体操作方法如下:
输入scp
命令,输完密码后
ctrl + z
暂停任务,此时scp被系统挂起
前面的 [1] 代表此任务的id
也可以用jobs
查看
bg %1
将scp在后台继续运行
disown -h %1
设置scp任务忽略HUP信号
查询任务运行情况 ps -ef | grep scp
任务已经在后台正常运行,画框那个地方是父进程id,如果你退出再登录会发现父进程号变为1,证明词进程已经交由系统进程管理。