# Linux 系统管理
# 进程管理
# 简介
进程是正在执行的一个程序或命令,每一个进程都是一个运行的实体,都有自己的地址空间,并占用一定的系统资源。
# 进程管理的作用
判断服务器的健康状态
查看系统中所有进程
杀死进程
# 查看系统中所有的进程
[root@localhost ~]# ps aux | |
# 查看系统中所有进程,使用 BSD 操作系统格式 | |
[root@localhost ~]# ps -le | |
# 查看系统中所有进程,使用 Linux 标准命令格式 |
- USER:进程是由哪个用户产生的
- PID:进程的 ID 号
- % CPU:进程占用 CPU 资源的百分比,占用越高,进程越耗费资源
- % MEM:进程占用物理内存的百分比,占用越高,进程越耗费资源
- VSZ:进程占用虚拟内存的大小,单位 KB
- RSS:进程占用实际物理内存的大小,单位 KB
- TTY:进程是在哪个终端中运行的,其中 tty1-tty7 代表本地控制台终端,tty1-tty6 是本地的字符界面终端,tty7 是图形终端。pts/0-255 代表虚拟终端
- STAT:进程状态,常见的状态有:
- R:运行
- S:睡眠
- T:停止状态
- s:包含子进程
- +:位于后台
- START:该进程的启动时间
- TIME:该进程占用 CPU 的运行时间,注意不是系统时间
- COMMAND:产生该进程的命令名
# 查看系统健康状态
[root@localhost ~]# top [选项]
选项:
-d 秒数: 指定 top 命令每隔几秒更新。默认是 3 秒
在 top 命令的交互模式当中可以执行的命令:
? 或 h: 显式交互模式的帮助
P: 以 CPU 使用率排序,默认就是此项
M: 以内存的使用率排序
N: 以 PID 排序
q: 退出 top
[root@localhost ~]# top | |
top - 11:47:52 up 2:41, 2 users, load average: 0.00, 0.01, 0.04 | |
Tasks: 118 total, 1 running, 117 sleeping, 0 stopped, 0 zombie | |
%Cpu(s): 0.1 us, 0.1 sy, 0.0 ni, 99.8 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st | |
KiB Mem : 1014296 total, 679716 free, 190940 used, 143640 buff/cache | |
KiB Swap: 2097148 total, 2097148 free, 0 used. 676600 avail Mem | |
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND | |
649 root 20 0 0 0 0 S 0.3 0.0 0:02.65 kworker/1:2 | |
1735 root 20 0 162076 2208 1556 R 0.3 0.2 0:00.58 top | |
1 root 20 0 193664 6764 4164 S 0.0 0.7 0:01.36 systemd | |
2 root 20 0 0 0 0 S 0.0 0.0 0:00.00 kthreadd |
内容 | 说明 |
---|---|
11:47:52 | 系统当前时间 |
up 2:41 | 系统的运行时间 |
2 users | 当前登录了几个用户 |
load average: 0.00, 0.01, 0.04 | 系统在之前 1 分钟,5 分钟,15 分钟的平均负载。一般认为小于 1 时,负载较小。如果大于 1,系统已经超出负荷。 |
Tasks: 118 total | 系统中的进程总数 |
1 running | 正在运行的进程数 |
117 sleeping | 睡眠的进程 |
0 stopped | 正在停止的进程 |
0 zombie | 僵尸进程。如果不是 0,需要手工检查僵尸进程 |
%Cpu(s): 0.1 us | 用户模式占用的 CPU 百分比 |
0.1 sy | 系统模式占用的 CPU 百分比 |
0.0 ni | 改变过优先级的用户进程占用的 CPU 百分比 |
99.8 id | 空闲 CPU 的 CPU 百分比 |
0.0 wa | 等待输入 / 输出的进程的占用 CPU 百分比 |
0.0 hi | 硬中断请求服务占用的 CPU 百分比 |
0.0 si | 软中断请求服务占用的 CPU 百分比 |
0.0 st | st(Steal time)虚拟时间百分比。就是当有虚拟机时,虚拟 CPU 等待实际 CPU 的时间百分比 |
KiB Mem : 1014296 total | 物理内存的总量,单位 KB |
679716 free | 空闲的物理内存数量 |
190940 used | 已经使用的物理内存数量 |
143640 buff/cache | 作为缓冲的内存数量 |
KiB Swap: 2097148 total | 交换分区(虚拟内存)的总大小 |
2097148 free | 空闲交换分区的大小 |
0 used | 已经使用的交换分区的大小 |
676600 avail Mem | 作为缓存的交换分区的大小 |
# kill 命令
[root@localhost ~]# kill -l | |
# 查看可用的进程信号 |
[root@localhost ~]# kill -1 pid | |
# 重启进程 | |
[root@localhost ~]# kill -9 pid | |
# 强制杀死进程 |
# killall 命令
[root@localhost ~]# killall [选项][信号] 进程名 | |
# 按照进程名杀死进程 |
选项:
-i: 交互式,询问是否要杀死某个进程
- I: 忽略进程名的大小写
# pkill 命令
[root@localhost ~]# pkill [选项][信号] 进程名 | |
# 按照进程名终止进程 |
选项:
-t 终端号: 按照终端号提出用户
[root@localhost ~]# w | |
# 使用 w 命令查询本机已经登录的用户 | |
[root@localhost ~]# pkill -t -9 pts/1 | |
# 强制杀死从 pts/1 虚拟终端登录的进程 |
# 工作管理
# 把进程放入后台
- 命令后加上 &(程序后台继续运行)
[root@localhost ~]# tar -zcf etc.tar.gz /etc & |
- 命令执行过程中按下 ctrl+z(程序被暂停)
[root@localhost ~]# top
# 在top命令执行的过程中,按下ctrl+z快捷键
# 查看后台的工作
[root@localhost ~]# jobs [-l] | |
# “+” 号代表最近一个放进后台的工作,也是工作回复时,默认恢复的工作。“-” 号代表倒数第二个放入后台的工作 |
选项:
-l: 显式工作的 PID
# 将后台暂停的工作恢复到前台执行
[root@localhost ~]# fg % 工作号 |
参数:
% 工作号: % 号可以省略,但是注意工作号和 PID 的区别
# 把后台暂停的工作恢复到后台执行
[root@localhost ~]# bg % 工作号 |
注意:后台恢复执行的命令,是不能和前台有交互的,否则不能恢复到后台执行。
# 系统资源查看
# vmstat 命令监控系统资源
[root@localhost ~]# vmstat [刷新延时 刷新次数] | |
# 例如: | |
[root@localhost ~]# vmstat 1 3 |
# dmesg 开机时内核检测信息
[root@localhost ~]# dmesg | |
[root@localhost ~]# dmesg | grep CPU |
# free 命令查看内存使用状态
[root@localhost ~]# free [-b|-k|-m|-g] |
选项:
-b: 以字节为单位显示
-k: 以 KB 为单位显示,默认就是以 KB 为单位显示
-m: 以 MB 为单位显示
-g: 以 GB 为单位显示
# 缓存和缓冲的区别
简单来说缓存(cache)时用来加速数据从硬盘中 “读取” 的,而缓冲(buffer)是用来加速数据 “写入” 硬盘的。
# 查看 CPU 信息
[root@localhost ~]# cat /proc/cpuinfo |
# uptime 命令
[root@localhost ~]# uptime | |
# 显示系统的启动时间和平均负载,也就是 top 命令的第一行。w 命令也可以看到这个数据 |
# 查看系统与内核相关信息
[root@localhost ~]# uname [选项] |
选项:
-a: 查看系统所有相关信息
-r: 查看内核版本
-s: 查看内核名称
# 判断当前系统的位数
[root@localhost ~]# file /bin/ls |
注意:只要是用查看外部命令都可以附带显示出当前系统的位数。
# 查询当前 Linux 系统的发行版本
[root@localhost ~]# lsb_release -a |
# 列出进程打开或使用的文件信息
[root@localhost ~]# lsof [选项] | |
# 列出进程调用或打开的文件的信息 |
选项:
-c 字符串: 只列出以字符串开头的进程打开的文件
-u 用户名: 只列出某个用户的进程打开的文件
-p pid: 列出某个 PID 进程打开的文件
# 系统定时任务
# crond 服务管理与访问控制
[root@localhost ~]# service crond restart | |
[root@localhost ~]# chkconfig crond on |
# 用户的 crontab 设置
[root@localhost ~]# crontab [选项] |
选项:
-e: 编辑 crontab 定时任务
-l: 查询 crontab 任务
-r: 删除当前用户所有的 crontab 任务
[root@localhost ~]# crontab -e | |
# 进入 crontab 编辑界面,会打开 vim 编辑你的工作 |
* * * * * 执行的任务