Linux-进程的观察

16.1.1 进程与程序

 

  • ·程序 (program):通常为 binary program ,放置在储存媒体中 (如硬盘、光盘、软盘、磁带等), 为实体文 件的型态存在;
  • ·进程 (process):程序被触发后,执行者的权限与属性、程序的程序代码与所需数据等都会被加载内存中, 操作系统并给予这个内存内的单元一个标识符 (PID),可以说,进程就是一个正在运作中的程序

 

第一个 bash 的 PID 与第二个 bash 的 PPID 都是 13928 啊, 因为第二个 bash 是来自于第一个所产生的嘛!

 

常驻在内存当中的进程通常都是负责一些系统所提供的功能以服务用户各项任务,因此这些常驻程序 就会被我们称为:服务 (daemon)。所以,一般 daemon 类型的程序都会加上 d 在文件名后头~包括服务器篇我们会看到的 httpd, vsftpd。

 

16.3.1 进程的观察

 

ps :将某个时间点的进程运作情况撷取下来。

 

[root@study ~]# ps aux <==观察系统所有的进程数据 

[root@study ~]# ps -lA <==也是能够观察所有系统的数据 

[root@study ~]# ps axjf <==连同部分进程树状态

  

  

 

选项与参数:

-A :所有的 process 均显示出来,与 -e 具有同样的效用;

-a :不与 terminal 有关的所有 process ;

-u :有效使用者 (effective user) 相关的 process ;

x :通常与 a 这个参数一起使用,可列出较完整信息。

输出格式规划:

l :较长、较详细的将该 PID 的的信息列出;

j :工作的格式 (jobs format)

-f :做一个更为完整的输出。

 

常用的:

一个是只能查阅自己 bash 进程的『 ps -l 』

一个则是可 以查阅所有系统运作的进程『 ps aux 』!

 

[agan@localhost root]$ ps -l 
F S UID PID PPID C PRI NI ADDR SZ WCHAN TTY TIME CMD 
4 S 1000 1971 1970 0 80 0 - 28862 do_wai pts/0 00:00:00 bash
0 R 1000 2013 1971 0 80 0 - 38312 - pts/0 00:00:00 ps

 

 

S:代表这个进程的状态 (STAT),主要的状态有:

  • § R (Running):该程序正在运作中;
  • § S (Sleep):该程序目前正在睡眠状态(idle),但可以被唤醒(signal)。
  • § D :不可被唤醒的睡眠状态,通常这支程序可能在等待 I/O 的情况(ex>打印)
  • § T :停止状态(stop),可能是在工作控制(背景暂停)或除错 (traced) 状态;
  • § Z (Zombie):僵尸状态,进程已经终止但却无法被移除至内存外。
  • PRI/NI:Priority/Nice 的缩写,代表此进程被 CPU 所执行的优先级,数值越小代表该进程越快被 CPU 执行
  • ADDR/SZ/WCHAN:都与内存有关,ADDR 是 kernel function,指出该进程在内存的哪个部分,如果是个 running 的进程,一般就会显示『 - 』 / SZ 代表此进程用掉多少内存 / WCHAN 表示目前进程是否运作中, 同样的, 若为 - 表示正在运作中。
  • TIME:使用掉的 CPU 时间,注意,是此进程实际花费 CPU 运作的时间,而不是系统时间;

 

[agan@localhost root]$ ps aux 
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
root 1 0.0 0.3 127952 6516 ? Ss 05:01 0:01 /usr/lib/systemd/systemd --switched-root --system --d root 2 0.0 0.0 0 0 ? S 05:01 0:00 [kthreadd]
root 4 0.0 0.0 0 0 ? S< 05:01 0:00 [kworker/0:0H]
root 6 0.0 0.0 0 0 ? S 05:01 0:00 [ksoftirqd/0]
root 7 0.0 0.0 0 0 ? S 05:01 0:00 [migration/0]
root 8 0.0 0.0 0 0 ? S 05:01 0:00 [rcu_bh]
root 9 0.0 0.0 0 0 ? S 05:01 0:00 [rcu_sched]

 

 

  • § VSZ :该 process 使用掉的虚拟内存量 (Kbytes)
  • § RSS :该 process 占用的固定的内存量 (Kbytes)
  • § TTY :该 process 是在那个终端机上面运作,若与终端机无关则显示 ?,另外, tty1-tty6 是本机上面的登 入者进程,若为 pts/0 等等的,则表示为由网络连接进主机的进程。
  • § STAT:该进程目前的状态,状态显示与 ps -l 的 S 旗标相同 (R/S/T/Z)

 

top:动态观察进程的变化

[root@localhost ~]# top [-d 数字] | top [-bnp]
  • -b :以批次的方式执行 top ,还有更多的参数可以使用喔! 通常会搭配数据流重导向来将批次的结果输出成为文件。
  • -n :与 -b 搭配,意义是,需要进行几次 top 的输出结果。
  • -p :指定某些个 PID 来进行观察监测而已。

在 top 执行过程当中可以使用的按键指令:

  • ? :显示在 top 当中可以输入的按键指令;
  • P :以 CPU 的使用资源排序显示;
  • M :以 Memory 的使用资源排序显示;
  • N :以 PID 来排序喔!
  • T :由该 Process 使用的 CPU 时间累积 (TIME+) 排序。
  • k :给予某个 PID 一个讯号 (signal)
  • r :给予某个 PID 重新制订一个 nice 值。
  • q :离开 top 软件的按键。

 

top - 17:53:08 up 12:51, 2 users, load average: 0.00, 0.00, 0.00 
Tasks: 105 total, 1 running, 104 sleeping, 0 stopped, 0 zombie 
%Cpu(s): 0.0 us, 0.0 sy, 0.0 ni,100.0 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st 
KiB Mem : 1863104 total, 1569792 free, 142924 used, 150388 buff/cache 
KiB Swap: 2097148 total, 2097148 free, 0 used. 1561264 avail Mem 
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND 
1 root 20 0 127952 6516 4104 S 0.0 0.3 0:01.36 systemd 
2 root 20 0 0 0 0 S 0.0 0.0 0:00.00 kthreadd 
4 root 0 -20 0 0 0 S 0.0 0.0 0:00.00 kworker/0:0H 
6 root 20 0 0 0 0 S 0.0 0.0 0:00.02 ksoftirqd/0 
7 root rt 0 0 0 0 S 0.0 0.0 0:00.01 migration/0
8 root 20 0 0 0 0 S 0.0 0.0 0:00.00 rcu_bh 
9 root 20 0 0 0 0 S 0.0 0.0 0:00.74 rcu_sched 
10 root 0 -20 0 0 0 S 0.0 0.0 0:00.00 lru-add-drain
11 root rt 0 0 0 0 S 0.0 0.0 0:00.26 watchdog/0 
12 root rt 0 0 0 0 S 0.0 0.0 0:00.36 watchdog/1

  

  

 

依次显示信息:

1->当前时间、开机时间、同时使用用户数,系统在 1, 5, 15 分钟的平均工作负载。

2->显示的是目前进程的总量与个别进程在什么状态(running, sleeping, stopped, zombie)

3->显示的是 CPU 的整体负载

4、5->表示目前的物理内存与虚拟内存 (Mem/Swap) 的使用情况

6->输入指令,显示状态的地方

 

范例二:将 top 的信息进行 2 次,然后将结果输出到 /tmp/top.txt 
[root@study ~]# top -b -n 2 > /tmp/top.tx

 

范例三:我们自己的 bash PID 可由 $$ 变量取得,请使用 top 持续观察该 PID 
[root@study ~]# echo $$ 14836 <==就是这个数字!他是我们 bash 的 PID
[root@study ~]# top -d 2 -p 14836 top - 01:00:53 up 6:14, 3 users, load average: 0.00, 0.01, 0.05 
Tasks: 1 total, 0 running, 1 sleeping, 0 stopped, 0 zombie %Cpu(s):0.0 us, 0.1 sy, 0.0 ni, 99.9 id, KiB Mem : 2916388 total, 1839264 free, 0.0 wa, 0.0 hi, 353424 used, 0.0 si, 0.0 st 723700 buff/cache 
KiB Swap: 1048572 total, 1048572 free, 0 used. 2318848 avail Mem
 PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND 
14836 root 20 0 116272 3136 1848 S 0.0 0.1 0:00.07 bash

 

如果觉得内存以KB为单位不方便监控,可以按下E,则分别以KB、MB、GB、TB、PB、EB单位显示

 

posted @ 2019-12-22 07:24  浮梦  阅读(621)  评论(0编辑  收藏  举报