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,pgreppkill会将模式与整个命令行匹配,而不仅仅是进程名称。

对于-n-o,最新或最旧的(分别)匹配进程将受到影响。因此,如果您想要KILL最新的host_server1而不是其他的:

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

相关内容