如何停止/中断cp或mv Linux或Unix命令

时间:2020-01-09 10:39:46  来源:igfitidea点击:

如何停止cp命令或mv命令Linux或Unix命令?
如果mv或cp命令在实时系统上中断会怎样?
在执行命令或bash/perl/python脚本期间,用户可以通过按" CTRL" c(按住ctrl键后按住c)来停止或中断cp,mv等命令。
另一个选择是使用kill命令通过PID杀死进程:通过运行以下命令(打开另一个终端并执行命令)来获取firefox的进程ID:

$ ps aux | grep -i firefox
USER               PID  %CPU %MEM      VSZ    RSS   TT  STAT STARTED      TIME COMMAND
veryv            31241   2.8  9.0  5806852 752084   ??  S    11:08AM  31:35.18 /Applications/Firefox.app/Contents/MacOS/firefox -foreground
veryv            55647   0.0  0.0  2442020   1788 s002  S+    3:50AM   0:00.00 grep -i firefox

要终止PID 31241(第二列),请运行:

$ kill -15 pid
$ kill -TERM 31241
$ kill -15 31241

如果一切失败,请尝试传递kill信号:

$ kill -9 31241

使用ps命令和grep命令验证firefox是否消失:

$ ps aux | grep -i firefox

您可以将firefox命令替换为cp命令或您选择的任何其他命令。

有关CTRL-C的更多信息

当您按CTRL-C时,当前正在运行的命令或进程将获得"中断/杀死(SIGINT)"信号。
该信号意味着仅终止该过程。
大多数命令/进程都会接受SIGINT信号,但有些可能会忽略它。
使用cat命令时,可以按Ctrl-D关闭bashshell或打开文件。
您可以按Ctrl-Z暂停运行在bash shell中的当前前台进程。

cp命令中断会怎样?

如果中断cp,则将已传输的文件从源目录复制到目标目录,其余操作将中止。

如果mv命令被中断会怎样?

从线程:

如果在同一文件系统上移动目录,则只能将目录条目从文件系统中的一个位置移动到另一位置。
例如。

mv/source/dir/target/dir将从/source中删除dir的目录项,并在/target中创建一个新目录。
那是由一个原子系统调用完成的(即不间断的)。
包含dir目录条目的inode以及目录本身的实际内容均不受影响。

如果您将目录从一个文件系统移动到另一个文件系统,则文件将被一个接一个地传输(如Ignacio在他的回答中提到的),即,如果您中断了mv,则已经传输的文件将从源目录中删除。

如何在Bash Shell脚本中捕获ctrl-c

使用trap命令来捕获/捕获ctrl + c并将其禁用:

#!/bin/bash
 
# trap ctrl-c and call ctrl_c()
trap message INT
 
function message() {
        echo "** CTRL-C pressed, cleaning up can be done in message()...."
        # command for clean up e.g. rm and so on goes below
}
 
echo "** Press CTRL-C to capture key."
for i in {1..100}; do
    # TODO: Insert work here #
    sleep 1
    echo -n "."
done