一、进程定义
-
进程的定义
1、程序是静态的代码文件
2、进程是指程序运行时的形态
3、进程是程序的一个副本
4、进程是有生命周期的(准备期,运行期,终止期) -
进程&线程
1、进程是资源调用的最小单位
2、线程是进程的最小单位
3、当进程是多任务,cpu是多核心时,多任务应该同时被每个核心处理,每个核心处理的任务叫做线程,线程的资源是共享的 -
进程的状态
R(TASK_RUNNING) #可执行态(cpu正在处理或者等待被处理)
S(TASK_INTRRUPTABLE) #可唤醒休眠
D(TASK_UNINTRRUPABLE) #不可唤醒休眠
T(TASK_STOP) #暂停状态(人为的)
Z(EXIT_ZOMBIE) #僵死态
二、进程查看命令
-
gnome-system-monitor ##图形进程查看工具
-
ps ##进程查看
ps 命令有三种执行风格unix bsd GUN
1、unix执行风格
ps a #与终端相关的进程
ps x #与终端无关的进程
ps u #用户信息归类的查看方式
ps f #按层级关系查看进程
ps o #显示指定参数(pid comm nice pri pcpu ppid stat user group)
2、bsd 执行风格
ps -e #显示所有进程
ps -f #显示进程信息的完整格式
ps -H #显示进程信息的层级结构
ps -o #显示指定参数
3、- -sort=指定参数 #按照指定参数进行排序
ps ax 显示信息如下(显示所有进程)
PID #进程id
TTY #进程用到的终端
STAT #进程状态
TIME #进程占用cpu时长
COMMAND #进程名称
ps aux 显示信息如下
USER #进程所有人
PID #进程id
%CPU #进程使用cpu的用量
%MEN #进程使用的内存用量
VSZ #进程使用的虚拟内存大小
RSS #进程常驻内存中的数据大小
TTY #进程用到的终端
STAT #进程状态
START #进程运行时长
TIME #进程占用cpu时长
COMMAND #进程名称
-
pgrep #进程过滤
pgrep -u uid #只显示指定用户进程
pgrep -U USER #只显示指定用户进程
pgrep -t tty #只显示指定终端进程
pgrep -l #显示进程名称
pgrep -a #显示进程完整名称
pgrep -P pid #显示该进程下的子进程id -
pidof 指定进程 #查看指定进程的pid
-
top #动态进程查看
top中的内容信息显示
(1)3:52:48 ##系统时间
(2)up 18 min ##运行时长
(3)1 user ##系统中有1个用户正在登陆
(4)load average:0.00,0.03,0.10 ##三个数分别代表不同时间段的系统平均 负载(一分钟、五分钟、以及十五分钟)
(5)318 total ##任务总量
(6)3 running ##正在运行的个数
(7)315 sleeping ##休眠进程的数量
(8)0 stopped ##被暂停进程数量
(9)0 zombie ##僵死进程的数量
(10)0.3 us ##用户空间
(11)0.0 sy ##内核空间
(12)0.0 ni ##nice值调整时间
(13)99.7 id ##空闲时间
(14)0.0 wa ##等待io时间
(15)0.0 hi ##处理硬件中断时间
(16)0.0 si ##处理软件中断时间
(17)0.0 st ##被偷走的时间
(18)MiB MEM ##内存分区用量
(19)1800.6 total ##内存分区的总量
(19)188.3 free ##内存分区的空闲
(20)1257.7 used ##被占用的总量
(21)354.5 buff/cache ##缓存
(22)MiB Swap ##交换分区用量(后面的数据和内存分区的表示是一样的)
top命令的参数
top -d 数字 ##指定刷新频率(默认刷新频率为3秒钟一次)
top -b ##动态进程以批次方式显示
top -n 数量 ##指定显示的批次数量
top 内部指令(进入top后使用的命令)
P ##根据CPU使用的百分比进行排序
M ##根据内存排序
T ##累计占用CPU时间排序
l ##关闭/开启uptime信息
t ##关闭/开启cpu&task
s ##指定刷新频率
k ##对进程进行操作
u ##查看指定用户进程
三、进程优先级
系统是多任务多用户的操作模式,任务的重要性是有区分的,通过优先级来确定任务的重要性
优先级范围 :0-139
内核自控优先级范围:0-99
用户可控优先级:100-139
nice:-20~19(linux模式下的用户可控优先级范围,相当于100-139)
pri :39-0(unix模式下的用户可控优先级范围,相当于100-139)
- renice -n nice pid ##更改指定pid的优先级
用到的监控命令 ps ax -o pid,nice,pri,comm | grep vim
- niec -n nice 指定用户 ##指定优先级打开进程
- 进程状态显示
S ##sleeping
< ##优先级高
s ##顶级进程
T ##stop进程
N ##优先级低
R ##正在运行的进程
+##运行在前台
用到的监控命令 ps ax -o pid,nice,pri,comm,stat | grep gedit(stat用来查看进程状态)
四、进程前后台调用
- < ctrl >+< z > ##把占用shell的进程打入后台挂起
- bg ##把后台挂起的进程运行起来
- fg #把后台进程调回前台
- & ##进程运行在后台(在启动进程的同时就把进程运行在后台,不占用当前shell)
- jobs ##查看当前shell中在后台的所有工作
五、进程信息号
- 进程信号
1 ##重新加载在系统配置文件(source)
2 ##清空内存中的进程数据
3 ##清空内存中的鼠标(ctrl+\)
9 ##强行结束进程(不能被堵塞)
15##正常关闭进程(可能会被堵塞)
18##运行被暂停的进程
19##暂停进程(不会被堵塞)
20##暂停进程(会被堵塞) - 进程信号控制工具
kill 进程信号 pid(对指定进程通过进程信号进行控制)
-
killall 进程信号 进程名字(对同一类进程进行相应操作)
-
pkill 进程信号 进程条件(对同一条件进程进行相应操作)
六、systemd守护进程
- 守护进程
替内核分担程序管控的程序
通常pid为1 - systemctl命令(管理系统服务的控制命令)
systemctl strat 服务 ##开启服务
systemctl stop 服务 ##关闭服务
systemctl status 服务 ##查看服务的状态
systemctl reload 服务 ##重新加载服务(在不重启的情况下改变它的系统配置)
systemctl restart 服务 ##重新启动服务(先stop再start)
systemctl enable 服务 ##设定开机启动(不会影响当前服务状态)
systemctl enable --now 服务 ##设定服务开机启动并当前开启服务
systemctl disable 服务 ##设定服务开机不启动(不会影响当前服务状态)
systemctl list-units 服务 ##查看系统所有服务当前状态
systemctl list-unit-files 服务 ##查看服务开机状态
systemctl list-dependencies 服务 ##列出服务依赖性
systemctl mask 服务 ##冻结服务
systemctl unmask 服务 ##解锁服务
systemctl set-default 模式 ##设定系统运行模式(无图形网络模式multi-user.tartget/有图形网络模式graphical.target)
systemctl get-default ##查看系统运行模式(runlevel查看当前系统运行的模式数字化显示)
系统运行模式0-6
0 ##POWEROFF(关机)
1 ##single(单用户)
2 ##noG+NETWORK(无图形的网络模式)
3 ##(无图形的网络模式)
4 ##(无图形的网络模式)
5 ##G+NETWORK(有图形的网络模式)
6 ##REBOOT (重启)
七、系统中的登录审计
- w ##显示正在登陆系统的账号(该信息储存在/var/run/utmp)
w -i ##显示登录来源
- last ##显示登录成功现在已经退出的(显示的信息放在/var/log/wtmp)
- lastb ##显示试图登录但未成功的(显示的信息放在/var/log/btmp)