有没有可能手动中止当前正在运行的bash命令?例如,我正在使用“find”命令,但它正在耗费很长时间...我该如何手动停止它?
有些东西不会对Ctrl+C做出反应;在这种情况下,您还可以使用Ctrl+Z来停止该进程,然后使用kill %1
- 或者甚至是fg
来返回到该进程。阅读man bash
中的“JOB CONTROL”部分以获取更多信息,非常有用。(如果您不熟悉man
或manpager
,您可以使用/
进行搜索。man bash
然后在其中使用/JOB CONTROL
Enter开始搜索,n将找到下一个匹配项,即正确的部分。)
好的,这就是顺序:
第一步尝试:Ctrl+c
第二步尝试:Ctrl+z
第三步:登录到另一个控制台,在您的第一个控制台中找到不响应前面提到的终止/睡眠按键的命令进程,使用命令:ps aux
然后用命令杀死进程:kill -9 <PROCESSID>
当然,可能有更智能的ps命令参数或grep的可能性,但这会使解释更加复杂。
按下 CtrlC 键发送 SIGINT
信号给命令,尝试中断它。
Ctrl+Z
是非常强大的。使用它将任务置于“挂起”模式。然后可以使用fg
将任务再次带到前台(就像之前运行一样),或者可以使用bg
将任务放入后台(就像在命令末尾使用&
启动一样)。请参阅 http://linuxreviews.org/beginner/jobs/。 - Lee Netherton/
的find
命令。假设它花费的时间比预期的长,是否应该停止它?它会以任何方式导致文件系统损坏吗? - Motivatedkill
的默认设置。 SIGKILL(强制终止程序)则不太安全,尽管在几乎所有软件的几乎任何时候都应该没问题(行为良好的软件将以原子方式执行变异)。像find
这样的东西除非您告诉它(例如-delete
),否则不会修改任何内容,因此强制终止它是可以的。 - Chris MorganCTRL+C
是SIGTERM
吗?您所说的“表现良好的软件将原子地执行变异”是什么意思? - Motivated