Shell-Script
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
錯誤:殺死:(15015)-不允許操作
既然你有
pgrep
它很可能你也有pkill
。使用
pgrep
然後kill
引入一個理論上的競爭條件。Usingpkill
刪除了競爭條件(從腳本中),並且還避免了必須使用變數來保存 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