【发布时间】:2016-12-27 08:39:15
【问题描述】:
我需要使用 shell 脚本杀死远程进程,如下所示:
#!/bin/bash
ip="172.24.63.41"
user="mag"
timeout 10s ssh -q $user@$ip exit
if [ $? -eq 124 ]
then
echo "can not connect to $ip, timeout out."
else
echo "connected, executing commands"
scp a.txt $user@$ip://home/mag
ssh -o ConnectTimeout=10 $user@$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和touch子句都执行了,但是kill子句没有执行成功,进程还在。如果我在远程机器上运行从“jobPid = ...”到“fi”的子句,则可以终止该进程。如何解决?
【问题讨论】: