进程
1.进程是什么
计算机上所有可运行的软件,通常也包括操作系统,被组织成若干顺序进程(sequential process),简称进程(process)。一个进程就是一个正在执行程序的实例,包括程序设计器、寄存器和变量的当前值。一个进程是某种类型的一种活动,它有程序、输入、输出以及状态。单个处理器可以被若干进程共享,它使用某种调度算法决定何时停止一个进程的工作,并转而为了另一个进程服务功能
每个进程都有一个唯一的标识符(PID),内核通过这个标识符来识别不同的进程,同时,进程标识符(PID)也是内核提供给用户程序的接口,用户程序通过PID对进程发号施令。PID是32位的无符号整数,它被顺序编号:新创建进程的PID通常是前一个进程的PID加1。然而,为了与16位硬件平台的传统Linux系统保持兼容,在Linux上允许的最大PID号是32767,当内核在系统中创建第32768个进程时,就必须重新开始使用已闲置的PID号。在64位系统中,PID可扩展到4194303。
2.5种进程状态
R (TASK_RUNNING),可执行状态 | 表示进程要么正在执行,要么正在准备执行。 |
---|---|
S (TASK_INTERRUPTIBLE),可中断的睡眠状态 | 表示进程被阻塞(睡眠),只有当某个条件是TRUE时,其状态相应的设置为 TASK_RUNNING。它可以被信号和wake_up唤醒 |
D (TASK_UNINTERRUPTIBLE),不可中断的睡眠状态。 | 进程处于睡眠状态,但是此刻进程是不可中断的。 |
T (TASK_STOPPED or TASK_TRACED),暂停状态或跟踪状态 | 进程收到停止信号后会停止运行 |
Z (TASK_DEAD - EXIT_ZOMBIE),退出状态,进程成为僵尸进程 | 表示进程的执行被终止,但是其父进程还没有使用 wait() 等系统调用来获知它的终止信息。 |
3 .进程查看 ps
ps
参数 | 作用 |
---|---|
-A | 所有进程 |
-a | 在环境中的所有进程,不包含环境信息 |
-u | 显示进程用户信息 |
a | 显示当前环境中运行的进程,包含环境信息 |
x | 列出系统中所有运行包含tty输出设备 |
f | 显示进程的父子关系 |
e | 显示进程的详细信息(系统资源的调用) |
ps 组合命令 —
ps | aux 显示系统中所有进程并显示进程用户 |
---|---|
ps ef | 显示进程详细信息并显示进程父子关系 |
ps ax | 显示当前系统所有进程 |
pstree | 显示当前系统进程树 |
显示进程的指定信息
ps -o XXX ##显示进程的指定信息
ps -o comm ##进程名称
ps -o user ##进程所有人
ps -o group ##进程所有组
ps -o %cpu ##进程cpu使用率
ps -o %mem ##进程内存使用率
ps -o pid ##进程id
ps -o nice ##进程优先级
进程排序 ps ax --sort = +%cpu|-%cpu / +%mem|-%mem
+/-%cpu表示对cpu的使用率进行排序(+有小到大;-由大到小)
+/-%mem对内存的占用大小排序
stat中显示的信息
S | 进程状态 |
---|---|
s | 顶级进程 |
l | 内存中有锁定空间 |
N | 优先级低 |
< | 优先级高 |
+ | 前台运行 |
进程优先级
1.进程优先级范围 -20 – 19 越小优先级越高
2.优先级查看
watch -n 1 ps -a -o comm,stat,gid,nice
3.进程运行后改变优先级: nice -n 优先级 proname
在打开时同时设置优先级:renice -n 优先级 pid
环境中进程的前后台调用
jobs :查看被打入环境后台的进程
ctrl+z : 把占用终端的进程打入后台
fg jobsnum :把后台进程调回前台
bg jobsnum :把后台暂停的进程运行
comm & :让命令直接在后台运行
进程信号
1.常用信号等级
1 进程重新加载配置
2 删除进程内存中的数据
3 删除鼠标进程中的数据
9 强行结束单个进程
15 正常关闭进程(可能会被阻塞)
18 运行暂定的进程
19 暂定某个进程(不能被阻塞)
20 把进程打入后台(可以被阻塞)
man 7 signal 查看信号详细信息
kill -信号 进程pid
killall -信号 进程名字
pkill -u euidlist -信号
可控信号 | 含义 |
---|---|
1 | 刷新 |
2 | 中断键盘输入 |
3 | 退出键盘 |
9 | 强制结束 |
15 | 正常关闭 |
18 | 激活进程 |
19 | 强制暂停 |
20 | 正常暂停 |
进程动态监控
top
1 – 显示cpu每个核的负载
s – 调整刷新的频率
c – cpu负载排序
m – 内存使用量排序
h – 查看帮助
u – 查看指定用户进程
k – 对指定进程发起信号(先输入pid 再输入信号)
q – 退出
系统守护进程及服务
守护进程的定义
- 守护进程就是通常讲Daemon进程,
- 是linux后台执行的服务进程
- 是独立于控制终端、周期性地执行某种任务或等待处理某些发生事件
- 不会随终端关闭而停止,直到接受停止信息才会结束
在RHEL7和8中使用systemd来完成系统服务启动
服务
服务就是进程簇
使用sysyemctl来管理服务
指令 | 用途 |
---|---|
systemctl list-unit-files | 查看服务开机运行情况 |
systemctl list-units | 查看服务当前运行情况 |
systemctl list dependencies | 查看服务依赖性 |
systemctl status service | 查看服务状态 |
systemctl start service | 开启服务 |
systemctl stop service | 关闭服务 |
systemctl reload service | 重新加载服务配置 |
systemctl restart service | 重新启动服务 |
systemctl enable service | 设定服务开启启动 |
systemctl enable –now service | 设定服务开机启动并开启服务 |
systemctl disable service | 设定服务开机关闭 |
systemctl set-default multi-user.target | 设定系统运行级别为无图形网络模式 |
systemctl set-default graphical.target | 设定系统运行级别为图形网络模式 |
实验环境: 物理机 win10 Vmware 15.1 虚拟机1:rhel7 虚拟机2 :rhel8
- 查看开机进程状态
enable 代表开机启动 disable 表示禁用 static 代表 需要时启动
- 查看系统当前服务状态
- 查看服务依赖性
- 查看服务状态
配置两台虚拟机使用桥接模式并处于同一网段
在虚拟机1上使用ssh连接虚拟机2
在虚拟机2上停止ssh服务
停止虚拟机2的sshd服务后,虚拟机1使用ssh连接虚拟机2就被拒绝了