[root@localhost ~]# top
top - 06:08:48 up 4 days, 6:57, 1 user, load average: 0.00, 0.00, 0.00
Tasks: 60 total, 1 running, 59 sleeping, 0 stopped, 0 zombie
Cpu(s): 0.3% us, 0.7% sy, 0.0% ni, 97.4% id, 0.4% wa, 0.1% hi, 1.1% si
Mem: 191228k total, 171424k used, 19804k free, 19436k buffers
Swap: 265064k total, 1284k used, 263780k free, 120480k cached
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
6779 root 16 0 2536 832 668 R 3.8 0.4 0:00.04 top
1 root 16 0 2648 604 520 S 0.0 0.3 0:13.54 init
2 root 34 19 0 0 0 S 0.0 0.0 0:00.07 ksoftirqd/0
top - 01:06:48 up 1:22, 1 user, load average: 0.06, 0.60, 0.48
·01:06:48 当前时间
·up 1:22 系统运行时间,格式为时:分
·1 user 当前登录用户数
·load average: 0.06, 0.60, 0.48 系统负载,即任务队列的平均长度。三个数值分别为 1分钟、5分钟、15分钟前到现在的平均值。
top -d 指定刷新间隔时间 默认为s
空格 为立即刷新
w和uptime 命令也能看到这些信息
Tasks: 29 total, 1 running, 28 sleeping, 0 stopped, 0 zombieCpu(s): 0.3% us, 1.0% sy, 0.0% ni, 98.7% id, 0.0% wa, 0.0% hi, 0.0% si, 0.0%st
·total 进程总数
·running 正在运行的进程数
·sleeping 睡眠的进程数
·stopped 停止的进程数
·zombie 僵尸进程数
·Cpu(s):
·0.3%us 用户空间占用CPU百分比 (用户态)
·1.0% sy 内核空间占用CPU百分比 (内核态)
·0.0% ni 用户进程空间内改变过优先级的进程占用CPU百分比
·98.7% id 空闲CPU百分比
·0.0% wa 等待输入输出的CPU时间百分比
·0.0%hi:硬件CPU中断占用百分比
·0.0%si:软中断占用百分比
·0.0%st:虚拟机占用百分比
Mem: 191272k total, 173656k used, 17616k free, 22052k buffersSwap: 192772k total, 0k used, 192772k free, 123988k cached
·Mem:
·191272k total 物理内存总量
·173656k used 使用的物理内存总量
·17616k free 空闲内存总量
·22052k buffers 用作内核缓存的内存量
·Swap:
·192772k total 交换区总量
·0k used 使用的交换区总量
·192772k free 空闲交换区总量
·123988k cached 缓冲的交换区总量,内存中的内容被换出到交换区,而后又被换入到内存,但使用过的交换区尚未被覆盖,该数值即为这些内容已存在于内存中的交换区的大小,相应的内存再次被换出时可不必再对交换区写入。
pstree命令
用途:以树型结构显示各进程间的关系
常用命令选项:
-p:列出进程的PID号
[root@localhost ~]# pstree -p
init,1
├─acpid,2866
├─atd,3060
├─auditd,2516
│ ├─python,2518 /sbin/audispd
│ └─{auditd},2517
├─automount,2842
……
pgrep命令
用途:根据特定条件查询进程PID信息
常用命令选项:
-l:列出进程的名称
-u:根据进程所属的用户名进行查找
-t:根据进程所在的终端进行查找
[root@localhost ~]# pgrep "init"
1
[root@localhost ~]# pgrep -l "log"
2538 syslogd
2541 klogd
3221 login
[root@localhost ~]# pgrep -l -u teacher -t tty1
27483 bash
27584 vim
进程的状态
D 无法中断的休眠状态(通常 IO 的进程);
R 正在运行,在可中断队列中;
S 处于休眠状态,静止状态;
T 停止或被追踪,暂停执行;
W 进入内存交换(从内核2.6开始无效);
X 死掉的进程;
Z 僵尸进程不存在但暂时无法消除;
W: 没有足够的记忆体分页可分配
WCHAN 正在等待的进程资源;
<: 高优先级进程
N: 低优先级进程
L: 有记忆体分页分配并锁在记忆体内 (即时系统或捱A I/O),即,有些页被锁进内存
s 进程的领导者(在它之下有子进程);
l 多进程的(使用 CLONE_THREAD, 类似 NPTL pthreads);
+ 位于后台的进程组;
进程优先级设置
Linux内核的基本任务是调度进程
每个进程受两个参数影响其调度
优先级(priority):内核控制动态变化
值越小越早被cpu执行
用户无法直接调整数值大小
niceness:表示进程可被执行的优先级的修正数值 ,可手工修改
与priority有关
优先级有正负之分(-20 -19)
加入nice值后 PRI(新) = PRI(老) + nice
root可以设置nice值范围(-20 - 19)
普通用户可以设置nice值范围(0- 19)
用nice命令新的nice(新开启的进程)
以新的nice来启动命令
nice -10 vi & 设置nice值为10
nice --10 vi & 设置nice值为-10
用renice命令设置新nice(已经存在的进程)
renice 10 15132 设置nice值为10
renice -10 15132 设置nice值为-10
用top命令修改进程的优先级
先输入r,然后输入pid,最后输入优先级
kill命令
软中断信号,简称信号。是进程间通信机制中唯一的异步通信机制,一个进程不必通过任何操作来等待信号的到达,事实上,进程也不知道信号到底什么时候到达。进程之间可以互相通过系统调用kill发送软中断信号。内核也可以因为内部事件而给进程发送信号,通知进程发生了某个事件。信号机制除了基本通知功能外,还可以传递附加信息。
kill -l列出Linux系统支持的信号种类
发送信号的原因
硬件异常
软件状态
终端中断
kill命令用来发送信号
kill -信号代码 PID
进程收到信号后采取的行动
终止
忽略信号
挂起
用户常用的信号
pkill命令
用途:根据特定条件终止相应的进程
常用命令选项:
-u:根据进程所属的用户名终止相应进程
-t:根据进程所在的终端终止相应进程
[root@localhost ~]# w | grep -v "root"
14:10:10 up 6:08, 4 users, load average: 0.00, 0.01, 0.00
USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT
teacher tty1 - 14:04 5:34 0.16s 0.16s -bash
hack pts/1 173.17.17.174 14:05 4:32 0.17s 0.17s -bash
[root@localhost ~]# pkill -9 -t pts/1
[root@localhost ~]# w | grep -v "root"
14:12:22 up 6:10, 3 users, load average: 0.00, 0.00, 0.00
USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT
teacher tty1 - 14:04 7:46 0.16s 0.16s -bash
↑踢出登录到系统的可疑用户hack
总结:
理解进程的概念
掌握基本的进程查看命令
掌握进程优先级的配置