当前位置: > shell编程 >

shell 编程8 获取 java程序的pid 杀死pid 对应的进程

时间:2016-06-12 23:37来源:linux.it.net.cn 作者:IT
 
  1. var=$(ps -ef | grep -v 'grep' | grep 'hello' | awk '{print $2}')  
  2. # 其中的 grep  -v 'grep'  就是获取指定外的元素, awk 的$0 是所有值,而$ 1,$2 …… 就是他的域  
  3.   
  4. 注意使用ps  -ef  查出来的第一列是 用户名 第二列是 pid 第三列是 ppid     
  5.   
  6. 我们获得了 pid 后可以来杀死进程    
  7.   
  8. ************** kill相关信息 *********************  
  9.   
  10.   
  11.   
  12. 名称:kill   
  13. 使用权限:所有使用者   
  14. 使用方式:   
  15. kill [ -s signal | -p ] [ -a ] pid ...   
  16. kill -l [ signal ]   
  17. 说明:kill 送出一个特定的信号 (signal) 给行程 id 为 pid 的行程根据该信号而做特定的动作, 若没有指定, 预设是送出终止 (TERM) 的信号   
  18. 把计   
  19. -s (signal) : 其中可用的讯号有 HUP (1), KILL (9), TERM (15), 分别代表着重跑, 砍掉, 结束; 详细的信号可以用 kill -l   
  20. -p : 印出 pid , 并不送出信号   
  21. -l (signal) : 列出所有可用的信号名称   
  22.   
  23.   
  24. 范例:   
  25. 将 pid 为 323 的行程砍掉 (kill) :   
  26. kill -9 323   
  27. 将 pid 为 456 的行程重跑 (restart) :   
  28. kill -HUP 456  
  29.   
  30. --------------------------------------------------------------------------------   
  31.   
  32. *杀死进程最安全的方法是单纯使用kill命令,不加修饰符,不带标志   
  33.     
  34. 首先使用ps -ef命令确定要杀死进程的PID,然后输入以下命令:   
  35. # kill -pid     
  36. 注释:标准的kill命令通常都能达到目的。终止有问题的进程,并把进程的资源释放给系统。然而,如果进程启动了子进程,只杀死父进程,子进程仍在运行,因此仍消耗资源。为了防止这些所谓的“僵尸进程”,应确保在杀死父进程之前,先杀死其所有的子进程。    
  37. --------------------------------------------------------------------------------   
  38. *确定要杀死进程的PID或PPID   
  39. # ps -ef | grep httpd    
  40. --------------------------------------------------------------------------------   
  41. *以优雅的方式结束进程   
  42. # kill -l PID   
  43. -l选项告诉kill命令用好像启动进程的用户已注销的方式结束进程。当使用该选项时,kill命令也试图杀死所留下的子进程。但这个命令也不是总能成功--或许仍然需要先手工杀死子进程,然后再杀死父进程。    
  44. --------------------------------------------------------------------------------   
  45. *TERM信号   
  46. 给父进程发送一个TERM信号,试图杀死它和它的子进程。   
  47. # kill -TERM PPID    
  48. --------------------------------------------------------------------------------   
  49. *killall命令   
  50. killall命令杀死同一进程组内的所有进程。其允许指定要终止的进程的名称,而非PID。   
  51. # killall httpd    
  52. --------------------------------------------------------------------------------   
  53. *停止和重启进程    
  54. 有时候只想简单的停止和重启进程。如下:   
  55. # kill -HUP PID   
  56. 该命令让Linux和缓的执行进程关闭,然后立即重启。在配置应用程序的时候,这个命令很方便,在对配置文件修改后需要重启进程时就可以执行此命令。    
  57. --------------------------------------------------------------------------------  
  58. *绝杀 kill -9 PID   
  59. 同意的 kill -s SIGKILL    
  60. 这个强大和危险的命令迫使进程在运行时突然终止,进程在结束后不能自我清理。危害是导致系统资源无法正常释放,一般不推荐使用,除非其他办法都无效。   
  61.   
  62.   
  63. 当使用此命令时,一定要通过ps -ef确认没有剩下任何僵尸进程。只能通过终止父进程来消除僵尸进程。如果僵尸进程被init收养,问题就比较严重了。杀死init进程意味着关闭系统。   
  64. 如果系统中有僵尸进程,并且其父进程是init,而且僵尸进程占用了大量的系统资源,那么就需要在某个时候重启机器以清除进程表了。   


(责任编辑:IT)
------分隔线----------------------------
栏目列表
推荐内容