CTRL-C sendet im Allgemeinen ein SIGINT-Signal an den Prozess, sodass Sie einfach Folgendes tun können:
kill -INT <processID>
über die Befehlszeile (oder ein Skript), um die spezifischen zu beeinflussen processID
.
Ich sage "allgemein", weil dies, wie bei den meisten UNIX-Programmen, nahezu unendlich konfigurierbar ist. Wenn Sie ausführen stty -a
, können Sie sehen, welche Tastenfolge mit dem intr
Signal verbunden ist. Dies wird wahrscheinlich sein, CTRL-Caber diese Tastenfolge kann vollständig auf etwas anderes abgebildet werden.
Die folgende Skript zeigt diese in Aktion (wenn auch mit TERM
nicht INT
da sleep
reagiert nicht auf INT
in meiner Umgebung):
#!/usr/bin/env bash
sleep 3600 &
pid=$!
sleep 5
echo ===
echo PID is $pid, before kill:
ps -ef | grep -E "PPID|$pid" | sed 's/^/ /'
echo ===
( kill -TERM $pid ) 2>&1
sleep 5
echo ===
echo PID is $pid, after kill:
ps -ef | grep -E "PPID|$pid" | sed 's/^/ /'
echo ===
Grundsätzlich wird ein Stundenprotokollprozess gestartet sleep
und die Prozess-ID abgerufen. Anschließend werden die relevanten Prozessdetails ausgegeben, bevor der Prozess abgebrochen wird.
Nach einer kurzen Wartezeit wird die Prozesstabelle überprüft, um festzustellen, ob der Prozess abgeschlossen ist. Wie Sie der Ausgabe des Skripts entnehmen können, ist es tatsächlich weg:
===
PID is 28380, before kill:
UID PID PPID TTY STIME COMMAND
pax 28380 24652 tty42 09:26:49 /bin/sleep
===
./qq.sh: line 12: 28380 Terminated sleep 3600
===
PID is 28380, after kill:
UID PID PPID TTY STIME COMMAND
===