2016-12-27 100 views
0

我需要殺一個shell腳本,遠程過程如下遠程進程:無法殺死使用ssh

#!/bin/bash 

ip="172.24.63.41" 
user="mag" 
timeout 10s ssh -q [email protected]$ip exit 
if [ $? -eq 124 ] 
then 
    echo "can not connect to $ip, timeout out." 
else 
    echo "connected, executing commands" 
    scp a.txt [email protected]$ip://home/mag 
    ssh -o ConnectTimeout=10 [email protected]$ip > /dev/null 2>&1 << remoteCmd 

    touch b.txt 
    jobPid=`jps -l | grep jobserver | awk '{print $1}'` 
    if [ ! $jobPid == "" ]; then 
     kill -9 $jobPid 
    fi 
    exit 

remoteCmd 

echo "commands executed." 
fi 

執行它後,我發現SCP和觸摸的條款已被處決,但殺子句中有沒有執行成功,並且過程仍然存在。如果我在遠程機器上將「jobPid = ...」的子句運行到「fi」,則可以終止進程。如何解決它?

回答

0

您的腳本需要root訪問權限(這從來不是一個好主意)。或者,請確保您的程序,它運行時,你WEBUSER下運行/組

+0

非常感謝,我會嘗試你的建議。 – user1803467

+0

我已將用戶修改爲「root」並運行腳本。它仍然不能殺死這個過程。但是scp和touch子句正在工作。你能否給我任何其他建議?順便說一句,webuser/group是什麼意思?先謝謝你。 – user1803467

0

我把一個腳本,遠程計算機可以找到並殺掉該進程,然後我跑了其執行的腳本本地機器上的腳本遠程機器與SSH。該腳本如下:

本地腳本:

#!/bin/bash 
ip="172.24.63.41" 
user="mag" 

timeout 10s ssh -q [email protected]$ip exit 
if [ $? -eq 124 ] 
then 
    echo "can not connect to $ip, timeout out." 
else 
    echo "connected, executing commands" 
    ssh -q [email protected]$ip "/home/mag/local.sh" 
    echo "commands executed." 
fi 

遠程腳本:

#!/bin/bash 
jobPid=`jps -l | grep jobserver | awk '{print $1}'` 
if [ ! $jobPid == "" ]; then 
    kill -9 $jobPid 
fi