Se for uma coisa única, aqui está uma técnica que usa gdb
para anexar a um processo em execução:
Inicie um programa de amostra. Nós estaremos mudando o sid de sleep
.
spectras@etherbee:~$ (echo;sleep 86400)&
[1] 23340
Este é o nosso processo sleep
:
spectras@etherbee:~$ ps -efj -q 23342
UID PID PPID PGID SID C STIME TTY TIME CMD
spectras 23342 23340 23340 22112 0 14:50 pts/5 00:00:00 sleep 86400
Vamos anexar a ele usando gdb
. Observe que isso interromperá o processo.
spectras@etherbee:~$ gdb -p 23342
[lots of irrelevant text]
Attaching to process 23342
[more irrelevant text]
(gdb) p setsid()
$1 = 23342
(gdb) q
A debugging session is active.
Inferior 1 [process 23342] will be detached.
Quit anyway? (y or n) y
Detaching from program: /bin/sleep, process 23342
Vamos ver o resultado:
spectras@etherbee:~$ ps -efj -q 23342
UID PID PPID PGID SID C STIME TTY TIME CMD
spectras 23342 23340 23342 23342 0 14:50 ? 00:00:00 sleep 86400
Nosso sleep
agora é o líder do grupo de processos de sua própria sessão.