转自http://blog.csdn.net/tengdazhang770960436/article/details/53906263

第一步:获取进程号

pid=$(ssh root@$remote_host "ps -ef | grep ${tomcat_name} | grep -v grep | awk  '{print $2}'"| awk '{print $2}')

第二步:杀掉进程

ssh root@$remote_host "kill -9 ${pid}"

注意:

杀掉远程进程跟杀掉本地进程不一样,杀掉本地进程只需要一句话就可以搞定了:

ps -ef | grep ${tomcat_name} | grep -v grep | awk  '{print $2}'|xargs kill -

但是杀掉远程的进程不一样,因为过滤的结果会被整体返回,如果在远程执行这个杀掉进程的命令:

ssh root@$remote_host "ps -ef | grep ${tomcat_name} | grep -v grep | awk  '{print $2}' | xargs  kill -9"

你会得到错误的提示:

kill process java -jar tomcat-
kill: can't find process "root"
kill: can't find process "09:42"
kill: can't find process "?"
kill: can't find process "00:00:44"
kill: can't find process "/opt/tools/jdk1.7.0_67/bin/java"
kill: can't find process "-Djava.util.logging.config.file=/opt/tools/tomcat-8081/conf/logging.properties"
kill: can't find process "-Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager"
kill: can't find process "-Ddisconf.env=rd"
kill: can't find process "-Ddisconf.conf_server_host=192.168.100.15:8015"
kill: can't find process "-Ddisconf.app=ync365"
kill: can't find process "-Ddisconf.version=1.0.0"
kill: can't find process "-Ddisconf.user_define_download_dir=./classes"
kill: can't find process "-Ddisconf.enable.remote.conf=true"
kill: can't find process "-Djdk.tls.ephemeralDHKeySize=2048"
kill: can't find process "-Djava.endorsed.dirs=/opt/tools/tomcat-8081/endorsed"
kill: can't find process "-classpath"
kill: can't find process "/opt/tools/tomcat-8081/bin/bootstrap.jar:/opt/tools/tomcat-8081/bin/tomcat-juli.jar"
kill: can't find process "-Dcatalina.base=/opt/tools/tomcat-8081"
kill: can't find process "-Dcatalina.home=/opt/tools/tomcat-8081"
kill: can't find process "-Djava.io.tmpdir=/opt/tools/tomcat-8081/temp"
kill: can't find process "org.apache.catalina.startup.Bootstrap"
kill: can't find process "start"

这是因为你执行的远程命令会返回如下结果:

root              : pts/    :: /opt/tools/jdk1..0_67/bin/java -Djava.util.logging.config.file=/opt/tools/apache-tomcat-7.0./conf/logging.properties -Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager -Djdk.tls.ephemeralDHKeySize= -Djava.endorsed.dirs=/opt/tools/apache-tomcat-7.0./endorsed -classpath /opt/tools/apache-tomcat-7.0./bin/bootstrap.jar:/opt/tools/apache-tomcat-7.0./bin/tomcat-juli.jar -Dcatalina.base=/opt/tools/apache-tomcat-7.0. -Dcatalina.home=/opt/tools/apache-tomcat-7.0. -Djava.io.tmpdir=/opt/tools/apache-tomcat-7.0./temp org.apache.catalina.startup.Bootstrap start

然后 xargs kill -9 会把上面的所有的空格隔开的进程给删除一遍,实际上他们根本不是进程,只是一个进程下面返回的描述而已,我们真正需要的进程号是第二个 7314 这个进程,因此我们需要把返回的字符串再次过滤一遍,这样就能够得到真正的进程号了。

linux 远程杀掉进程的更多相关文章

  1. 【linux】杀掉进程命令

    1.找到对应的进程 通过端口查找 lsof -i:端口号 netstat -tunlp | grep 端口   lsof -i:9500   netstat -tunlp | grep 9500 2. ...

  2. Linux之杀掉进程

    pkill命令可以按照进程名杀死进程.pkill和killall应用方法差不多,也是直接杀死运行中的程序:如果您想杀掉单个进程,请用kill来杀掉. 语法 pkill(选项)(参数) 选项 -o:仅向 ...

  3. linux如何杀掉进程(kill)

    方法/步骤1: 使用“ps -e|grep mysql”命令,查看mysql程序的对应的pid号.结果如下图:   方法/步骤2: 使用“kill -9 2891”命令,可以结束掉mysqld_saf ...

  4. linux按照进程名杀掉进程

    1.按照进程名杀掉进程 ps  -ef  | grep   sftp   | grep mysql  |grep -v grep | awk '{print("kill -9 ", ...

  5. Linux find 查找 并删除文件 杀掉进程

    find 默认在当前 即 . 目录下查找 du 文件名 / 目录 # 查看文件占用内存大小 1. 按照文件名查找 find / -name qwe # qwe为文件名 find / -name *qw ...

  6. Linux如何查看进程、杀死进程、启动进程等常用命令

    Linux如何查看进程.杀死进程.启动进程等常用命令 关键字: linux 查进程.杀进程.起进程1.查进程    ps命令查找与进程相关的PID号:    ps a 显示现行终端机下的所有程序,包括 ...

  7. Linux 线程与进程,以及通信

    http://blog.chinaunix.net/uid-25324849-id-3110075.html 部分转自:http://blog.chinaunix.net/uid-20620288-i ...

  8. Linux下的进程管理

    在操作系统系统中,进程是一个非常重要的概念. 一.Linux中进程的相关知识 1.什么是进程呢? 通俗的来说进程是运行起来的程序.唯一标示进程的是进程描述符(PID),在linux内核中是通过task ...

  9. linux系统管理--查看进程

    关于进程的查看,大家都不会陌生 ,主要是ps和pstree命令. ps  aux    查看系统中所有进程,使用BSD操作系统格式.(注意:不是ps -aux) 执行结果 USER :该进程是由哪个用 ...

随机推荐

  1. 搭建双塔(vijos 1037)

    描述 2001年9月11日,一场突发的灾难将纽约世界贸易中心大厦夷为平地,Mr. F曾亲眼目睹了这次灾难.为了纪念“9?11”事件,Mr. F决定自己用水晶来搭建一座双塔. Mr. F有N块水晶,每块 ...

  2. 尽量写出大家都能看懂的ReactJS入门教程

    个人感觉ReactJS相比于传统的JS框架还是挺有意思的,主要是它将JS代码和HTML代码完美的结合在了一起,有点jsp把java代码和html混在一起写的意思?但是它通过组件的形式实现了代码可复用, ...

  3. vagrant的学习之Git学习

    vagrant的学习之Git学习 参考学习网址: http://www.runoob.com/git/git-install-setup.html. http://www.bootcss.com/p/ ...

  4. iOS - 系统方法中弃用的关键字的了解 NS_AVAILABLE和NS_DEPRECATED

    NS_AVAILABLE_IOS(5_0)  这个方法可以在iOS5.0及以后的版本中使用,如果在比5.0更老的版本中调用这个方法,就会引起崩溃.  NS_AVAILABLE(_mac, _ios) ...

  5. Last Defence - UVA7045

    https://icpcarchive.ecs.baylor.edu/index.php?option=com_onlinejudge&Itemid=8&page=show_probl ...

  6. Hibernate学习笔记(三)

    我是从b站视频上学习的hibernate框架,其中有很多和当前版本不符合之处,我在笔记中进行了修改以下是b站视频地址:https://www.bilibili.com/video/av14626440 ...

  7. ArcGIS Engine 中的绘制与编辑

    1.线段绘制 基本步骤 构建形状 1. 创建 IPoint IPoint m_Point = new PointClass(); m_Point.PutCoords(x, y); 2. 创建 IPoi ...

  8. 【APUE】进程间通信之信号量

    信号量是一个计数器,用于多进程对共享数据对象的访问 为了获得共享资源,进程需要执行下列操作: 1)测试控制该资源的信号量 2)若此信号量为正,则进程可以使用该资源,进程将信号量减1,表示它使用了一个资 ...

  9. uva558 Wormholes SPFA 求是否存在负环

    J - Wormholes Time Limit:3000MS     Memory Limit:0KB     64bit IO Format:%lld & %llu Submit Stat ...

  10. CentOS 5 全功能服务器搭建

    转自: http://www.php-oa.com/2007/12/27/centos-www.html 转:主要做为历史记录,以后用.另外很少见这么好的编译的文章,其实我不推荐用编译安装.但这个文章 ...