GNU/Linux >> Znalost Linux >  >> Linux

Linux:Zobrazení a ukončení odmítnutého procesu

Ve zkratce

S & a disown nezměníte PID procesu.
Pokud jej nevidíte v ps -p <YOURPID> výstup, již neběží.
Můžete překontrolovat to s dalším echo $? za ps (nebo kill ), kontroluje, zda se program ukončí s kódem ukončení odlišným od 0 (obvykle 1 ).

Porozumění vašim příkazům.

  • Pozadí :když spustíte příkaz s koncovým & pošlete to na pozadí.
    To znamená, že:

    • Je přítomen v seznamu úloh vašeho shellu (ve vašem příkladu je číslo [1] a můžete jej označit jako %1; (zkuste příkaz jobs ).
    • Můžete to přenést na popředí a na pozadí pomocí fg a bg .
    • Je (stále) „vlastněn“ pomocí (spojeného s nadřazeným) shellem:pokud shell obdrží SIGHUP signál, odešle SIGHUP signál do procesu.

      $ sleep 1h &
      [1] 10795
      $ jobs
      [1]+  running           sleep 1h & 
      $ ps -l -p 10795       
      F S   UID   PID  PPID  C PRI  NI ADDR SZ WCHAN  TTY          TIME CMD
      0 S  1000 10795  8380  0  80   0 -  3107 hrtime pts/57   00:00:00 sleep
      
  • Odmítnout :pomocí příkazu disown odstraníte úlohu ze seznamu úloh shellu, ale nezměníte její PID.

    $ disown
    $ jobs
          # <---- No jobs
    $ ps -l -p 10795
    F S   UID   PID  PPID  C PRI  NI ADDR SZ WCHAN  TTY          TIME CMD
    0 S  1000 10795  8380  0  80   0 -  3107 hrtime pts/57   00:00:00 
    

    Všimněte si stejného PPID (prostředí stále existuje).
    Teď zabijeme skořápku.

    $ kill 8380   # Here we kill the shell 
    $ ps -l -p 10795
    F S   UID   PID  PPID  C PRI  NI ADDR SZ WCHAN  TTY          TIME CMD
    0 S  1000 10795  5339  0  80   0 -  3107 hrtime pts/57   00:00:00 sleep
    

    Existuje další PPID , 5339 , to s dalším vyvoláním ps , ps -p 5339 , zjistíte, že jste init instance:

    $ ps -p 5339
    PID TTY          TIME CMD
    5339 ?        00:02:20 init
    

pstree :rychlejší způsob.

Můžete vidět pomocí pstree rychleji.

Před disown a zabijte bash příkazy:

$ pstree -s -p 10795 
init(1)───lightdm(1199)───lightdm(5259)───bash(8380)───sleep(10795)

Za disown a zabijte bash :

$ pstree -s -p 10795 
init(1)───lightdm(1199)───lightdm(5259)───init(5339)───sleep(10795)

Poznámka: samozřejmě všechny PID ve vašem případě se budou lišit...


Pokud není v ps auxf , pak to neběží. Pokud spustíte kill 29144 a dostanete "Žádný takový proces", což také znamená, že proces neběží.


Každý proces má složku v /proc souborový systém s pid . Pokud složka neexistuje, proces neběží.

Například

/proc/29144/

můžete si prohlédnout proces commandline

cat /proc/29144/cmdline

příklad výstupu:

/usr/sbin/smbd

nebo zkontrolujte stav souboru procesu

stat /proc/29144/exe

příklad výstupu:

File: /proc/29144/exe -> /usr/sbin/smbd
  Size: 0               Blocks: 0          IO Block: 1024   symbolic link
Device: 3h/3d   Inode: 78497       Links: 1
Access: (0777/lrwxrwxrwx)  Uid: (    0/    root)   Gid: (    0/    root)
Access: 2017-04-07 12:18:01.719011505 +0200
Modify: 2017-04-07 12:18:01.369010535 +0200
Change: 2017-04-07 12:18:01.369010535 +0200
 Birth: -

Linux
  1. Jak zabít proces zombie na Linuxu

  2. linuxový skript pro zabití procesu Java

  3. Jak pozastavit/obnovit proces v Linuxu

  1. Jak najít a zabít zombie proces v Linuxu

  2. Linux – Kdy nemám zabít -9 A proces?

  3. Jak zabít proces v Linuxu pomocí příkazu?

  1. Správa procesů na Linuxu pomocí kill and killall

  2. Příklady příkazů kill v Linuxu

  3. Linux:Najděte a zabijte zombie procesy