- 一、进程概述
- 1. 进程是什么
- 2. 理解进程(一切皆文件)
- 二、查看进程
- `ps`:最常用的列出当前系统进程的命令
- `top`命令(相当于Windows的任务管理器):
- 三、管理进程
- 1. 管理前台和后台进程
- 2. 关闭和修改进程
- 四、管理服务
- 1. 守护进程(init 或 systemd)
- 2. Linux 服务管理有两个命令:service命令和systemctl命令
- 一个进程,是一条命令运行的实例,如一个vi命令,同时被15个同的用户打开,那么就会创建15个进程。
- 进程通过 ID 进行识别,进程ID(PID) 对当前系统来说,是唯一的
- 进程会与一个特定的 用户账号 和 组 关联,账号信息可以帮助进程获取指定的系统资源权限。
- Linux的进程在/proc目录下,存在于以 进程ID 命名的文件夹中,如下图,蓝色命令表示进程ID
- 常用的ps命令:
-
ps u 显示进程的同时,以用户角度查看进程的使用资源情况
-
从下图可以看出,当前root是通过sudo -i切换,同时执行了bash和ps uf进程
-
STAT中 R 表示睡眠进程;S 表示正在运行;+ 表示前台操作
-
VSZ(Virtual Set Size):虚拟内存大小,以KB为单位
-
RSS(Resident Set Size):实际内存大小
-
ps ux |less:查看系统当前用户的所有进程;|less 是管道处理,分页显示结果
-
对于 ps 命令,我们可以自定义选择的列,或者按照某一列进行排序
-
例如ps -eo pid,user,uid,group,gid,vsz,rss,comm |less,其中 ps -e 列出运行中的进程,后面接 o 代表指定列,且每列之间不能有空格
-
ps -eo pid,user,uid,group,gid,vsz,rss,comm --sort=-rss,其中--sort=-rss表示rss(内存使用)排倒叙,由大到小(正序是由小到大)
-
- top 提供了一种面向屏幕的方法来显示系统中运行的进程。在使用 top 时,默认按照进程当前所使用的 CPU 时间来显示进程,也可以设置为其它排序
- 当发现一个进程为不适当的进程,可以使用 top 来完全终止进程或改变进程优先级
- top 界面下的一些操作命令 (注意大小写的区分)
- 单击 h,查看帮助文件,再按任意键返回
- 单击 M,以内存占用排序,单击 P, 以CPU占用排序
- 单击 数字1,切换显示器所有 CPU 的使用情况
- 单击 R,对输出进行反向排序
- 单击 u,并输入用户名,显示某用户的进程
- 单击 r,并输入进程 PID, 该改变进程的优先级,优先级取值为 -19~20
- 单击 k,杀死进程,输入进程 PID,在输入 15 表示彻底终止进程
-
在 Linux 的 shell 中,无法快捷的进行进程的切换,因为 shell 中并没有像Windows 下面的任务栏这样的便于进程切换的工具。
-
shell 能做的是在后台和前台之间切换当前活动的程序
-
find /usr > /temp/1.txt &:直接在命令后面加一个 & 符号,即可将命令放到后台。图中 1 为后台序号,1598为进程ID。解释:如果只执行find /usr,则前台会蹦出很多查询信息,因此放入后台就不会显示了
-
通过 jobs 查看后台进程
-
fg %1
- Linux 对进程的操作,依赖进程间的信号来实现
- 通常,信号是由一个系统错误产生,当然也可以人为发送信号
- 通常的信号如下:
| 信号名 | 数字 | 说明 |
|---|---|---|
| SIGHUP | 1 | 由一个非连接状态的终端发送给控制进程,或者控制进程在自身结束时发送给前台进程 |
| SIGHT | 2 | 一般是由 Ctrl + C 发起的中断 |
| SIGKILL | 9 | 一般是由 SHELL 中 强制终止异常进程 |
| SIGTERM | 15 | 通常是一个结束请求,如关机时,发送给进程。kill 命令默认也发送这个信号 |
-
比如,我们要关闭一个 PID 为 8888 的进程,可以执行下面操作
kill 8888:kill 默认发送15信号
kill -15 8888:kill 指定发送15信号
kill -SIGKILL 8888:kill指定发送 9 信号,即SIGKILL
kill -1 8888:kill指定发送 1 信号,类似于 systemctl reload httpd,重新加载配置文件 -
使用killall命令,可以根据进程名发送信号,而不需要查看 进程ID
- 这样做的优点,是可以方便的干掉进程,但也有可能误杀了其他进程,例如:
- killall bash:除了会杀掉 bash,还会杀掉所有 shell 脚本
- 同样也可以使用信号数字,如:kill all -9 httpd
-
修改进程CPU使用优先级
-
Linux 使用 nice 值 定义进程访问 CPU 的优先级(即top中的 NI 列)
- nice 值可以在 -20~19之间,默认值取为0(可以看top命令中的 NI 列)
- nice 值越低,进程就有更多访问 CPU的机会,即优先级越高
- 普通用户只能将 自己的进程 nice 设为0~19
- 普通用户只能将 nice 值 越设越高
-
例如:nice -5 vim & 将 vim 进程放在后台运行,且设置 nice值 为0 + 5,其中0为默认nice
-
例如:renice -n -5 8888:对进程ID为8888的nice值 减5
-
守护进程可以理解为所有“进程之母”
守护进程是 Linux 内核中的第一个进程,其名称通常为 init 或 system
Linux 内核中有一个 PID为0的进程,表示内核,守护进程的PID为1
- service命令的本质:执行/etc/init.d目录下的脚本
- systemctl命令(新版本):是Linux 系统最新的初始化系统,同时 systemctl 也兼容了 services 命令,也会查找 /etc/init.d目录
systemctl 常用方法如下:
- systemctl start | stop | restart + service:启动、停止、重启服务
- systemctl enable | disable + service:开机启动、开机不启动服务
- systemctl status + service:查看服务的状态
- systemctl is-active + service:查看服务是否启动
- systemctl is-enables + service:查看服务是否开机启动
备注:如果sshd服务被关闭了,那么所对应的22号端口也是关闭的,那我们就没法使用xshell远程连接linux



