sudo Kill: SSH를 통한 작업은 허용되지 않습니다.

sudo Kill: SSH를 통한 작업은 허용되지 않습니다.

heredoc원격 컴퓨터에서 여러 줄 명령을 실행하는 데 사용됩니다 . 원격 시스템에 있는 서버를 종료하려면 서버의 PID를 가져오십시오.

#!/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

오류: kill: (15015) - 작업이 허용되지 않습니다.

답변1

만약 당신이 가지고 있다면 pgrep당신도 그럴 가능성이 있습니다 pkill.

pgrep그러면 kill이론적 경쟁 조건이 발생합니다 . 이를 사용하면 pkill(스크립트에서) 경쟁 조건이 제거되고 PID를 보유하기 위해 변수를 사용하지 않아도 됩니다.

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

KILL또는 신호를 보내려는 경우 :

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

-f, pgrep및 를 사용하면 pkill프로세스 이름뿐만 아니라 전체 명령줄에 대한 패턴이 일치합니다.

-n및 의 경우 -o(각각) 최신 또는 가장 오래된 일치 프로세스가 영향을 받습니다. 따라서 KILL최신 정보를 원 host_server1하고 다른 정보는 원하지 않는 경우:

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

관련 정보