sudo kill: Operação não permitida sobre SSH

2

Usando heredoc para executar comandos de várias linhas em uma máquina remota. Tentando obter pid de um servidor para matar esse servidor localizado na máquina remota

#!/bin/bash

HOST_IP="10.180.5.23"
read -p "For HOST RESTART press 1" num
if [ "$num" == "1" ]
then
    ssh -t -t $HOST_IP << 'EOSSH'
    line=$(pgrep -f host_server1)
    echo $line
    arr=($line)
    sudo kill -9 "${arr[1]}"
EOSSH 
fi

Erro: kill: (15015) - Operação não permitida

    
por Rohan Gala 26.07.2016 / 07:24

1 resposta

3

Como você tem pgrep , é muito provável que você também tenha pkill .

Usando pgrep e, em seguida, kill introduz uma condição de corrida teórica. Usar pkill remove a condição de corrida (do script) e também evita usar uma variável para manter os PIDs:

ssh -t -t "$HOST_IP" pkill -f host_server1

ou, se você quiser enviar o sinal KILL :

ssh -t -t "$HOST_IP" pkill -KILL -f host_server1

Observe que, com -f , pgrep e pkill corresponderão ao padrão em relação à linha de comando inteira, não apenas ao nome do processo.

Com -n e -o , o mais novo ou o mais antigo (respectivamente) dos processos correspondentes será afetado. Assim, se você quiser KILL o mais novo host_server1 e nada mais:

ssh -t -t "$HOST_IP" pkill -KILL -n -f host_server1
    
por 30.07.2016 / 12:49