杀死Unix操作系统不服管教的进程


    笔者在《合理管理进程让其成为Unix系统的守护神》这篇文章中谈到进程是Unix系统的是守护神。可是有时候这个守护神也会闹别扭,会跟Unix操作系统作对。如明明任务已经执行完成了,但是却没有正常结束进程。又或者进程无缘无故占用了大量的系统资源,导致系统速度减慢,影响了其他作业的正常运行。对于这些不服管教的进程,系统工程师只能够拿起手中的屠刀,实行“杀无赦”政策。

  在Unix系统中有多种手段可以杀死这些异常的进程。通常情况下,笔者建议是杀进程的工作要有序的进行,尽量采取一些对操作系统影响小的方法。

  第一阶段:在本机上杀死进程。

  系统工程师可以直接在Unix系统的命令中断采用相关的命令来杀死异常进程。如可以按键盘上的DEL键、Ctrl+D键、Break键等等杀死进程。系统工程师按下这些键的任何一个,都会向系统进程发送中断信号。注意,通常情况下只有root用户才能够杀死其他拥护的进程或者系统进程;而其他用户只能够杀死自己的进程。如现在Unix系统中要部署一个Oracle数据库服务器。为了管理方便,Unix系统工程师建立了一个Oracle用户,用来进行数据库系统的维护与管理。此时,Oracle这个用户就会运行几个进程,如tns等进程。正常情况下,Oracle用户以及root用户都可以杀死这个进程。但是如果这个系统中还有其他用户,则无法杀死这个进程。

  另外如果用户想杀的进程是shell的子进程,则还可以采用kill命令家进程的作业号的方式。如kill % 作业号等等。Shell是Unix系统中很好的一个交互工具,也有人把它叫做命令行界面,是Unix操作系统下最传统、历史最悠久的用户和计算机的交互截面。系统管理员可以在这里直接输入相关的命令来执行各种各样的维护任务,包括杀死异常进程等等。其实它跟微软操作系统下的命令行界面很相似,不过也有一些差异的地方。如Unix操作系统下的shell既是用户与系统交互的界面,也是控制系统的脚本语言。这就是两者最大的差异。Shell做重要的特点就是隐藏了操作系统的底层细节,故对于工程师来说这是首选的维护系统的工具。

  其实大部分时候工程师都是在shell环境下管理进程,包括上篇文章中谈到的查看进程信息、把后台进程调到前台等等。故在本机上杀死进程也大部分是在shel环境下进行。为此系统工程师用的更多的可能还是利用kill命令来杀死shell子进程。

  • 1
  • 2
  • 3
  • 4
  • 下一页

相关内容