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říkazjobs
). - Můžete to přenést na popředí a na pozadí pomocí
fg
abg
. -
Je (stále) „vlastněn“ pomocí (spojeného s nadřazeným) shellem:pokud shell obdrží
SIGHUP
signál, odešleSIGHUP
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
- Je přítomen v seznamu úloh vašeho shellu (ve vašem příkladu je číslo
-
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ímps
,ps -p 5339
, zjistíte, že jsteinit
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: -