Töten (Befehl)
Originalautor (en) | AT & T Bell Laboratories |
---|---|
Entwickler (en) | Verschiedene Open Source und kommerziell Entwickler |
Erstveröffentlichung | Februar 1973 |
Betriebssystem | Unix, Unix-artig, Plan 9, Inferno, OS-9, Fenster, Reactos, Singularität, Ibm i |
Plattform | Plattformübergreifend |
Typ | Befehl |
Lizenz | Reactos: LGPL-2.1-oder-Later |
Im Computer, töten
ist ein Befehl das wird in mehreren beliebten verwendet Betriebssysteme senden Signale zu rennen Prozesse.
Implementierungen
Unix und Unix-artig
Im Unix und Unix-artig Betriebssysteme, töten
ist ein Befehl verwendet, um a zu senden Signal zu einem Prozess. Standardmäßig ist die gesendete Nachricht die Terminierungssignal, was den Prozess beantragt Ausfahrt. Aber töten ist so etwas wie eine Fehlbezeichnung; Das gesendete Signal hat möglicherweise nichts mit dem Töten von Prozessen zu tun. Das töten
Befehl ist a Verpackung um die töten()
Systemanruf, was sendet Signale zu Prozessen oder Prozessgruppen auf das System, auf das von ihrem Zahlen verwiesen wird Prozess -IDs (Pids) oder Prozessgruppe IDs (PGIDs). töten
wird immer als eigenständiges Dienstprogramm gemäß den definierten von der vorgesehen Posix Standard. Die meisten Muscheln haben eingebaut töten
Befehle, die sich leicht davon unterscheiden können.[1][2]
Es gibt viele verschiedene Signale, die gesendet werden können (siehe Signal für eine vollständige Liste), obwohl die Signale, in denen Benutzer im Allgemeinen interessiert sind Sigterm ("enden") und Sigkill ("töten"). Das gesendete Standardsignal ist sigterm. Programme, die dieses Signal verarbeiten, können vor dem Beenden nützliche Reinigungsvorgänge (z. B. Speichern von Konfigurationsinformationen in einer Datei) durchführen. Viele Programme implementieren jedoch keinen speziellen Handler für dieses Signal, so dass stattdessen ein Standardsignalhandler aufgerufen wird. In anderen Fällen ist selbst ein Prozess, der einen speziellen Handler hat, auf eine Weise schief geworden, die verhindert, dass er das Signal ordnungsgemäß umgeht.
Alle Signale mit Ausnahme von Sigkill und Sigstop ("Stop") kann durch den Prozess "abgefangen" werden, was bedeutet, dass eine spezielle Funktion aufgerufen werden kann, wenn das Programm diese Signale empfängt. Die beiden Ausnahmen Sigkill und Sigstop werden nur vom Host -System gesehen Kernel, Bereitstellung zuverlässiger Möglichkeiten zur Kontrolle der Ausführung von Prozessen. Sigkill tötet den Prozess und Sigstop macht ihn bis a Sigcont ("Weiter") wird empfangen.[3]
UNIX bietet Sicherheitsmechanismen, um zu verhindern, dass nicht autorisierte Benutzer andere Prozesse abtöten. Damit ein Verfahren ein Signal an einen anderen senden kann, muss der Eigentümer des Signalisierungsprozesses mit dem Eigentümer des Empfangsprozesses übereinstimmen oder die Superuser.
Die verfügbaren Signale haben alle unterschiedliche Namen und sind auf bestimmte Zahlen zugeordnet. Es ist wichtig zu beachten, dass die spezifische Zuordnung zwischen Zahlen und Signalen zwischen UNIX -Implementierungen variieren kann. Sigterm wird oft 15 nummeriert, während Sigkill oft 9 ist.
Beispiele
Ein Prozess kann a gesendet werden Sigterm Signal auf vier Arten (die Prozess -ID ist in diesem Fall '1234'):
töten 1234 töten -s Begriff 1234 töten -BEGRIFF 1234 töten -15 1234
Der Prozess kann a gesendet werden Sigkill Signal auf drei Arten:
töten -Können 1234 töten -TÖTEN 1234 töten -9 1234
Weitere nützliche Signale sind HUP, Trap, int, Segv Und al. Hup sendet die SEUFZEND Signal. Einige Daemons, einschließlich Apache und Sendmail, neu lesen Konfigurationsdateien Nach dem Empfang von Seufzer kann auch der Befehl Kill dafür verwendet werden. EIN SIGINT Signal kann sehr einfach durch Drücken erzeugt werden Strg+C in den meisten Unix -Muscheln. Es ist auch üblich für Strg+Z zugeordnet werden SIGTSTP ("Terminal Stopp") und für Strg+\ (Backslash) zugeordnet werden Sigquit, was ein Programm dazu zwingen kann, a zu machen Core-Dump.
Verwandte Programme
- töte alle - Bei einigen Variationen von UNIX, wie z. SolarisDieses Dienstprogramm wird automatisch aufgerufen, wenn das System eine durchläuft stilllegen. Es verhält sich ähnlich wie der obige Kill -Befehl, aber anstatt ein Signal an einen individuellen Prozess zu senden, wird das Signal an alle Prozesse des Systems gesendet. Jedoch auf anderen wie wie Irrix, Linux, und FreebsdEs wird ein Argument geliefert, in dem der Name des Prozesses (oder Prozesse) zum Töten angegeben wird. Zum Beispiel um einen Prozess wie eine Instanz der zu töten XMMs Musikspieler aufgerufen von
XMMs
Der Benutzer würde den Befehl ausführenKillall XMMS
. Dies würde alle genannten Prozesse tötenXMMs
und ist gleichbedeutend mitTöte `PIDOF XMMS`
auf Systemen wie Solaris. - Pkill - Signale Prozesse basierend auf Namen und anderen Attributen. Es wurde in Solaris 7 eingeführt und wurde seitdem für Linux neu implementiert. Netbsd und OpenBSD. Pkill macht Tötungsprozesse basierend auf ihrem Namen viel bequemer: z. einen genannten Prozess abtöten Feuerfuchs ohne Pkill (und ohne PGREP), man müsste tippen
Töte `ps-no-header -c Firefox -o pid`
Während man mit Pkill einfach tippen kannPkill Firefox
. - Xkill - Wenn der Maus -Cursor ohne Parameter aufgerufen wird, wechselt er von einem Pfeil zu einem "X" -Symbol, und der Benutzer kann auf ein Fenster klicken, um den X -Server zu zwingen, die Verbindung mit dem Client zu schließen, der das Fenster besitzt. Dies führt häufig dazu, dass der Prozess beendet wird, wenn festgestellt wird, dass seine Verbindung zum X -Server geschlossen wurde.
Microware OS-9
Das töten
Befehl ist auch als als erhältlich Muschel gebaut in dem OS-9 Hülse. Es wird verwendet, um einen anderen Prozess durch Prozess -ID zu töten.[4]
Beispiel
Stoppen Sie den Prozess mit der Prozess -ID "7":
$ Kill 7
Microsoft Windows und Reactos
In Microsofts Befehlszeilen-Interpreter Windows PowerShell, töten
ist vordefiniert Kommandoalias für die Stoppprozess
cmdlet.
Microsoft Windows XP, Vista und 7 Fügen Sie den Befehl ein TaskKill
[5] Prozesse beenden. Die übliche Syntax für diesen Befehl ist TaskKill /IM "ImageName"
. Eine "nicht unterstützte" Version von töten
wurde in mehreren Veröffentlichungen der Microsoft Windows Ressourcenkits Verfügbar für Windows 98.[6]
GNU Versionen von töten
wurden durch portiert Cygwin und laufe innerhalb des UNIX -Umgebungssubsystems, das Microsoft Windows Services für UNIX Bietet (Microsoft erworben Windows Services für Unix -Großhandel durch den Kauf von Softway Systems und deren Interix Produkt am 17. September 1999).[7]
Das Reactos Die Implementierung basiert auf der Windows -Variante. Es wurde von Andrew Riedi, Andrew Nguyen und dem Yang entwickelt. Es ist unter dem lizenziert LGPLV2.1 oder später.[8]
Beispiele
Finden Sie alle Prozesse, die mit dem Buchstaben "P" beginnen, der von Microsoft entwickelt wurde, und verwenden Sie mehr als 10 MB Speicher und töten Sie sie:
PS C: \> ps p* | wo { $ _.Gesellschaft -wie "Microsoft*" -und $ _.Workingset -Gt 10 MB } | töten -bestätigen Bestätigen Sind Sie sicher, dass Sie diese Aktion ausführen möchten? Durchführung des Betriebs "Stop-Process" auf Ziel "PowerShell (6832)". [Y] ja [a] ja zu allen [n] nein [l] nein an alle [s] suspend [?] Hilfe (Standard ist "y"): a PS C: \>
Hier ist ein einfacheres Beispiel, das den Prozess fragt Explorer.exe zu beenden:
PS C: \> TaskKill /ich bin Forscher.exe
Dieses Beispiel zwingt den Prozess zum Beenden:
PS C: \> TaskKill /f /ich bin Forscher.exe
Prozesse können auch durch ihre getötet werden PID -Nummer:
PS C: \> TaskKill /PID 3476
Microsoft Singularität
Singularitätsschale, die Standardschale für Microsoft Research's Mikrokernel Betriebssystem Singularität enthält a töten
Befehl zur Beendigung von Hintergrundprozessen.
Beispiele
Stoppen Sie den Prozess mit dem Namen "SampleProcess":
Singularität> töten Sie SampleProzess
Stoppen Sie den Prozess mit der Prozesskennung "42":
Singularität> töten 42
Plan 9 von Bell Labs
Unter Plan 9 von Bell LabsDas Kill -Programm führt diese Kündigung weder durch, noch nimmt es Prozess -IDs. Vielmehr nimmt es die tatsächlichen Namen von Prozessen an und gibt die Befehle für Ausgaben aus rc, das Hülse verwendet nach Plan 9, um den Prozess abzutöten.[9]
Ein ähnlicher angegebener Befehl heißt erschlagen
, was das Gleiche tut, aber für Prozesse, die sich weigern, auf diese Weise getötet zu werden.[9]
Beispiele
Zum Beispiel um alle Fälle von zu töten TROFF, ein Typ:
Töte TROFF | rc
Andere
Das töten Der Befehl wurde auch auf die portiert Ibm i Betriebssystem.[10]
Siehe auch
Verweise
- ^ "Bash Reference Manual: Job Control Building". Das GNU -Projekt. Abgerufen 2015-02-24.
- ^ "ZSH: 17. Shell -gebaute Befehle". Abgerufen 2015-02-24.
- ^ "<signal.h>". Die offenen Gruppenbasisspezifikationen Ausgabe 7. Abgerufen 2015-02-24.
- ^ Paul S. Dayan (1992). Der OS -9 -Guru - 1: Die Fakten. Galaktische Industrial Limited. ISBN 0-9519228-0-7.
- ^ "TaskKill". Microsoft Technet. Abgerufen 2015-02-24.
- ^ "Ressourcen -Kit -Dienstprogramme - Windows '98 Resource Kit". ActiveXperts Software. Abgerufen 2015-02-24.
- ^ "GNU -Dienstprogramme für Win32". Archiviert von das Original Am 2006-02-09. Abgerufen 2015-02-24.
- ^ ReactOS/TaskKill.c bei Master · ReactOS/ReactOS · GitHub
- ^ a b "Unix to Plan 9 Befehlsübersetzung". Plan 9 Wiki. Archiviert von das Original am 2008-09-05. Abgerufen 2015-02-24.
- ^ IBM. "IBM System I Version 7.2 Programmierung Qshell" (PDF). Abgerufen 2020-09-05.
Weitere Lektüre
- McElhearn, Kirk (2006). Die MAC OS X -Befehlszeile: UNIX unter der Motorhaube. John Wiley & Sons. ISBN 978-0470113851.
Externe Links
- Befehl: Die einzelne Unix -Spezifikation, Version 4 von Die offene Gruppe - Shell and Utilities Referenz,
- Systemanruf: Die einzelne Unix -Spezifikation, Version 4 von Die offene Gruppe - Systemoberflächenreferenz,
- Plan 9 Programmierhandbuch, Volume 1 - -
- Inferno Allgemeine Befehle Handbuch - -
- Linux Benutzerbefehle Handbuch - -