Como matar um processo que não está ligado a nenhum terminal

2

Estou em um VPS do OpenVZ e criei um processo em segundo plano como um usuário não raiz e, em seguida, deserdociei, por exemplo

user@server:~$node server.js &
user@server:~$disown
Eu saí do VPS e agora estou de volta, mas não consigo matar o processo usando seu PID. %código%. Ele ainda falha como root. Eu sei que não está morto porque quando eu corro Pkill 1292 até a execução. Além disso, quando executo o top , vejo que o processo é até a execução.

Posso dizer que o processo não está anexado a nenhuma sessão de terminal porque o comando ps exibe um ponto de interrogação em TTY, por exemplo

Como eu mato este processo?

    
por Karanja Mutahi 20.03.2018 / 16:43

1 resposta

6

pkill (como pgrep que usa a mesma interface, inicialmente um comando do Solaris, agora encontrado em muitos outros tipos de unix incluindo Linux ( procps package)) é para matar processos baseados em seu nome.

pkill regexp

mata (envia o sinal SIGTERM ) para todos os processos cujo nome ¹ corresponde à expressão regular dada.

Então, aqui pkill node mataria todos os processos cujo nome contém node . Use pkill -x node ( -x como em grep / pgrep para correspondência exata) para matar processos cujo nome é exatamente node .

Para matar com base no pid², é apenas kill (um comando construído na maioria dos shells, para que também possa ser usado em tarefas do shell, mas também como um utilitário autônomo).

Se kill 6806 (abreviação de kill -s TERM 6806 ) falhar, você pode como uma tentativa de último recurso kill -s KILL 6806 , que terminaria sem graça .

¹ nome do processo é uma noção que varia um pouco dependendo do sistema operacional. No Linux, geralmente são os primeiros 15 bytes do nome base do arquivo que o processo (ou seu antecessor mais próximo) executou, embora um processo possa alterá-lo para qualquer valor arbitrário (mas não maior que 15 bytes). Veja também pkill -f para combinar na lista de argumentos.

² kill também pode matar com base no ID grupo do processo. kill -- -123 envia o sinal SIGTERM para todos os processos cujo ID do grupo de processos é 123. Ao usar a especificação de trabalho para o kill embutido de shells POSIX (como em kill %spec ), kill geralmente também envia sinais para um processo grupo .

    
por 20.03.2018 / 16:58