1.什么是进程?
(1)进程与程序
在Linux系统当中,触发任何一个事件时,系统都会将它定义成为一个进程,并且给予这个进程一个ID,称为PID,同时依据启发这个进程的用户与相关属性关系,给予这个PID一组有效的权限设定。之后,这个PID能够在系统上面进行的动作,就和这个PID的权限有关。
程序是为了完成某种任务而设计的软件,是存储在磁盘上包含可执行的机器指令和数据的静态实体。
进程是一个程序一次执行的过程,在操作系统中执行特定的任务,是一个随执行过程不断变化的实体,和程序要包含指令和数据一样,进程也包含程序计数器和所有CPU寄存器的值,同时它的堆栈中存储着如子程序参数、返回地址以及变量之类的临时数据。当前的执行程序,或者说进程,包含着当前处理器中的活动状态。进程是Linux系统中基本的调度单位。
进程具有独立的权限与职责,如果系统中某个进程崩溃,它不会影响到其余的进程,每个进程运行在其各自虚拟地址空间中,通过内核控制下的通信机制,它们之间才能发生联系。
进程在生命期内将使用系统中的资源,它利用系统中的CPU来执行指令,用物理内存来放置指令和数据。使用文件系统提供的功能打开并使用文件,同时直接或间接地使用物理设备。)
(2)进程状态
状态 | 定义 |
---|---|
R | 可执行状态(RUNNING,READY) |
S | 可唤醒睡眠状态 |
D | 不可唤醒睡眠状态 |
T | 暂停状态 |
Z | 僵死态 |
R:ready准备完全,所有东西都已经加载完毕,就等着cpu对它进行处理(处在进程队列),running是cpu正在进行处理的那个进程。
S:程序在使用cpu进行处理时,所使用的cpu时间已经到达了限制,那么cpu就会立即把它终止掉,去处理下一个进程,等处理完毕,再去唤醒刚才的程序。
D:一般情况下,程序不可唤醒状态发生在一个程序需要去加载磁盘里比较大的文件时,在程序运行时突然需要这个数据了,它需要去磁盘里面加载,当它在没有加载完毕之前,它的状态是不可被唤醒的。
T:停止状态,打开一个gedit,编辑内容,然后在shell界面执行“ctrl+z”将gedit进程打入后台,gedit编辑任务就暂停了(一个进程停止不等于进程结束)。
Z:在系统当中,程序在运行过程中,会用到系统资源,程序结束后,程序所占用的系统资源应该全部被释放掉。
有一类程序:这个程序本身已经结束了,但它所使用到的系统资源还抓着不放,这样的进程状态叫做僵死态。一般情况下,是因为系统当中的程序在编写时候bug所导致的,就是它在结束以后仍然持续的去抓着系统当中的资源不放。
(3)线程与进程的区别在哪里?
线程是程序调用的最小单位;进程是资源调用的最小单位。
进程和进程之间的沟通,因为系统资源分配问题,沟通不容易,为了使资源调用更加快捷,所以提出了线程;
线程和线程之间的数据是互通的,它们共用了一部分环境变量,使得线程和线程之间的沟通更快捷一点。
2.进程查看
(1)图形方式查看:gnome-system-monitor
(2)进程查看命令ps:静态查看进程信息
pstree 查看进程树
系统启动后,systemd为初始化程序,不会自己关闭结束自己,只有关机才可以,或者结束所有子进程后,该初始化进程才会被关闭;
一般由初始化程序来控制其它进程的开始和结束;
并不是父级进程结束以后子进程一定会结束,剩下的子进程被称为孤儿进程
ps自己所在shell中运行的进程
直接执行不加任何选项的ps命令时,则只显示当前用户会话中打开的进程。
PID表示该进程的唯一ID号
TTY表示该进程在哪个终端上运行。不是从终端启动的进程或者与终端机无关的进程显示为 ?
TIME该进程使用CPU的累计时间
CMD该进程所运行的命令
[root@workstation Desktop]# ps
PID TTY TIME CMD
2549 pts/0 00:00:00 bash
2753 pts/0 00:00:00 ps
ps a 在shell中运行的所有进程,包括shell的环境bash
[root@workstation Desktop]# ps a
PID TTY STAT TIME COMMAND
1155 tty1 Ssl+ 0:00 /usr/libexec/gdm-wayland-session gnome-session --auto
1239 tty1 Sl+ 0:00 /usr/libexec/gnome-session-binary --autostart /usr/sh
1279 tty1 Sl+ 0:05 /usr/bin/gnome-shell
2328 tty2 SNl+ 0:00 /usr/libexec/tracker-miner-fs
2350 tty2 Sl 0:00 /usr/libexec/ibus-engine-simple
2549 pts/0 Ss 0:00 bash
3039 pts/0 R+ 0:00 ps a
[root@workstation Desktop]#
ps -a 在shell中运行的所有进程,不包括shell环境本身信息bash
[root@workstation Desktop]# ps -a
PID TTY TIME CMD
1239 tty1 00:00:00 gnome-session-b
1279 tty1 00:00:05 gnome-shell
2316 tty2 00:00:00 seapplet
2325 tty2 00:00:00 tracker-miner-a
2328 tty2 00:00:00 tracker-miner-f
2350 tty2 00:00:00 ibus-engine-sim
2768 pts/0 00:00:00 ps
[root@workstation Desktop]#
ps -u 以用户为归类来显示进程状态信息
字段 | 解释 |
---|---|
USER | 用户名称 |
PID | 进程ID |
%CPU | CPU用量百分比 |
%MEM | 内存用量百分比 |
VSZ | 占用虚拟内存大小 |
RSS | 常驻内存集大小 |
TTY | 字符终端 |
STAT | 进程状态 |
START | 运行时间 |
TIME | 占用cpu时间 |
COMMAND | 进程名称 |
[root@workstation Desktop]#ps -u
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
root 189