如何停止/中断 cp 或 mv Linux 或 Unix 命令
如何停止cp 命令或mv 命令Linux 或 Unix 命令?如果 mv 或 cp 命令在实时系统上被中断会发生什么?
用户可以在执行命令或 bash/perl/python 脚本期间按CTRL - c(按住 ctrl 键,然后按 c)来停止或中断任何命令,例如 cp、mv 等。另一个选项是使用kill 命令通过 PID 终止进程:
通过运行以下命令获取 Firefox 的进程 ID(打开另一个终端并输入命令):
用户可以在执行命令或 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(从第二列),请运行:
如果一切都失败,请尝试传递终止信号:
验证 Firefox 是否已使用 ps 命令和grep 命令:
您可以用 cp 命令或您选择的任何其他命令替换 Firefox 命令。
$ kill -15 pid
$ kill -TERM 31241
$ kill -15 31241
$ kill -9 31241
$ ps aux | grep -i firefox
有关 CTRL-C 的更多信息
当您按下 CTRL-C 时,当前正在运行的命令或进程将获得中断/终止 (SIGINT) 信号。此信号意味着终止进程。大多数命令/进程都会接受 SIGINT 信号,但有些可能会忽略它。您可以在使用cat 命令时按 Ctrl-D 关闭 bash shell 或打开文件。您可以按 Ctrl-Z 暂停当前在 bash shell 中运行的前台进程。
如果 cp 命令被中断会发生什么?
如果中断 cp,已传输的文件将从源目录复制到目标目录,其余操作将中止。
如果 mv 命令被中断会发生什么?
来自主题:
如果您在同一文件系统上移动目录,则只会将目录条目从文件系统中的一个位置移动到另一个位置。例如,mv /source/dir /target/dir 将从 /source 中删除 dir 的目录条目并在 /target 中创建一个新的目录条目。这是通过一个原子系统调用(即不可中断)完成的。包含 dir 的目录条目的 inode 以及目录本身的实际内容不受影响。
如果将目录从一个文件系统移动到另一个文件系统,则文件会被逐个传输(正如 Ignacio 在他的回答中提到的),即如果您中断 mv,则已经传输的文件将从源目录中删除。
如何在 Bash shell 脚本中捕获 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