o mesmo pid será usado depois de ser morto?

6

Eu tinha um arquivo aberto usando vim editor. Estava em uma sessão de ssh e desde que eu fiquei ocioso por um longo tempo, a sessão foi encerrada e eu tive que estabelecer a conexão novamente. Eu abri o arquivo novamente usando vim editor e ele me disse dizendo,

E325: ATTENTION
Found a swap file by the name ".latest2.sh.swp"
          owned by: ramesh   dated: Sun May 11 11:54:08 2014
         file name: ~ramesh/latest2.sh
          modified: no
         user name: ramesh   host name: xxx.xxx.edu
        process ID: 1466 (still running)
While opening file "latest2.sh"

Desde que eu não mudei muito no arquivo, eu fiz,

kill -9 1466

Eu verifiquei se o processo desapareceu usando

ps -aef | grep ramesh

e PID 1466 não estava lá. Agora, quando eu abri o arquivo novamente, ele me deu a mesma mensagem,

E325: ATTENTION
Found a swap file by the name ".latest2.sh.swp"
          owned by: ramesh   dated: Sun May 11 11:54:08 2014
         file name: ~ramesh/latest2.sh
          modified: no
         user name: ramesh   host name: xxx.xxx.edu
        process ID: 1466
While opening file "latest2.sh"

No entanto, o processo não estava em execução .

Agora, tenho uma dúvida sobre o uso do PID . De acordo com a entrada wikipedia ,

Under Unix, process IDs are usually allocated on a sequential basis, beginning at 0 and rising to a maximum value which varies from system to system. Once this limit is reached, allocation restarts at zero and again increases. However, for this and subsequent passes any PIDs still assigned to processes are skipped.

Agora, supondo que eu usei todos os PIDs disponíveis, o PID 1466 será usado ou ignorado ?

Desde que eu já matei, eu suponho que deveria ser usado. No entanto, na minha segunda tentativa de abrir o arquivo, ainda vejo o PID 1466 .

O que acontecerá nesse caso?

    
por Ramesh 11.05.2014 / 22:55

1 resposta

10

Sim, os PIDs podem ser reutilizados a qualquer momento.

O que você está vendo nessa saída é que o processo que criou esse arquivo .swp foi 1466 . Isso não significa necessariamente que o processo ainda esteja por aí.
Lembre-se que o arquivo é estático, ele não muda apenas porque o processo que o tinha aberto morreu. Então, se 1466 é morto, o arquivo ainda contém as informações que diziam "Eu estava sendo editado pelo PID 1466". O VIM verifica se esse processo ainda está ativo e o indicará como (still running) .

Como mencionado, é possível que outro processo obtenha exatamente o mesmo PID. Ao relatar como (still running) , o VIM não verifica realmente se esse PID é um processo VIM.

E325: ATTENTION
Found a swap file by the name ".test.swp"
          owned by: root   dated: Sun May 11 17:04:36 2014
         file name: /tmp/test
          modified: no
         user name: root   host name: whistler
        process ID: 21824 (still running)
While opening file "test"
             dated: Sun May 11 17:04:36 2014

Neste caso, o PID 21824 é um shell que eu iniciei.

phemmer  21824  19   0  0.0  0.0 S+         00:53 bash -c [[ "$$" == 21824 ]] && echo MATCH && sleep 999999
    
por 11.05.2014 / 23:11

Tags