Em resumo
Com &
e disown
você não altera o PID [ 1 ] do processo
Se você não vê-lo na saída ps -p <YOURPID>
, não está mais em execução.
Você pode checar demais com um adicional echo $?
[ 2 ] após o comando ps
(ou kill
), verificando se o programa sai com um código de saída diferente de 0
(normalmente 1
).
Entendendo seus comandos.
-
Plano de fundo : quando você iniciar o comando com o% final
&
, envie-o em segundo plano.
Isso significa que:- Ele está presente na lista de trabalhos do seu shell (no seu exemplo está o número
[1]
e você pode se referir a ele como%1
; (tente o comandojobs
). - Você pode colocá-lo em primeiro plano e em segundo plano com
fg
ebg
. -
É (ainda) "propriedade" pelo shell (ligado ao pai): se o shell receber um sinal
SIGHUP
, ele enviará um sinalSIGHUP
para o processo também .$ 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
- Ele está presente na lista de trabalhos do seu shell (no seu exemplo está o número
-
Disown : com o comando
disown
, você remove o trabalho da lista de trabalhos do shell, mas não altera seu 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
Observe o mesmo PPID (o shell ainda existe).
Agora nós matamos a casca.$ 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
Há outro
PPID
, o5339
, que com outra invocação deps
,ps -p 5339
, você descobrirá como umainit
instance:$ ps -p 5339 PID TTY TIME CMD 5339 ? 00:02:20 init
pstree
: uma maneira mais rápida.
Você pode ver com pstree
mais rapidamente.
Antes dos comandos disown
e matar o bash :
$ pstree -s -p 10795
init(1)───lightdm(1199)───lightdm(5259)───bash(8380)───sleep(10795)
Após o disown
e matar o bash :
$ pstree -s -p 10795
init(1)───lightdm(1199)───lightdm(5259)───init(5339)───sleep(10795)
Nota: é claro que todos os PIDs no seu caso serão diferentes ...