Ist der Befehl „kill“ zur Jobsteuerung dasselbe wie der Befehl „kill“, um ein Signal an einen Prozess zu senden?

Ist der Befehl „kill“ zur Jobsteuerung dasselbe wie der Befehl „kill“, um ein Signal an einen Prozess zu senden?

Unter Linux können Sie Folgendes tun:

kill 1(oder kill %1)

Das bedeutet: „Schließen Sie die Prozesse inJob Nummer 1".

Und Sie können Folgendes tun:

kill 1234

Das bedeutet: „Senden Sie das SIGTERMSignal mit PID 1234 an den Prozess.“

Sind diese beiden killBefehle derselbe Befehl oder sind es zwei unterschiedliche Befehle?

Antwort1

Ich bin nicht sicher, ob Sie das können kill 1(oder besser gesagt, Sie können es versuchen, aber es wird Ihnen nicht gestattet sein, es sei denn, Sie sind Root, und dann erleben Sie eine Überraschung). 1bezieht sich hier immer auf den Prozess mit der ID 1, was normalerweise der Fall ist init(oder eine Variante davon).

Um Ihre Frage tatsächlich zu beantworten: Wenn Sie sich in einer Shell befinden, die Jobsteuerung unterstützt, killwird eine Shell integriert sein, die beide Fälle (Verwaltung von Jobs und Prozessen) behandelt. Siehe zum BeispielBashs killBefehl.

Wenn Sie sich in einer Shell befinden, die keine Jobsteuerung unterstützt (gibt es eine solche?), killwird normalerweise eine Binärdatei im System angezeigt /bin/kill; siehe zum Beispielutil-linuxBefehlkill. Auch in einer Shell mit integriertem killKommando kann man beispielsweise auf dieses zugreifen, indem man den vollständigen Pfad angibt. Dieses killKommando ist auch ohne Shell zugänglich (zur Verwendung aus einem anderen Programm).

Siehe auchPOSIX-Definition vonkill, das beide Fälle abdeckt (aber nicht angibt, was wo implementiert wird).

verwandte Informationen