求:嵌入式环境下远程杀死一个进程方法

skertone 2014-06-26 10:44:12
首先得申明下限制条件与环境:

嵌入式系统,无 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] <\">cmd [param...]<\">."
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')"
...全文
146 3 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
zhxianbin 2014-06-26
  • 打赏
  • 举报
回复
killall name
向良玉 2014-06-26
  • 打赏
  • 举报
回复
引用 楼主 skertone 的回复:
首先得申明下限制条件与环境: 嵌入式系统,无 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] <\">cmd [param...]<\">."
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')"
$() 换成`` 不可以么
Rotel-刘志东 2014-06-26
  • 打赏
  • 举报
回复
kill 进程命

19,619

社区成员

发帖
与我相关
我的任务
社区描述
系统使用、管理、维护问题。可以是Ubuntu, Fedora, Unix等等
社区管理员
  • 系统维护与使用区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧