1、程序
什么是程序?
-
是一组计算机能识别和执行的指令,运行于电子计算机上,满足人们某种需求的信息化工具
-
用于描述进程要完成的功能,是控制进程执行的指令集
2、进程
2.1、什么是进程
运行中的程序的一个副本,是被载入内存的一个指令集合,是资源分配的单位,
-
进程ID(Process ID,PID)号码被用来标记各个进程
-
UID、GID语境决定对文件系统的存取和访问权限
-
通常从执行进程的用户来继承
-
存在生命周期
-
都由其父进程创建
进程创建:
-
init:第一个进程,从 CentOS7 以后为systemd
-
进程:都由其父进程创建,fork(),父子关系,CoW:Copy On Write 写实更新,有数据写入子进程需要新的内存空间
2.2 、进程具有的特征:
-
动态性:进程是程序的一次执行过程,是临时的,有生命期的,是动态产生,动态消亡的;
-
并发性:任何进程都可以同其他进程一起并发执行;
-
独立性:进程是系统进行资源分配和调度的一个独立单位;
-
结构性:进程由程序、数据和进程控制块三部分组成。
OOM 即 Out Of Memory,“内存用完了”
多线程和单线程
可以使用pstree查看

或者
grep -i threads /proc/进程的PID/status
prtstat 进程pid号
2.3、进程状态
-
创建状态:进程在创建时需要申请一个空白PCB(process control block进程控制块),向其中填写控制和管理进程的信息,完成资源分配。如果创建工作无法完成,比如资源无法满足,就无法被调度运行,把此时进程所处状态称为创建状态
-
就绪状态:进程已准备好,已分配到所需资源,只要分配到CPU就能够立即运行
-
执行状态:进程处于就绪状态被调度后,进程进入执行状态
-
阻塞状态:正在执行的进程由于某些事件(I/O请求,申请缓存区失败)而暂时无法运行,进程受到阻塞。在满足请求时进入就绪状态等待系统调用
-
终止状态:进程结束,或出现错误,或被系统终止,进入终止状态。无法再执行
进程更多的状态:
-
运行态:running
-
就绪态:ready
-
睡眠态:分为两种,可中断:interruptable,不可中断:uninterruptable
-
停止态:stopped,暂停于内存,但不会被调度,除非手动启动
-
僵死态:zombie,僵尸态,结束进程,父进程结束前,子进程不关闭,杀死父进程可以关闭僵死态 的子进程
2.4、进程中通讯
同一主机:pipe 管道,单向传输 cmd1 | cmd 2
不同主机:socket=IP和端口号
2.5、进程优先级
可以用top看 pr和ni为优先级

进程优先级调整
-
静态优先级:100-139
-
进程默认启动时的nice值为0,优先级为120
-
只有根用户才能降低nice值(提高优先性)
2.6、操作系统分类:
-
协作式多任务:早期 windows 系统使用
-
抢占式多任务:Linux内核,CPU的总控制权在操作系统手中,操作系统会轮流询问每一个任务是否需要使用 CPU ,需要使用的话就让它用,不过在一定时间后,操作系统会剥夺当前任务的 CPU 使用权,把它排在询问队列的最后,再去询问下一个任务
进程类型:
-
守护进程: daemon,在系统引导过程中启动的进程,和终端无关进程
-
前台进程:跟终端相关,通过终端启动的进程
3、命令
3.1、ps命令
ps 即 process state,可以查看进程当前状态的快照,默认显示当前终端中的进程,Linux系统各进程的相关信息均保存在/proc/数字 目录/status 下的文件中
常用 ps aux | grep 程序名

| 表头 | 含义 |
|---|---|
| USER | 该进程是由哪个用户产生的。 |
| PID | 进程的 ID。 |
| %CPU | 该进程占用 CPU 资源的百分比,占用的百分比越高,进程越耗费资源。 |
| %MEM | 该进程占用物理内存的百分比,占用的百分比越高,进程越耗费资源。 |
| VSZ | 该进程占用虚拟内存的大小,单位为 KB。 |
| RSS | 该进程占用实际物理内存的大小,单位为 KB。 |
| TTY | 该进程是在哪个终端运行的。其中,tty1 ~ tty7 代表本地控制台终端(可以通过 Alt+F1 ~ F7 快捷键切换不同的终端),tty1~tty6 是本地的字符界面终端,tty7 是图形终端。pts/0 ~ 255 代表虚拟终端,一般是远程连接的终端,第一个远程连接占用 pts/0,第二个远程连接占用 pts/1,依次増长。?代表和终端无关,系统进程 |
| STAT | 进程状态。常见的状态有以下几种: -D:不可被唤醒的睡眠状态,通常用于 I/O 情况。 -R:该进程正在运行。 -S:该进程处于睡眠状态,可被唤醒。 -T:停止状态,可能是在后台暂停或进程处于除错状态。 -W:内存交互状态(从 2.6 内核开始无效)。 -X:死掉的进程(应该不会出现)。 -Z:僵尸进程。进程已经中止,但是还是占用硬件资源。 -<:高优先级(以下状态在 BSD 格式中出现)。 -N:低优先级。 -L:被锁入内存。 -s:包含子进程。 -l:多线程(小写 L)。 -+:位于后台。 |
| START | 该进程的启动时间。 |
| TIME | 该进程占用 CPU 的运算时间,注意不是系统时间。 |
| COMMAND | 产生此进程的命令名。 |
3.2、top
实时查看
ps 命令可以一次性给出当前系统中进程状态,但使用此方式得到的信息缺乏时效性,并且,如果管理员需要实时监控进程运行情况,就必须不停地执行 ps 命令,这显然是缺乏效率的。
为此,Linux 提供了 top 命令。top 命令可以动态地持续监听进程地运行状态,与此同时,该命令还提供了一个交互界面,用户可以根据需要,人性化地定制自己的输出,进而更清楚地了进程的运行状态。

第三行为cpu占用
top还有个升级版htop
4、进程的启动

4.1手动启动
-
前台启动:通过终端启动,且启动后一直占据终端
-
后台启动:可通过终端启动,但启动后即转入后台运行(释放终端)
让作业运行于后台
-
运行中的作业: Ctrl+z 放到后台 但是会停止作业
-
尚未启动的作业: COMMAND &
4.2、小命令
1.jobs 查看后台任务列表
2.bg 继续任务 bg 工作号
3.kill 结束进程 kill -9 强制结束
5、定期执行
5.1、at
在2023 10 1 11点11分执行这个文件(一次性任务)

5.2、crontab
创建计划任务

每两分钟执行一次


444




被折叠的 条评论
为什么被折叠?



