1 进程:正在运行的程序
1.1 进程是什么?
程序放置在存储媒体中(如硬盘、光盘、软盘、磁带等),为实体文件的形态存在
进程:程序被触发后,执行者的权限与属性、程序的程序码与所需数据等都会被载入内存中,操作系统并给予这个内存内的单元一个识别码(PID),可以说,进程就是一个正在运行的中的程序。总结来说,每个执行的程序(代码)都称为一个进程, 每一个进程都分配一个ID号。
1.2 进程的状态
状态 | 含义 |
---|---|
R(running) | 正在运行 |
S(sleep) | 睡眠状态,可以被唤醒 |
D | 不可被唤醒的睡眠状态,通常进程可能在等待i/o的情况 (磁盘读取) |
T(stop) | 停止状态,默认不能唤醒,可以用命令手段强制唤醒,不等于结束 |
Z(zombie) | 僵尸状态,程序已经终止但却无法被移出至内存外 |
R、S、 D 为都系统运行的状态,T为停止状态,Z为僵尸状态
1.3 查看进程
1.3.1 图形方式查看
命令行输入:gnome-system-monitor
1.3.2 命令方式查看:
命令 | 选项 | 含义 |
---|---|---|
ps | 当前shell的中进程 | |
ps | a | 所有shell中运行的进程,有环境本身,没有系统资源 |
ps | -a | 所有shell中运行的进程,不包含环境(bash) |
ps | -A | 所有运行的进程(系统中的全部),包含环境,类似pa a |
ps | -d | 显示系统中所有进程,不包含shell |
ps | -u | 显示进程用户信息 |
ps | x | 列出系统中所有运行包含tty输出设备的进程 |
ps | f | 显示进程的父子关系 |
ps | e | 显示进程的详细信息(系统资源的调用) |
[kiosk@foundation72 ~]$ ps -u #显示用户信息,其他选项查看类似
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
kiosk 2577 0.0 0.0 116420 3088 pts/0 Ss 19:12 0:00 bash
kiosk 6131 0.0 0.0 151056 1828 pts/0 R+ 23:29 0:00 ps -u
1.3.3 命令常用组合:
命令 | 选项 | 含义 |
---|---|---|
ps | aux | 显示系统中所有进程并显示进程用户 |
ps | ef | 显示进程详细信息并显示进程父子关系 |
ps | ax | 显示当前系统中的所有进程 |
pstree | 显示当前系统的进程树 |
注:父级进程结束一般字程序就结束,但是也有例外,父级关闭后还运行的叫孤儿进程,受系统初始化进程控制
1.4 显示进程指定信息
命令 | 选项 | 作用对象 | 作用对象 |
---|---|---|---|
ps | -o | comm | 显示名称 |
ps | -o | user | 显示用户 |
ps | -o | group | 显示进程所有组 |
ps | -o | nice | 显示进程优先级 |
ps | -o | %cpu | 显示cpu使用率 |
ps | -o | %mem | 显示内存使用率 |
ps | -o | pid | 显示进程id |
ps | -o | stat | 显示进程状态 |
[kiosk@foundation72 ~]$ ps -o comm,user,group,nice,%cpu,%mem
COMMAND USER GROUP NI %CPU %MEM
bash kiosk kiosk 0 0.0 0.0
ps kiosk kiosk 0 0.0 0.0
1.5 进程排序
ps ax --sort=%mem 显示当前系统中的所有进程,并且按内存使用率由小到大排序
ps ax --sort=-%cpu 显示当前系统中的所有进程,并且按cpu使用率由大到小排序
例:输出所有进程内存使用率排前5的pid
[kiosk@foundation72 ~]$ ps -A --sort=-%mem -o pid| head -n6 | tail -n 5
2624
2046
1530
2413
2552
1.6 stat中显示信息的含义
显示信息 | 含义 |
---|---|
S | 进程状态 |
s | 父进程,顶级进程 |
l | 在内存中有锁定空间 |
N | 优先级低 |
< | 优先级高 |
+ | 在前台运行 |
1.7 进程优先级
1.7.1 进程优先级范围:-20~19
1.7.2 优先级查看 ps ax -o nice,comm
1.7.3 指定某个优先级开启进程:
nice -n 优先级数字 进程名字
nice -n -10 vim 开启vim并以-10为vim的优先级
调整优先级:renice -n 优先级数字 进程id
注:优先级负号,越负说明优先级越高
1.8 进程后台前台切换
ctrl+z 把正在运行的打入后台挂起,不运行
jobs 查看后台的进程 ,+号是正在进行,
bg jobsnum 把后台暂停的进程运行起来
fg jobsnum 把后台的进程调回前台
comm & 直接让命令在后台进行
gedit & 开启时在后台执行,不占用终端(默认是占用终端的)
注:如果fg不加后面的jobsnum, 默认调回+号的 ,+调回以后,-(次优先)变为+
1.9 进程信号
1.9.1 常用信号等级:(能够处理的)
信号等级 | 含义 |
---|---|
1 | 进程不关闭的情况下,重新加载配置 |
2 | 删除进程在内存中的数据 相当于ctrl+c 释放行命令符 |
3 | 删除鼠标在内存中的数据 |
9 | 强行结束单个进程(不能被阻塞) |
15 | 正常关闭进程 (可能会被阻塞) |
18 | 运行暂停的进程 |
19 | 暂停某个进程 (不能被阻塞) |
20 | 把进程打入后台 (可以被阻塞) |
man 7 singal 查看信号详细信息
1.9.2 处理进程信号
kill -信号 进程pid
killall -信号 进程名字
pkill -u student -信号 加的是进程条件,最多的是对用户发起的进程进行处理
#!##############################################################
2 进程的动态监控
2.1 top
top命令实时动态刷新显示服务器状态信息,并且可以通过交互式命令自定义显示内容
2.2 各行各列的含义:
第一行:显示服务器概况
各列依次为:18:16:34 up 11 min 服务器运行了多长时间;2 users当前有多少用户登陆;load average: 0.05, 0.24, 0.25
平均负载(1分钟,5分钟,15分钟)
第二行:进程信息
各列依次为:207 total 进程总数;1 running 正在运行进程数;206 sleeping睡眠进程数;0 stopped停止进程数; 0 zombie僵尸进程数
第三行:cpu信息
%cpu(s):
2.1 us 用户空间cpu占比
0.6 sy 内核空间cpu占比
0.0 ni 用户空间改过优先级的进程cpu占比
97.3 id 空闲cpu占比
0.0 wa 待输入输出cpu占比
0.0 hi 硬中断占比
0.0 si 软中断占比
第四行:内存信息
3926480 total 物理内存总量
2287172 free 空闲总量
804996 used 使用中总量
834312 buff/cache 缓冲的内存量
第五行:交换分区信息
3932156 total 交换区总量
3932156 free 空闲总量
0 used 使用总量
2696140 avail Mem 可用总量
第七行及以下显示了各进程(任务)的状态监控
内容 | 表示意义 |
---|---|
PID | 进程ID |
USER | 进程所有者 |
PR | 进程优先级 |
NI | nice值,用来调整进程优先级 |
VIRT | 进程使用的虚拟内存总量,单位KB。VIRT=SWAP+RES |
RES | 进程使用的、未被换出的物理内存大小,单位kb。RES=CODE+DATA |
SHR | 共享内存大小,单位KB |
S | 进程状态 |
%CPU | 上次更新到现在的CPU占用百分比 |
%MEM | 进程所占用的物理内存百分比 |
TIME+ | 进程使用的CPU时间总计,单位1/100秒 |
COMMAND | 命令名 |
2.3 交互式命令:
命令 | 结果 |
---|---|
1 | 显示 cpu每个核的负载 |
s | 调整刷新频率 |
c | cpu负载排序 |
m | 内存使用量排序 |
h | 查看帮助 |
u | 查看指定用户进程 |
k | 对指定进程发起信号 |
q | 退出 |
k命令的结果如下,其他结果类似可自行验证
3 控制服务
3.1 systemd
系统初始化进程,系统开启的第一个进程,pid为1
系统初始化进程可以对服务进行相应的控制
3.2 服务控制命令: systemctl
以sshd服务为例:
命令 | 对应的服务操作 |
---|---|
systemctl status sshd | 查看服务状态 inactive active |
systemctl start sshd | 开启服务 |
systemctl stop sshd | 关闭服务 |
systemctl restart sshd | 重启服务 |
systemctl reload sshd | 重新加载服务配置 |
systemctl enable sshd | 设定服务开机启动 |
systemctl disable sshd | 设定服务开机不启动 |
systemctl list-units | 列出已经开启服务当前状态 |
systemctl list-units-files | 列出所有服务开机启动的状态disable enable static(不可更改) |
systemctl list-dependencies | 列出服务的依赖 |
systemctl set-default multi-user.target | 设定系统启动级别为多用户模式(无图形) |
systemctl set-default graphical.target | 设定系统启动级别为图形模式 |
注:服务器并非指硬件,指的是装有服务软件的主机,该端称为服务端。连接该服务端使用服务的为客户端