
Ich verwende ein Bash-Skript, mit dem ich XCode unter OS X ausführe. Das dauert mehrere Minuten. Ich kann den Tastenbefehl nicht finden, um es zu stoppen, wenn ich einen Fehler feststelle. Unter DOS bin ich an Ctrl+C/ gewöhnt Ctrl+Z, aber beides scheint nicht zu funktionieren. Wonach suche ich (auf dem Standardterminal von OS X)?
Antwort1
Es gibt einige Tastendrücke, die Ihnen hierbei helfen sollten.
Ctrl+ Csollte dem Vordergrundprozess SIGINT senden, und das sollte den Prozess beenden, sofern Sie das Signal nicht mit etwas wie trap INT ...
in Ihrem Shell-Code abfangen.
Ctrl+ Zsollte SIGSTOP senden, was Ihren Prozess erneut anhalten würde, sofern Sie Ihre Signale nicht abfangen.
Die Zuordnung von Tastenfolgen erfordert einige Hürden, einschließlich der Terminaleinstellungen. Was sagt stty -a
Ihr Computer? Suchen Sie in der Ausgabe nach intr
, das ist der Tastendruck, der SIGINT auslösen soll. Wenn nichts festgelegt ist, müssen Sie es festlegen, etwa so:stty intr ^C
Wie andere bereits gesagt haben, können Sie den Vorgang auch von einem anderen Fenster aus beenden.
Antwort2
Wenn Ctrl+ Cbei Ihnen nicht funktioniert, können Sie eine neue Registerkarte Terminal öffnen und Folgendes eingeben:
killall [process name]
wobei [process name]
der Name Ihres Bash-Skripts ist (Sie finden es im Aktivitätsmonitor von OS X).
Antwort3
Sie können diese Lösungen ausprobieren:
- Versuchen Sie diese Tastenkombination: Ctrl+ AltGr+8
- Öffnen Sie ein neues Terminal und führen Sie aus
pkill -f script_name
Antwort4
Um das zu ergänzen, was andere Benutzer gesagt haben: Sie können auch Ctrl+ verwenden \, was sendet SIGQUIT
und dasselbe ist wie, SIGINT
außer dass es auch einen Core Dump erzeugt. Ich habe festgestellt, dass Programme, die ignorieren, dies SIGINT
häufig nicht tun SIGQUIT
.
Basierend aufManpage für KillSIGTERM
können Sie auch ein oder an jeden Prozess senden SIGKILL
. Sie können dies erreichen, indem Sie Ihren Prozess in der Prozesstabelle suchen (Typ ps
) und dann „ kill -15 [pid]
to send a“ SIGTERM
oder kill -9 [pid]
„to send a“ eingeben SIGKILL
(SIGKILL kann nicht ignoriert werden und beendet den Prozess auf jeden Fall).