1.什么是进程
程序放置在存储媒体中(如硬盘,光盘,软盘等),为实体文件的型态存在
进程:程序被触发后,执行者的权限与属性、程序的程序码与所需数据等都会被载入内存中,操作系统并给予这个内存的单元一个识别码(PID:进程id),可以说,进程就是一个正在运行的程序,cpu没有完成的工作。
在System Monitor中查看进程
2.进程状态
R(Running):该程序正在运行中
S(Sleep):该程序目前正在睡眠状态(idle),但可以被唤醒(signal)
D(disk sleep) :不可中断的深度睡眠,在这个状态进程通常会等待IO的结束,kill -9都杀不死它
T (stop): 和D类似,不能直接唤醒,得拿命令处理(虽然stop,但进程并不是关闭),可能在工作控制(背景暂停)或
除错(traced)
Z (Zombie):僵尸状态,程序已经终止但却无法被移除至内存外
2.1 如何用命令行查看进程
所有打开的shell的id都不一样,都在bash里
图形方式查看:gnome-system-monitor
ps ##查看当前shell里的进程
ps a ##查看所有环境里面的进程信息
ps -a ##查看所有shell里面的进程信息(不包含环境进程信息)
ps -A ##查看所有的进程信息
ps -d ##查看系统中所有的进程信息(不包含shell进程信息(bash就是环境))
ps -e ##查看进程的详细信息(系统资源的调用)
ps x ##显示所有有输出设备的进程信息
ps -u ##显示进程用户信息
ps f ##显示进程的从属(父子)关系,一般父级进程结束了子进程也就结束了,但不是所有的都是这样。
举个例子:ps,ps a,ps -a
2.2 ps常用组合
所有的组合就是前面单个字符功能的集合
ps aux ##显示系统中所有进程并显示进程用户
ps ef ##显示进程详细信息并显示进程父子关系
ps ax ##显示当前系统中的所有进程
pstree ##显示当前系统的进程树
如图
ps aux ##图中显示了 系统中的所有进程(图片太长,没有截完)及用户,输入输出设备
ps ef ##图中的\就说明该行进程是上一行的子进程
pstree ##看起来就像一棵树,显示系统中进程中的父子关系(图没截完)
2.3 显示进程指定信息
ps -o XXX ##显示进程的指定信息
comm ##进程名称
user ##进程所有人
group ##进程所有组
%cpu ##进程cpu使用率
%mem ##进程内存使用率
pid ##进程id
nice ##进程优先级
2.4 进程排序
ps ax --sort=
+%cpu|-%cpu ##对进程在cpu使用率的逆序/正序
+%mem|-%mem ##对进程在内存使用率的逆序/正序
2.5 stat中显示的信息
S ##进程状态
l ##内存中有锁定空间
N ##优先级低
< ##优先级高
+ ##前台运行
s ##顶级进程
看STAT栏
3.进程优先级
3.1 进程的优先级范围: -20~19(数值越低优先级越高)
3.2 优先级查看:ps ax -o pid,nice,comm
NI显示得就是优先级
3.3 指定某个优先级开启进程
nice -n 优先级数字 进程名称
nice -n -5 vim ##开启vim并且指定程序优先级为-5
3.4 改变进程优先级
renice -n 优先级数字 进程pid
renice -n 15 3925 ##改变3925进程的优先级为15(如图,如果一个进程为所改变进程的子进程,那么优先级也随之改变)
4.环境中进程的前后台调用
jobs ##查看被打入环境后台的进程
ctrl + z ##把占有终端的进程打入后台
fg jobsnum ##把后台进程调回前台
bg jobsnum ##把后台暂停的进程运行
comm & ##让进程直接在后台运行
如图先用jobs命令查看被打入后台的进程,发现为空,然后人为把俩个进程打入后台(firefox,vim)然后用fg命令把firefox进程调回前台,在用jobs命令查看,发现只有vim进程被打入环境后台。
5.进程信号
5.1常用信号等级
1 ##进程重新加载配置
2 ##删除进程在内存中的数据
3 ##删除鼠标在内存中的数据
9 ##强行结束单个进程(不可能被阻塞,可能会有问题,因为是非正常结束)
15 ##正常关闭进程(可能被阻塞)
18 ##运行暂停的进程
19 ##暂停某个进程(不能在阻塞,可能会有问题,因为这是非正常暂停)
20 ##把进程打入后台 (可以阻塞)
man 7 signal ##查看信号详细信息
kill -信号 进程pid
killall -信号 进程名字
pkill -u studebt -信号
pkill -等级 -P 父级进程pid ##把父级进程低下子进程都做相应操作(看等级是什么)
例:将pid为18845进程的子进程正常关闭,再正常关闭18845进程,发现关不了,然后用-9强制关闭该进程,发现可以关闭
但是也有进程是用强制结束结束不了的,比如systemd进程,它是所有进程的的父进程(系统初始化进程),是所有进程的基础,没有它所有进程都不能运行,它自己不会杀死自己,系统设计者也不会允许这种情况出现,只有关机才能让它结束。
6.进程的动态监控
top
按一下以下字符就会实现相应功能
1 ##显示cpu每个核的负载
s ##调整刷新频率(我这台虚拟机默认每3秒刷新一次,想要改变刷新频率就按s,然后输入你想要的刷新频率数字,单位:秒)
c ##cpu负载排序
m ##内存使用量排序
h ##查看帮助
u ##查看指定用户进程
k ##对指定进程发起信号
q ##退出
7.控制服务
1 什么是服务
服务指在操作系统中,用以支持各种功能的程序.
2.用什么控制服务
系统初始化进程可以对服务进行相应的控制
3.当前系统初始化进程是什么
systemd ##系统初始化进程
pstree ##显示系统中的进程树
4.进程控制命令
ssh ----->sshd(sshd服务)
client server ##客户服务器
systemctl ##服务控制命令
ping 172.25.254.110 ##看能不能连通
ssh root@172.25.254.110 ##连通控制
注意(sshd只是一个例子,systenctl命令可以控制所有服务)
systemctl status sshd ##查看服务状态inactive(不可用),active(可用)
systemctl start sshd ##开启服务
systemctl stop sshd ##关闭服务
systemctl restart sshd ##重启服务
systenctl reload ssha ##重新加载服务配置
systemctl enload sshd ##设定服务开机启动
systemctl disable sshd ##设定服务开机不启动
systemctl list-units ##列出已经开启服务当前状态
systemctl list-unit-files ##列出所有服务开机启动的状态 disable,enable,static
systenctl list-dependencise ##列出服务的倚赖
systemctl set-default multi-user.target ##设定系统启动级别为多用户模式(无图形)
systemctl set-defaul graphical.target ##设定系统启动界别为图形模式
systemctl mask sshd.service ##把这个服务锁住
systemctl unmask sshd.wervice ##解锁这个服务
服务状态分为:
static (静态的),disabled (失效的),enabled(可执行的) ,masked(被锁状态)