如何停止/中断cp或mv Linux或Unix命令
如何停止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