kill

Občas sa stáva, že sa programy zbláznia a vy budete potrebovať dostať ich naspäť pod kontrolu. Program pre tento druh administrácie sa nazýva kill(1), a možno ho použiť na manipulovanie s procesmi rôznym spôsobom. Najzrejmešie použitie kill je zabiť proces. Budete to potrebovať ak program ušiel a používa veľa systémových zdrojov, alebo keď ho už jednoducho máte plné zuby.

Aby ste mohli zabiť proces, musíte vedieť jeho PID alebo jeho meno. PID dostanete pomocou programu ps ako to bolo popísané v poslednej sekcii. Napríklad, aby ste zabili proces 4747, spustíte toto:

   $ kill 4747

Všimnite si, že aby ste mohli proces zabiť, musíte byť jeho vlastníkom. To je bezpečnostná črta. Keby ste mohli zabíjať procesy naštartované inými užívateľmi, mohli by ste robiť kadejaké zlomyseľné veci. Prirodzene, root môže zabiť akýkoľvek proces na systéme.

Existuje iná odroda programu kill nazvaná killall(1). Tento program robí presne to čo hovorí: zabíja všetky bežiace procesy, ktoré majú určité meno. Keby ste chceli zabiť všetky bežiace procesy vim naťukali by ste nasledovný príkaz:

   $ killall vim

A všetky procesy vim, ktoré vám bežia, zomrú. Keď to urobíte ako root, zabijete všetky procesy vim všetkým užívateľom. To prináša zaujímavý spôsob ako zo systému vykopnúť každého (vrátane vás samých):

   # killall bash

Niekedy normálny kill neurobí to čo treba. Niektoré procesy nezomrú kvôli kill. Budete musieť použiť silnejšiu formu. Ak ten prefíkaný PID 4747 nereaguje na vašu požiadavku na zabitie, môžete urobiť nasledujúce:

   $ kill -9 4747

To skoro určite spôsobí smrť procesu 4747. Tú istú vec môžete urobiť s killall. To čo sa deje, je že procesu sa posielajú rôzne druhy signálov. Normálny kill posiela procesu signál SIGTERM (terminate - ukonči). kill -9 posiela procesu signál SIGKILL (kill - zabi). Existuje celý zoznam signálov, ktoré môžete použiť. Ich zoznam môžete dostať napísaním:

   $ kill -l
     1) SIGHUP     2) SIGINT    3) SIGQUIT   4) SIGILL
     5) SIGTRAP    6) SIGABRT   7) SIGBUS    8) SIGFPE
     9) SIGKILL   10) SIGUSR1  11) SIGSEGV  12) SIGUSR2
    13) SIGPIPE   14) SIGALRM  15) SIGTERM  17) SIGCHLD
    18) SIGCONT   19) SIGSTOP  20) SIGTSTP  21) SIGTTIN
    22) SIGTTOU   23) SIGURG   24) SIGXCPU  25) SIGXFSZ
    26) SIGVTALRM 27) SIGPROF  28) SIGWINCH 29) SIGIO
    30) SIGPWR

Číslo musíte použiť pri kill, zatiaľ čo meno mínus začiatočné “SIG” môžete použiť pri killall. Tu je ďalší príklad:

   $ killall -KILL vim

Posledný spôsob použitia kill je znova naštartovať proces. Poslanie SIGHUP spôsobí večšina procesov, že si znovu prečítajú svoje konfiguračné súbory. To je zvlášť užitočné aby ste systémovým procesom povedali, že si majú znovu prečítať svoje konfiguračné súbory po tom ako ste ich zmenili.