如何在scp期间禁用CTRL-C?

时间:2013-09-04 16:27:02

标签: linux bash

我希望我的脚本能够完成scp,即使输入了 CTRL + C 。我尝试使用陷阱来禁用 CTRL + C ,但在scp正在进行时它不起作用。 scp立即终止。有没有办法做到这一点?代码如下。很简单。

#!/bin/bash
trap '' SIGINT SIGTERM
scp -q user@server:/backup/large_file.txt /local/dir/

更新:还要确保脚本顶部有“set -m”。

2 个答案:

答案 0 :(得分:12)

将其放在子shell中的背景中,以将其与终端断开连接。

(scp ...&)

编辑:您可能希望将任何错误重定向到文件。

答案 1 :(得分:0)

如果您想将其发送到后台并且能够再次进入前台,请使用以下命令:

$ ( sleep 10 ; echo hello ) &
[1] 1323
$ jobs
[1]  + running    ( sleep 10; echo hello; )
$ kill %1
$
[1]  + 1323 terminated  ( sleep 10; echo hello; )
$ $
$ ( sleep 10 ; echo hello ) &
[1] 1325
$ jobs
[1]  + running    ( sleep 10; echo hello; )
$ fg %1
[1]  + 1325 running    ( sleep 10; echo hello; )
^C
$

因此,您可以使用&在后​​台发送进度,并使用jobs查看所有后台任务,然后您可以使用%1访问它并使用kill将其终止使用fg将其转到前台。