Linux服务器的进程查看命令详解 | 张戈博客

  • 时间:
  • 浏览:5

Linux服务器正常启动后,提供服务都有调用应用程序,占用应用程序。这事先亲戚亲戚我们我们如可查看系统中有 那此应用程序在被调用呢?亲戚亲戚我们我们还需用通过以下命令来查看。

一、ps命令

ps命令是最基本一块儿也是非常强大的应用程序查看命令。使用该命令还需用选者有那此应用程序正在运行和它所运行的情况、应用程序与非 结束了了、应用程序有不到僵死、那此应用程序占用了不多的资源等。总之大部分信息都有还需用通过执行该命令得到的。ps命令最常用来监控后台应用程序的工作情况,可能性后台应用程序是不和屏幕、键盘那此标准输入/输出设备进行通信的,后来 可能性需用检测后台情况,就需用使用ps命令了。它的格式如下所示:格式:ps 〔选项〕其主要选项如下。

-a:显示系统中所有应用程序的信息。

-e:显示所有应用程序的信息。

-f:显示应用程序的所有信息。

-l:以长格式显示应用程序信息。

-r:只显示正在运行的应用程序。

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

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

-p:显示由应用程序ID指定的应用程序信息。

-t:显示指定终端上的应用程序信息。

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

[[email protected] ~]# ps -aux | more
Warning: bad syntax, perhaps a bogus '-'? See /usr/share/doc/procps-3.2.7/FAQ
USER       PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
root         1  0.0  0.0  10348   51000 ?        Ss   Jan23   0:07 init [5]
root         2  0.0  0.0      0     0 ?        S<   Jan23   0:01 [migration/0]
root         3  0.0  0.0      0     0 ?        SN   Jan23   0:00 [ksoftirqd/0]
root         4  0.0  0.0      0     0 ?        S<   Jan23   0:00 [watchdog/0]
root         5  0.0  0.0      0     0 ?        S<   Jan23   0:01 [migration/1]
root         6  0.0  0.0      0     0 ?        SN   Jan23   0:00 [ksoftirqd/1]
root         7  0.0  0.0      0     0 ?        S<   Jan23   0:00 [watchdog/1]
root         8  0.0  0.0      0     0 ?        S<   Jan23   0:00 [migration/2]
root         9  0.0  0.0      0     0 ?        SN   Jan23   0:00 [ksoftirqd/2]
root        10  0.0  0.0     0     0 ?        S<   Jan23   0:00 [watchdog/2]
root        11  0.0  0.0     0     0 ?        S<   Jan23   0:00 [migration/3]
....

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,如下所示:

〔[email protected] ~〕# ps -axu| grep -v grep| grep nginx
Warning: bad syntax, perhaps a bogus ‘-’? See /usr/share/doc/procps-3.2.7/FAQ
root 4342 0.0 0.0 41096  896 ?Ss  Mar16  0:00 nginx: master process /usr/local/webserver/nginx/sbin/nginx
www  4343 0.0 0.6 65920 26232 ?SMar16  0:05 nginx: worker process
www  4344 0.0 0.6 65920 2611000 ?SMar16  0:02 nginx: worker process
www  4345 0.0 0.6 6100076 2641000 ?SMar16  0:03 nginx: worker process
www  4346 0.0 0.6 65920 26104 ?SMar16  0:03 nginx: worker process
www  4347 0.0 0.6 6100052 26228 ?SMar16  0:04 nginx: worker process
www  4348 0.0 0.6 6100012 26372 ?SMar16  0:04 nginx: worker process
www  4349 0.0 0.6 65788 2100076 ?SMar16  0:03 nginx: worker process
www  431000 0.0 0.6 65920 26188 ?SMar16  0:06 nginx: worker process

二、top命令

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

top - 11:22:52 up 90 days, 1:18, 1 user, load average: 1.06, 1.18, 1.08
Tasks: 10006 total, 1 running, 10004 sleeping, 0 stopped, 1 zombie
Cpu(s): 0.9%us, 0.2%sy, 0.0%ni, 98.3%id, 0.0%wa, 0.0%hi, 0.6%si, 0.0%st
Mem: 8171912k total, 677210008k used, 139910004k free, 387668k buffers
Swap: 16385256k total, 52964k used, 16332292k free, 2112540k cached
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
17700 root 19 0 3205m 2.0g 16m S 9.3 25.9 1362:18 java
3772 root 20 0 3878m 1.1g 9128 S 5.6 14.1 62:24.67 java
100019 root 15 0 110004 1424 10004 R 0.7 0.0 0:00.58 top
4499 root 15 0 0 0 0 S 0.3 0.0 10:25.90 nfsd
410003 root 15 0 0 0 0 S 0.3 0.0 10:15.94 nfsd
14018 daemon 15 0 5156 1948 1052 S 0.3 0.0 0:00.06 httpd
1 root 15 0 10348 51000 548 S 0.0 0.0 0:07.59 init
2 root RT -5 0 0 0 S 0.0 0.0 0:01.25 migration/0
3 root 34 19 0 0 0 S 0.0 0.0 0:00.32 ksoftirqd/0
4 root RT -5 0 0 0 S 0.0 0.0 0:00.00 watchdog/0
5 root RT -5 0 0 0 S 0.0 0.0 0:01.26 migration/1
6 root 34 19 0 0 0 S 0.0 0.0 0:00.00 ksoftirqd/1
7 root RT -5 0 0 0 S 0.0 0.0 0:00.00 watchdog/1
8 root RT -5 0 0 0 S 0.0 0.0 0:00.25 migration/2
9 root 34 19 0 0 0 S 0.0 0.0 0:00.32 ksoftirqd/2
10 root RT -5 0 0 0 S 0.0 0.0 0:00.00 watchdog/2
11 root RT -5 0 0 0 S 0.0 0.0 0:00.23 migration/3
12 root 34 19 0 0 0 S 0.0 0.0 0:00.00 ksoftirqd/3
13 root RT -5 0 0 0 S 0.0 0.0 0:00.00 watchdog/3
14 root RT -5 0 0 0 S 0.0 0.0 0:00.20 migration/4
15 root 34 19 0 0 0 S 0.0 0.0 0:00.25 ksoftirqd/4
.....

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

PID(Process ID):应用程序标志号,是非零正整数。
USER:应用程序所有者的用户名。
PR:应用程序的优先级别。
NI:应用程序的优先级别数值。
VIRT:应用程序占用的虚拟内存值。
RES:应用程序占用的物理内存值。
SHR:应用程序使用的共享内存值。
STAT:应用程序的情况,其中S表示休眠,R表示正在运行,Z表示僵死情况,N表示该应用程序优先值是负数。
%CPU:该应用程序占用的CPU使用率。
%MEM:该应用程序占用的物理内存和总内存的百分比。
TIME:该应用程序启动后占用的总CPU时间。
COMMAND:应用程序启动的启动命令名称,可能性其他

行显示不下,在应用程序中会有一一两个完整版的命令行。

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

P:根据CPU使用的有几块进行排序。
T:根据时间、累计时间排序。
q:退出top命令。
m:切换显示内存信息。
t:切换显示应用程序和CPU情况信息。
c:切换显示命令名称和完整版命令行。
M:根据使用内存的大小进行排序。
W:将当前设置写入~/.toprc文件中,这是写top配置文件的推荐法律法子。

三、pgrep命令

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

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

[[email protected] ~]#pgrep nginx
2834
2833
2832
2831
281000
2828
2827
2826
2825

四、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服务器》一书。