当前位置: 技术问答>linux和unix
求:嵌入式环境下远程杀死一个进程方法
来源: 互联网 发布时间:2017-05-21
本文导语: 首先得申明下限制条件与环境: 嵌入式系统,无 pkill、xkill 无 awk,cut,xarg等命令 要求: 自动telnet到远端的嵌入式终端kill掉指定名称进程 经测试能用的命令有 grep,kill,sed,echo 现在有办法拿到 pid 但如何通过...
首先得申明下限制条件与环境:
嵌入式系统,无 pkill、xkill
无 awk,cut,xarg等命令
要求:
自动telnet到远端的嵌入式终端kill掉指定名称进程
经测试能用的命令有 grep,kill,sed,echo
现在有办法拿到 pid 但如何通过 kill -9 $(取pid子命令) 正确传递呢?
关键是 $在bash中如何转义出来?
echo "kill -9 $(ps | grep "$token" |sed -e 's/^[ ][ ]*//g' -e 's/[ ]/\n/' | sed '2,'$'d')"
嵌入式系统,无 pkill、xkill
无 awk,cut,xarg等命令
要求:
自动telnet到远端的嵌入式终端kill掉指定名称进程
经测试能用的命令有 grep,kill,sed,echo
现在有办法拿到 pid 但如何通过 kill -9 $(取pid子命令) 正确传递呢?
#! /bin/bash
remote=192.168.1.176
workspace=/app/www/cgi-bin
cmd=
token=
if [ $# -eq 2 ];then
remote=$1
cmd=$2
else
if [ $# -eq 1 ];then
cmd=$1
else
echo "Auto telnet & exec v1.0"
fi
fi
if [ -n "$cmd" ];then
token=${cmd//&/}
echo "$remote, $workspace, $cmd"
(
echo "root"
sleep 1
echo
sleep 1
echo "ps | grep "$token" |sed -e "s/^[ ][ ]*//g" -e "s/[ ]/\n/" | sed '2,'$'d'"
echo "kill -9 $(ps | grep "$token" |sed -e 's/^[ ][ ]*//g' -e 's/[ ]/\n/' | sed '2,'$'d')"
sleep 1
echo "cd $workspace"
sleep 1
echo "$cmd"
sleep 1
echo "exit"
) | telnet $remote
else
echo "No cmd assigned, Format: rtelnet [IP] ."
echo "eg: rtelnet ./pictest&"
echo " rtelnet "./calcserver 8081&""
echo " rtelnet 192.168.1.176 "./calcclient add 123 456&""
fi
关键是 $在bash中如何转义出来?
echo "kill -9 $(ps | grep "$token" |sed -e 's/^[ ][ ]*//g' -e 's/[ ]/\n/' | sed '2,'$'d')"
|
$() 换成`` 不可以么
|
killall name
|
kill 进程命