1、什么是进程
(1)开发代码称之为程序,将开发的代码运行起来,称为进程
(2)当运行一个程序,那么将运行的程序叫进城
(3)当程序运行为进程后,系统会该进程分配内存,以及进程的身份和权限
(4)在进程的过程中,系统会有各种指标来表示当前运行的状态。
2、程序和进程的区别
(1)程序是数据和指令的集合,是一个静态的概念。如:/bin/ls和/bin/cp等二进制文件,同时程序可以长期存在系统里。
(2)进程是程序运行的过程,是一个动态的概念,晋城市存在生命周期的概念的,进程会随着程序的终止而销毁,不会永久存在系统里。
3、进程的生命周期
生命周期是指以个对象的生老病死,它的用处很广泛。
当父进程接收到任务调度时,会通过foc派子进程来处理,那么子进程会继承父进程属性
(1)子进程在处理任务代码时,父进程会进入等待状态…
(2)子进程在处理任务代码时,会执行退出,然后唤醒父进程来回收子进程的资源
(3)如果子进程在处理任务过程中,父进程退出,子进程没有退出,那么这些子进程就没有父进程来管理了,就成了僵尸进程。
注:每个进程都是父进程的PPID,子进程则是PID
3、监控进程状态
程序在运行后,需要了解进程的运行状态。查看进程的状态分为:静态和动态
(1)使用ps命令查看当前的进程状态(静态)
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
root 1 0.0 1.4 128408 6984 ? Ss 08:07 0:04 /usr/lib/systemd/systemd --switched-root --system --deserialize 22
root 2 0.0 0.0 0 0 ? S 08:07 0:00 [kthreadd]
root 3 0.0 0.0 0 0 ? S 08:07 0:00 [ksoftirqd/0]
root 5 0.0 0.0 0 0 ? S< 08:07 0:00 [kworker/0:0H]
root 6 0.0 0.0 0 0 ? R 08:07 0:00 [kworker/u256:0]
root 7 0.0 0.0 0 0 ? S 08:07 0:00 [migration/0]
root 8 0.0 0.0 0 0 ? S 08:07 0:00 [rcu_bh]
root 9 0.0 0.0 0 0 ? R 08:07 0:01 [rcu_sched]
root 10 0.0 0.0 0 0 ? S< 08:07 0:00 [lru-add-drain]
root 11 0.0 0.0 0 0 ? S 08:07 0:00 [watchdog/0]
root 13 0.0 0.0 0 0 ? S 08:07 0:00 [kdevtmpfs]
root 14 0.0 0.0 0 0 ? S< 08:07 0:00 [netns]
状 态 描 述
USER 启动进程的用户
PID 进程运行的ID
%CPU 进程占用CPU百分比
%MEM 进程占用内存百分比
VSZ 进程占用虚拟内存大小(单位KB)
RSS 进程占用物理内存时间大小(单位KB)
TTY 进程是有那个终端运行启动的tty1、pts/0等 ? 表示内核程序与终端无关
STAT 进程运行过程中的状态 man ps (/STATE)
START 进程的启动时间
TIME 进程占用CPU的总时间(为0表示还没超过秒)
COMMAND 程序的运行指令,【】属于内核状态的进程。没有【】使用户进程
(2)STAT状态意思
(3)top使用
[root@yangdan ~]# top
top - 17:38:20 up 9:30, 2 users, load average: 0.00, 0.01, 0.05
Tasks: 101 total, 1 running, 100 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
Tasks:101 total 任务总数 1 running 有进程正在运行
100 sleeping 100个睡眠
0 stopped 挂起,停止
0 zomnie 僵尸进程
0.0 us 进程占用cpu的百分比(用户进程)
0.0 sy 内核进程 (硬件)
0.0 ni 优先级的进程占用cpu的百分比
100.0 id 空闲的进程
0.0 wa 大量的等待-->
0.0 hi 硬中断
0.0 si 软中断
0.0 st 虚拟机占用物理cpu的时间