döda (kommandera)
Originalförfattare | AT&T Bell Laboratories |
---|---|
Utvecklare | Olika öppen källkod och kommersiella utvecklare |
Initial release | februari 1973 |
Operativ system | Unix , Unix-like , Plan 9 , Inferno , OS-9 , Windows , ReactOS , Singularity , IBM i |
Plattform | Cross-plattform |
Typ | Kommando |
Licens | ReactOS: LGPL-2.1 eller senare |
Inom datorer är kill
ett kommando som används i flera populära operativsystem för att skicka signaler till pågående processer .
Genomföranden
Unix och Unix-liknande
I Unix och Unix-liknande operativsystem är kill
ett kommando som används för att skicka en signal till en process. Som standard är meddelandet som skickas avslutningssignalen , som begär att processen avslutas . Men döda är något av en felaktig benämning; signalen som skickas kanske inte har något med processdöd att göra. Kill -
kommandot är ett omslag runt kill()
-systemanropet , som skickar signaler till processer eller processgrupper på systemet, refererade till deras numeriska process-ID (PID) eller processgrupp- ID (PGID). kill
tillhandahålls alltid som ett fristående verktyg enligt definitionen av POSIX -standarden. De flesta skal har dock inbyggda kill -
kommandon som kan skilja sig något från det.
Det finns många olika signaler som kan skickas (se signal för en fullständig lista), även om de signaler som användare generellt är mest intresserade av är SIGTERM ("terminate") och SIGKILL ("kill"). Standardsignalen som skickas är SIGTERM. Program som hanterar denna signal kan göra användbara rensningsoperationer (som att spara konfigurationsinformation till en fil) innan de avslutar. Men många program implementerar inte en speciell hanterare för denna signal, och därför anropas istället en standardsignalhanterare. Andra gånger har även en process som har en speciell hanterare gått snett på ett sätt som hindrar den från att korrekt hantera signalen.
Alla signaler förutom SIGKILL och SIGSTOP ("stopp") kan "avlyssnas" av processen, vilket innebär att en speciell funktion kan anropas när programmet tar emot dessa signaler. De två undantagen SIGKILL och SIGSTOP ses endast av värdsystemets kärna , vilket ger tillförlitliga sätt att kontrollera exekveringen av processer. SIGKILL dödar processen och SIGSTOP pausar den tills en SIGCONT ("fortsätt") tas emot.
Unix tillhandahåller säkerhetsmekanismer för att förhindra obehöriga användare från att döda andra processer. För att en process ska kunna skicka en signal till en annan måste ägaren av signaleringsprocessen vara densamma som ägaren till den mottagande processen eller vara superanvändare .
De tillgängliga signalerna har alla olika namn och är mappade till vissa nummer. Det är viktigt att notera att den specifika mappningen mellan siffror och signaler kan variera mellan Unix-implementeringar. SIGTERM numreras ofta 15 medan SIGKILL ofta numreras 9.
Exempel
En process kan skickas en SIGTERM- signal på fyra sätt (process-ID är '1234' i detta fall):
döda 1234 döda -s TERM 1234 döda -TERM 1234 döda -15 1234
Processen kan skickas en SIGKILL- signal på tre sätt:
döda -s DÖDA 1234 döda -KILLA 1234 döda -9 1234
Andra användbara signaler inkluderar HUP, TRAP, INT, SEGV och ALRM. HUP skickar SIGHUP- signalen. Vissa demoner, inklusive Apache och Sendmail , läser om konfigurationsfilerna när de tar emot SIGHUP, så kommandot kill kan användas för detta också. En SIGINT- signal kan genereras mycket enkelt genom att trycka på CTRL + C i de flesta Unix-skal . Det är också vanligt att CTRL + Z mappas till SIGTSTP ("terminal stop") och att CTRL + \ (omvänt snedstreck) mappas till SIGQUIT , vilket kan tvinga ett program att göra en kärndumpning .
Relaterade program
-
killall - på vissa varianter av Unix, som Solaris , anropas detta verktyg automatiskt när systemet går igenom en avstängning . Det beter sig ungefär som kill-kommandot ovan, men istället för att skicka en signal till en enskild process skickas signalen till alla processer i systemet. Men på andra som IRIX , Linux och FreeBSD , tillhandahålls ett argument som anger namnet på processen (eller processerna) som ska dödas. För att till exempel döda en process som en instans av XMMS- musikspelaren som anropas av
xmms
, skulle användaren köra kommandotkillall xmms
. Detta skulle döda alla processer som heterxmms
, och motsvarar attdöda `pidof xmms`
på system som Solaris. -
pkill - signalerar processer baserade på namn och andra attribut. Det introducerades i Solaris 7 och har sedan dess återimplementerats för Linux, NetBSD och OpenBSD . pkill gör avlivningsprocesser baserade på deras namn mycket bekvämare: t.ex. för att döda en process som heter firefox utan pkill (och utan pgrep ), skulle man behöva skriva
kill `ps --no-headers -C firefox -o pid`
medan med pkill , man kan helt enkelt skrivapkill firefox
. - xkill - om den anropas utan några parametrar ändras muspekaren från en pil till en "x"-ikon, och användaren kan klicka på ett fönster för att tvinga X-servern att stänga anslutningen med klienten som äger fönstret. Detta gör ofta att processen avslutas när den upptäcker att dess anslutning till X-servern har stängts.
Microware OS-9
Kill -
kommandot är också tillgängligt som ett skal inbyggt i OS-9- skalet. Den används för att döda en annan process med process-ID.
Exempel
Stoppa processen med process-ID "7":
$ döda 7
Microsoft Windows och ReactOS
I Microsofts kommandoradstolk Windows PowerShell är kill
ett fördefinierat kommandoalias för Stop-Process
cmdlet .
Microsoft Windows XP , Vista och 7 inkluderar kommandot taskkill
för att avsluta processer. Den vanliga syntaxen för detta kommando är taskkill /im "IMAGENAME"
. En "ej stödd" version av kill
inkluderades i flera versioner av Microsoft Windows Resource Kits tillgängliga för Windows 98.
GNU- versioner av kill
har porterats via Cygwin och körts inuti Unix-miljöundersystemet som Microsoft Windows Services för UNIX tillhandahåller (Microsoft köpte Windows Services för Unix i grossistförsäljning genom deras köp av Softway Systems och deras Interix -produkt den 17 september 1999).
ReactOS - implementeringen är baserad på Windows-varianten. Det utvecklades av Andrew Riedi, Andrew Nguyen och He Yang. Den är licensierad under LGPLv2.1 eller senare.
Exempel
Hitta alla processer som börjar med bokstaven "p" som utvecklades av Microsoft och använder mer än 10 MB minne och döda dem:
PS C:\> ps p * | där { $_ . Företagsliknande " Microsoft*" -och $_ . WorkingSet -gt 10MB } | kill -confirm Bekräfta Är du säker på att du vill utföra den här åtgärden? Utför operation "Stop-Process" på Target "powershell (6832)". [Y] Ja [A] Ja till alla [N] Nej [L] Nej till alla [S] Suspend [?] Hjälp (standard är "Y"): A PS C:\ >
Här är ett enklare exempel, som ber processen Explorer.exe att avslutas:
PS C:\> taskkill / im explorer . ex
Detta exempel tvingar processen att avslutas:
PS C:\> taskkill / f / im explorer . ex
Processer kan också dödas av deras PID-nummer :
PS C:\> taskkill / pid 3476
Microsoft Singularity
Singularity shell , standardskalet för Microsoft Researchs mikrokärnoperativsystem Singularity inkluderar ett kill-
kommando för att avsluta bakgrundsprocesser.
Exempel
Stoppa processen med namnet "SampleProcess":
Singularity>kill SampleProcess
Stoppa processen med processidentifieraren "42":
Singularitet>döda 42
Plan 9 från Bell Labs
Enligt plan 9 från Bell Labs utför inte dödningsprogrammet denna avslutning, och det tar inte heller process-ID:n. Snarare tar det de faktiska namnen på processer och matar ut kommandona för rc , skalet som används av Plan 9 , för att döda processen.
Ett liknande kommando som tillhandahålls kallas slay
, som gör samma sak men för processer som vägrar att dödas på detta sätt.
Exempel
Till exempel, för att döda alla instanser av troff , skriver man:
döda troff | rc
Andra
Kill - kommandot har också porterats till operativsystemet IBM i .
Se även
Vidare läsning
- McElhearn, Kirk (2006). Kommandoraden i Mac OS X: Unix Under the Hood . John Wiley & Sons . ISBN 978-0470113851 .
externa länkar
- Kommando: The Single UNIX Specification , Version 4 från The Open Group – Shell and Utilities Reference,
- Systemanrop: The Single UNIX Specification , Version 4 från The Open Group – System Interfaces Reference,
- Plan 9 Programmer's Manual, Volym 1 –
- Inferno General Commands Manual –
- Linux User Commands Manual –