程序和进程
一、定义
程序:
计算机程序(Computer Program),港、台译做电脑程式。计算机程序是一组计算机能识别和执行的指令,运行于电子计算机上,满足人们某种需求的信息化工具。
特点:
1、保存在硬盘、光盘等介质中的可执行代码和数据
2、是静态保存的代码
进程:
进程(Process)是计算机中的程序关于某数据集合上的一次运行活动,是系统进行资源分配和调度的基本单位,是操作系统结构的基础。在早期面向进程设计的计算机结构中,进程是程序的基本执行实体;在当代面向线程设计的计算机结构中,进程是线程的容器。程序是指令、数据及其组织形式的描述,进程是程序的实体。
特点:
1、在CPU及内存中运行的程序代码
2、动态执行的代码
3、父、子进程
每个程序可以创建一个或者多个进程
二、父、子进程
进程都会借父进程以复制(fork)的方式产生一个一模一样的子进程。然后被复制出来的子进程再以exec的方式来执行要执行的进程,最终就成为一个子进程。
特殊进程
僵尸进程
当父进程存在,子进程无法联系父进程正常结束时,变长僵尸进程,依旧占据内存。
后果:大量占用内存
孤儿进程
父进程结束了,子进程还未结束时。成为孤儿进程。通常通过systemd进程来替代父进程。
处理
杀掉僵尸进程,即杀掉父进程,让僵尸进程转变为孤儿进程。
三、进程的五大状态
1、可运行状态:正常运行,没有异常
2、睡眠状态(可中断):可中断–工作没结束,等待下次唤醒
3、睡眠状态(不可中断):系统中某些进程正在运行,不可中断。
4、僵死状态:僵尸进程,理应完全结束,但是未结束。
5、停止状态
6、已死状态
CPU同一时刻只能运行一个进程
CPU时间片—为每一个进程分配时间
四、查看进程信息
1、PS命令
ps //当前终端下运行的程序
ps aux //以用户形式展示进程信息
ps -elf //查看静态的进程统计信息
USER:用户
PID:进程号
%CPU:占CPU%
%MEM:占内存%
VSZ:分配的总的虚拟内存(KB)
RSS:实际用到的物理内存
TTY:运行终端(tty1-本地登录,?不依赖终端,pts远程)
STAT:状态(可中断S,不可中断D,R正在运行,Z僵死,T停止(s控制性,<具有高优先级,N低优先级…))
START:(进程触发时间)
TIME:(占有CPU的时间)
COMMAND:(命令【内核态进程】,不带【】用户态进程)
ps -ef //查看父进程
ps -elf //查看更详细的父进程
其中:
PRI:优先级,越小越优先,无法人为更改
NI:nice值,在pri优先级的基础上进行调整,可以人为更改
PRI:60,NI:-20,最终优先级40
ps 类似快照,看当前时间进程状态
PS命令选项总结
ps a //所有终端下的所有信息
ps u //使用以用户位注的格式输出进程信息,当前用户
ps x //显示当前用户在所有终端下的进程信息
ps -e //显示系统内的所有进程信息
ps -f //使用完整的格式显示进程信息
ps -l //使用长格式显示进程信息
ps -o //指定输出字段
pstree //查看进程树
pstree -u //看进程由哪个用户产生
pstree -p //显示PID
2、top命令
我们可以通过top命令实时显示当前的状态。
(默认排序,cpu%大小,占的越多越靠前)
具体解释进程的属性:
第一行是任务队列信息
1、22:56:24 : 系统时间
2、up 11:55: 系统已运行时长
3、user :当前登录用户数
4、load average: 0.00, 0.01, 0.05 :系统负载,即单位时间内系统处理的任务数,后面三个数值分别为1分钟、5分钟、15分钟前到现在的平均值
第二行为进程信息
1、Tasks :总进程数
2、running :正在运行的进程数
3、sleeping :休眠的进程数
4、stopped :中止的进程数
5、zombie :僵死的进程数
第三行为CPU的信息
1、us :用户占用
2、sy :内核占用
3、ni :优先级调度占用
4、id :空闲CPU,要了解空闲的 CPU 百分比,主要看%id 部分
5、wa:I/O 等待占用
6、hi :硬件中断占用
7、si :软件中断占用
8、st :虚拟化占用
第四行为内存的信息
1、total:总内存空间
2、free :空闲内存
3、used:已用内存
4、buff/cache:物理内存和交换内存的缓冲区总和
第五行为交换空间的信息
1、total:总交换空间
2、free :空闲交换空间
3、used:已用交换空间
4、avail Mem:可用物理空间
其中,我们可以通过一些命令查看
M //按内存占用量降序排列
P //默认排序按cpu占用的百分比降序排列
N //按PID 降序排列
H //提供帮助
Q //退出
s //更新时间(默认3S显示一次)
z 变色
1 显示所有cpu
3、pgrep命令
主要选项
pgrep -l //查看进程和进程号
pgrep -u //查看用户得进程和进程号
pgrep -l -o //匹配多个进程时,显示进程号最小的
pgrep -l -n //匹配多个进程时,显示进程号最小的
五、调度程序信息
某些时候我们在编辑内容的时候会遇到各种状况,比较事情的轻重缓急,有时候需要先把手上编辑的文件放一放,因为有一些配置文件,一旦保存就会生效,所以这时候就要学会把文件放在后台,类似于linux的挂起,方便后期继续操作:
1.命令模式:ctrl+z:调到后台
2.命令写到一半想要存放后台 直接在命令后面加上“&”
3.系统视图下 jobs:查看后台进程
4.系统视图下 fg + 任务号:调出到前台
5.若命令后面不加&,中间摁键:ctrl+z:暂停放在后台;bg:取消暂停后台继续运行
6.直接中断进程:ctrl+c
7.kill -9 %1:杀死后台进程号1,杀后台 要用% 杀
六、终止程序信息
一般用户在前台执行某个进程的时候,可以ctrl +c组合键强制进行中断,但是当ctrl +c无法中断的时候,可以使用 kill killall pkill 这些命令进行中断。
命令选项
kill命令
kill 进程号 //通过进程号友好杀死进程
kill -l //查看可用选项
kil -1 //重启
kill -9 //强制杀死
kill -15 //程序流程走完再死
pkill命令
pkill -u 用户 //杀死指定用户的所有进程
pkill -u 用户 用户 //杀死多个指定用户的所有进程
pkill -9 //强制杀死
pkill -f 'ping8.8.8.8' //终止程序