Linux服务器的进程查看命令详解

Linux服务器正常启动后,提供服务时会调用程序,占用进程。这时候我们如何查看系统中有哪些进程在被调用呢?我们可以通过以下命令来查看。

一、ps命令

ps命令是最基本同时也是非常强大的进程查看命令。使用该命令可以确定有哪些进程正在运行和它所运行的状态、进程是否结束、进程有没有僵死、哪些进程占用了过多的资源等。总之大部分信息都是可以通过执行该命令得到的。ps命令最常用来监控后台进程的工作情况,因为后台进程是不和屏幕、键盘这些标准输入/输出设备进行通信的,所以如果需要检测后台情况,就需要使用ps命令了。它的格式如下所示:格式:ps 〔选项〕其主要选项如下。

-a:显示系统中所有进程的信息。

-e:显示所有进程的信息。

-f:显示进程的所有信息。

-l:以长格式显示进程信息。

-r:只显示正在运行的进程。

-u:显示面向用户的格式(包括用户名、CPU及内存的使用情况等信息)。

-x:显示所有非控制终端上的进程信息。

-p:显示由进程ID指定的进程信息。

-t:显示指定终端上的进程信息。

要对进程进行监测和控制,首先要了解当前进程的情况,当然也就需要查看当前进程的状态了。通过ps命令查看进程,根据所显示的信息可以了解哪个进程正在运行、哪个进程被挂起了、进程已运行了多久、进程正在使用的资源、进程的相对优先级,以及进程的标志号(PID)。所有这些信息对用户都很有用,对于系统管理员来说尤为重要。使用ps -aux命令可以获得终端上所有用户的有关进程的所有信息,这个也是我们平时用得最多的命令之一,如下所示:

USER:表示启动进程的用户。

PID:表示进程标志号。

%CPU:表示运行该进程占用CPU的时间与该进程总的运行时间之比。

%MEM:表示该进程占用内存与总内存之比。

VSZ:表示占用的虚拟内存大小,以KB为单位。

RSS:为进程占用的物理内存值,以KB为单位。

TTY:表示该进程建立时所对应的终端,“?”表示该进程不占用终端。

STAT:表示进程的运行状态。包括以下几种代码:D,不可中断的睡眠;R,就绪(在可运行队列中);S,睡眠;T,被跟踪或停止;Z,终止(僵死)的进程,这些进程不存在,但暂时无法消除;W,没有足够的内存分页可分配;<,高优先级的进程;N,低优先级的进程;L,有内存分页分配并锁在内存体内(实时系统或I/O)。

START:为进程开始时间。

TIME:为执行的时间。

COMMAND:是对应的命令名。

由于ps执行后结果太多了,所以我们一般会带上grep参数来精确定位我们需要的进程号。例如,我们要查看Nginx占用的进程,可以用命令ps -axugrep nginx,如下所示:

二、top命令

top命令可动态显示服务器的进程信息。top命令和ps命令的基本作用是相同的,都显示系统当前进程的状况。但top是一个动态显示过程,即用户可以通过按键来不断刷新当前状态。此命令的使用举例如下所示:

第一行内容依次表示当前时间、系统启动的时间、当前系统登录的用户数、平均负载。第二行依次显示的是所有启动的、目前运行的、挂起(Sleeping)的和无用(Zombie)的进程。第三行显示的是目前CPU的使用情况,包括系统占用的比例、用户使用比例、闲置(Idle)比例。第四行显示物理内存的使用情况,包括总的可以使用的内存、已用内存、空闲内存、缓冲区占用的内存。第五行显示交换分区的使用情况,包括总的交换分区、使用的、空闲的和用于高速缓存的交换分区。第六行显示的内容最多,下面分别进行详细解释。

在top命令使用过程中,还可以使用一些交互的命令来完成其他参数的功能。这些命令是通过快捷键启动的,格式如下所示:<空格>:立刻刷新其主要参数如下所示。

三、pgrep命令

pgrep命令的作用是查找当前运行的进程,并列出匹配给定条件进程的PID。所有的条件都必须匹配才会被列出。使用权限为所有用户。

以下是我在一台64位FreeBSD8.1 x86_64的机器上以用户名andrewyu查看的ngnix的所有进程号。

四、kill命令

kill命令的作用是终止一个进程。其格式如下:

  1. kill 〔-s signal |-p〕 〔-a〕pid…
  2. kill -l 〔 signal 〕

它的主要选项如下所示。

-s:指定发送的信号。

-p:模拟发送信号。

-l:指定信号的名称列表。

pid:要终止的进程的ID号。

signal:表示信号。

kill可将指定的信息送至程序中。预设的信息为SIGTERM(15),可将指定程序终止。若仍无法终止该程序,则可以使用SIGKILL(9)信息尝试强制删除程序。kill命令的工作原理是,向Linux系统的内核发送一个系统操作信号和某个程序的进程标志号,然后系统内核就可以对进程标志号指定的进程进行操作了。当需要中断一个前台进程的时候,通常使用Ctrl+C组合键;但是对于一个后台进程来说,就不是一个组合键所能解决的了,这时就必须使用kill命令。另外,kill -9可以强制杀掉进程,尤其适用于僵尸进程。

五、killall命令

killall命令的作用是通过程序的名字,直接杀死所有进程,这里简单介绍一下。如果要杀掉nginx的所有进程,要是用kill的话就要执行9次,但如果用killall nginx则能很轻松地一次性解决问题。另外,大家有兴趣也可以了解一下pkill的用法,在服务器里用它来“踢人”还是很方便的,这个命令在工作中我们用得不多,大家稍微了解一下即可。

在Linux下,最强大的进程管理命令莫过于ps和top了,我们应该掌握它们的详细语法,在工作中灵活地使用它们。

注:以上内容整理自《构建高可用的Linux服务器》一书。

发表评论

gravatar

:?::razz::sad::evil::!::smile::oops::grin::eek::shock::???::cool::lol::mad::twisted::roll::wink::idea::arrow::neutral::cry::mrgreen:

刷新评论

目前评论:9   其中:访客  7   博主  2

  1. 谢泽文 1 来自天朝的朋友 未知浏览器 Unknow Os 湖北省武汉市江夏区 湖北经济学院

    喜欢centos胜过win03

    • 张戈 [博主] 来自天朝的朋友 未知浏览器 Unknow Os 广东省深圳市 联通

      Win做服务器性能上比不过linux

  2. 投资网赚http://hyipwz.com 1 来自天朝的朋友 未知浏览器 Unknow Os 重庆市 移动

    学习中 呵呵

  3. 好运鞋网 2 来自天朝的朋友 未知浏览器 Unknow Os 山东省泰安市 联通

    这种知识的文章,看着有点晕。

  4. 球球 4 来自天朝的朋友 未知浏览器 Unknow Os 天津市 电信IDC机房

    表示从来没接触过Linux啊

    • 张戈 [博主] 来自天朝的朋友 未知浏览器 Unknow Os 广东省深圳市 联通

      有机会接触接触~

      • 球球 4 来自天朝的朋友 未知浏览器 Unknow Os 天津市 电信IDC机房

        恩。必须的。

  5. qkwu 3 来自天朝的朋友 未知浏览器 Unknow Os 江苏省无锡市锡山区 电信

    学习了

  6. 好铺365 1 来自天朝的朋友 未知浏览器 Unknow Os 河北省石家庄市 电信

    原来学习过,后来没用过,忧患给老师了,哎

加载中,请稍候...