Was bedeutet kill% 1?

13

Ich habe den folgenden Befehl gesehen:

$ kill %1

Was ist die Verwendung dieser Aussage?

q0987
quelle
Beachten Sie auch, dass zshder Job abgeschlossen ist, sodass er ausgeführt wird htop &und dann disown %[TAB]automatisch vervollständigt wird disown %htop. Ich liebe zsh:)
new123456

Antworten:

18

Kurz,

Es bedeutet , zu töten Job Nummer 1, nicht Prozess Nummer eins.

Jobs können mit dem jobsBefehl aufgelistet werden .

Im weiteren Sinne bezieht es sich auf die von Ihnen verwendete Shell, und die Syntax kann von Shell zu Shell unterschiedlich sein.

Mit der Bash-Shell kann ein Benutzer mehrere Prozesse (Jobs) gleichzeitig ausführen lassen, deren übergeordneter Prozess die von Ihnen verwendete Shell ist. Grundlagen der Google Bash-Jobsteuerung

Der eingebaute Befehl kill wird verwendet, um ein Signal an eine dieser Job-Pipelines zu senden. Wenn das spezifische Signal nicht angegeben wird, wird SIGTERM verwendet, wodurch der Job normalerweise beendet (beendet) wird, daher der Name kill. Es kann jedoch jedes Signal angegeben werden, von dem einige den Prozess zurücksetzen oder ein nicht tötendes Verhalten verursachen können.

Schließlich ist% 1 eine Möglichkeit (von vielen!), Anzugeben, an welchen Job Sie das Signal senden möchten. % 1 bezieht sich auf den Job über dem Stapel von Hintergrundjobs.

Anders Abel
quelle
Klein ... aber es ist kein Stapel, es ist wie eine Warteschlange.
endlos
6

Wenn Sie einen Prozess im Hintergrund ausführen, zum Beispiel:

# find / &
[1] ....

# ls -lr /usr &
[2] ....

Hier laufen zwei Prozesse im Hintergrund und sind mit dem aktuellen Terminal verbunden. Wenn Sie dies tun: Töten Sie% 1

Der erste Befehl 'find' oben wird beendet. Wie von Anders gesagt, können Sie die aktuell ausgeführten Hintergrundprozesse auf dem Terminal auflisten und beenden:

# jobs
[1] find / ...
[2] ls -lr ...

# kill %1
Albert
quelle