文档章节

shell 编程7 获取 java程序的pid

QH_C
 QH_C
发布于 2015/11/09 22:19
字数 889
阅读 33
收藏 0

var=$(ps -ef | grep -v 'grep' | grep 'hello' | awk '{print $2}')
# 其中的 grep  -v 'grep'  就是获取指定外的元素, awk 的$0 是所有值,而$ 1,$2 …… 就是他的域

注意使用ps  -ef  查出来的第一列是 用户名 第二列是 pid 第三列是 ppid  

我们获得了 pid 后可以来杀死进程 

************** kill相关信息 *********************


名称:kill 
使用权限:所有使用者 
使用方式: 
kill [ -s signal | -p ] [ -a ] pid ... 
kill -l [ signal ] 
说明:kill 送出一个特定的信号 (signal) 给行程 id 为 pid 的行程根据该信号而做特定的动作, 若没有指定, 预设是送出终止 (TERM) 的信号 
把计 
-s (signal) : 其中可用的讯号有 HUP (1), KILL (9), TERM (15), 分别代表着重跑, 砍掉, 结束; 详细的信号可以用 kill -l 
-p : 印出 pid , 并不送出信号 
-l (signal) : 列出所有可用的信号名称 


范例: 
将 pid 为 323 的行程砍掉 (kill) : 
kill -9 323 
将 pid 为 456 的行程重跑 (restart) : 
kill -HUP 456

-------------------------------------------------------------------------------- 

*杀死进程最安全的方法是单纯使用kill命令,不加修饰符,不带标志 
  
首先使用ps -ef命令确定要杀死进程的PID,然后输入以下命令: 
# kill -pid   
注释:标准的kill命令通常都能达到目的。终止有问题的进程,并把进程的资源释放给系统。然而,如果进程启动了子进程,只杀死父进程,子进程仍在运行,因此仍消耗资源。为了防止这些所谓的“僵尸进程”,应确保在杀死父进程之前,先杀死其所有的子进程。  
-------------------------------------------------------------------------------- 
*确定要杀死进程的PID或PPID 
# ps -ef | grep httpd  
-------------------------------------------------------------------------------- 
*以优雅的方式结束进程 
# kill -l PID 
-l选项告诉kill命令用好像启动进程的用户已注销的方式结束进程。当使用该选项时,kill命令也试图杀死所留下的子进程。但这个命令也不是总能成功--或许仍然需要先手工杀死子进程,然后再杀死父进程。  
-------------------------------------------------------------------------------- 
*TERM信号 
给父进程发送一个TERM信号,试图杀死它和它的子进程。 
# kill -TERM PPID  
-------------------------------------------------------------------------------- 
*killall命令 
killall命令杀死同一进程组内的所有进程。其允许指定要终止的进程的名称,而非PID。 
# killall httpd  
-------------------------------------------------------------------------------- 
*停止和重启进程  
有时候只想简单的停止和重启进程。如下: 
# kill -HUP PID 
该命令让Linux和缓的执行进程关闭,然后立即重启。在配置应用程序的时候,这个命令很方便,在对配置文件修改后需要重启进程时就可以执行此命令。  
--------------------------------------------------------------------------------
*绝杀 kill -9 PID 
同意的 kill -s SIGKILL  
这个强大和危险的命令迫使进程在运行时突然终止,进程在结束后不能自我清理。危害是导致系统资源无法正常释放,一般不推荐使用,除非其他办法都无效。 


当使用此命令时,一定要通过ps -ef确认没有剩下任何僵尸进程。只能通过终止父进程来消除僵尸进程。如果僵尸进程被init收养,问题就比较严重了。杀死init进程意味着关闭系统。 
如果系统中有僵尸进程,并且其父进程是init,而且僵尸进程占用了大量的系统资源,那么就需要在某个时候重启机器以清除进程表了。


© 著作权归作者所有

共有 人打赏支持
QH_C
粉丝 1
博文 75
码字总数 69153
作品 0
朝阳
程序员
linux shell 编程 11 特殊符号 & 以及和他的恩怨

这篇文章中主要说说这四个符号: &、&& 、$!、$$ 四个符号。 符号解释: &&: 逻辑关系 与 & : 在后台运行进程 $! : 为什么要在这里说这些符号那,有三个不是在之前已经学习过了吗,原因有一...

QH_C
2015/11/17
0
0
Linux 下shell启动Java Main函数脚本

#!/bin/sh # #该脚本为Linux下启动java程序的通用脚本。即可以作为开机自启动service脚本被调用, #也可以作为启动java程序的独立脚本来使用。 #警告!!!:该脚本stop部分使用系统kill命令来强...

心月狐
05/14
0
0
jstack命令:教你如何排查多线程问题

这是之前的一个死锁案例: 一个多线程死锁案例,如何避免及解决死锁问题? 如程序中发生这样的死锁问题该如何排查呢?我们可以使用java自带的jstack命令进行排查。 1、先在服务器运行上面的死...

java技术栈
2017/11/14
0
0
对JDBC的支持 之 7.1 概述

概述 JDBC回顾 传统应用程序开发中,进行JDBC编程是相当痛苦的,如下所示: //cn.javass.spring.chapter7. TraditionalJdbcTest @Test public void test() throws Exception { Connection co...

heroShane
2014/02/27
0
0
jps命令:查看Java进程等详细信息

jps是java自带的查看java进程的命令,通过这个命令可以查看当前系统所有运行中的java进程、java包名、jar包名及JVM参数等。 jps -help 可以查看命令用法。 -q: 只显示VM 标示,不显示jar,cla...

java技术栈
2017/11/14
0
0

没有更多内容

加载失败,请刷新页面

加载更多

deepin系统使用deepin-wine安装exe程序

deepin自带原生deepin-wine使用命令如下: deepin-wine QQMusicSetup.exe deepin-wine的程序位置: /root/.wine 默认安装的QQ浏览器快捷方式位置: /root/.wine/drive_c/'Program Files'/Te...

临江仙卜算子
38分钟前
1
0
快速get到学习Linux操作系统的点

快速get到学习Linux操作系统的点 Linux是一套免费使用和自由传播的类Unix操作系统,是一个基于POSIX和UNIX的多用户、多任务、支持多线程和多CPU的操作系统。Linux能够运行主要的UNIX工具软件...

linuxCool
44分钟前
2
0
聊聊:Linux分区的那些方案

安装linux的整体步骤其实比较简单,唯一可能值得说明的地方,大概就是linux的分区了。 下面来给大家推荐一些分区方案。 1 分两个区 实际上,很多时候我们只需要分两个区:`/`和交换分区,日常...

Linux就该这么学
55分钟前
1
0
适配器模式和外观模式

适配器模式: 将一个类的接口,转换成客户期望的另一个接口。适配器让原本不兼容的类可以合作无间。 例子: //将Enumeration转换成Iteratorpublic class EnumerationIterator implements Iter...

王怀楼
57分钟前
2
0
7-CXF与Spring整合发布webservice

Spring+CXF整合来管理webservice 实现步骤: 1. 添加cxf.jar 包(集成了Spring.jar、servlet.jar ),spring.jar包 ,servlet.jar 包 2. 编写业务类,通过CXF来发布webservice 员工管理: 方法...

江戸川
59分钟前
3
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部