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