如何从命令行停止 bash 脚本?

如何从命令行停止 bash 脚本?

我有一个用于在 OS X 上运行 XCode 的 bash 脚本,这需要几分钟时间。如果我发现错误,我找不到停止它的按键命令……在 DOS 上我习惯使用Ctrl+C/Ctrl+Z但似乎都不起作用。我在寻找什么(在标准 OS X 终端上)?

答案1

这里有几个按键应该可以帮助您。

Ctrl+应该向前台进程发送 SIGINT,这样应该会终止该进程,除非你使用类似 shell 代码中的C某些内容捕获信号。trap INT ...

Ctrl+Z应该发送 SIGSTOP,这将再次暂停您的进程,除非您捕获您的信号。

按键序列的映射需要经过一些步骤,包括终端设置。stty -a您的计算机上显示的是什么?在输出中查找intr,这是应该触发 SIGINT 的按键。如果未设置任何内容,则需要进行设置,例如stty intr ^C

正如其他人所说,您也可以从另一个窗口终止该进程。

答案2

如果Ctrl+C不起作用,你可以打开一个新的终端选项卡并输入

killall [process name]

[process name]您的 bash 脚本的名称是哪里(您可以在 OS X 的活动监视器中找到它)。

答案3

您可以尝试以下解决方案:

  • 尝试这个键盘组合:Ctrl++AltGr8
  • 打开一个新终端并运行pkill -f script_name

答案4

除了其他用户所说的内容外,您还可以使用Ctrl+ \,它发送SIGQUIT和,与 相同,SIGINT只是它还会生成核心转储。我发现忽略的程序SIGINT通常不会忽略SIGQUIT

根据kill 的手册页,您还可以向任何进程发送SIGTERMSIGKILL。 您可以通过在进程表中找到您的进程(键入ps)然后键入kill -15 [pid]来发送SIGTERMkill -9 [pid]来发送SIGKILL(SIGKILL 无法被忽略,无论如何都会终止进程)来实现此目的。

来源1来源2

相关内容