Um processo não tem nome. Tem um número único (positivo), chamado seu pid (id do processo).
Quase todos os processos são iniciados - a partir de seu processo pai - pela chamada de sistema fork documentada no Página de manual fork (2) (às vezes, vfork (2) pode ser usado). Um processo bifurcado é quase idêntico ao seu pai (ele executa o mesmo binário). Para executar um novo programa, o execve (2) syscall é usado dentro de algum processo.
No entanto, um processo executa algum programa, que possui um nome (já que existe no sistema de arquivos). Você pode encontrar muito mais sobre processos através do proc (5) pseudo-sistema de arquivos. Naturalmente, vários processos podem executar o mesmo programa. Você pode tentar ls -l /proc/self/
para listar os pseudofiles relacionados ao seu processo (aquele que executa o comando ls
). Você pode se divertir tentando cat /proc/self/maps
. E /proc/1234/
informa sobre o processo de pid 1234.
Os utilitários pkill
, pgrep
, pidof
estão usando /proc
.
Seu script não está certo ao usar diretamente kill -9
. Ele deve tentar primeiro kill -TERM
then kill -QUIT
(para permitir que o programa termine bem, por exemplo, limpeza de arquivos temporários, etc ...) e somente finalmente kill -KILL
(ou seja, kill -9
). Você pode ler a página do manual kill (2) (e também página do manual signal (7) ).
adendos
(adicionado em julho de 2014)
No Linux, você pode usar a função pthread_setname_np (3) específica do Linux para definir um nome abreviado de um encadeamento (não um processo)