Linux 入门总结(十四) —— Linux 系统管理
进程管理
进程查看
1、进程简介
进程是正在执行的一个程序或命令,每一个进程都是一个运行的实体,都有自己的地址空间,并占用一定的系统资源。
注意:命令也是一个进程,因为命令其实是一个功能,但是命令的进程存留的时间超级短,可能很难看到。要运行一个程序至少产生一个进程。
2、进程管理的作用
判断服务器健康状态
查看系统中所有进程
杀死进程
注意:进程管理最主要的工作是判断服务器的健康状态,而不是杀死进程,就算是不需要的进程也应该尝试正确终止,而不是杀死进程,杀进程是无法正常终止才采用的方式。
3、查看系统中所有进程1
2
3
4
5# 方式一:使用 BSD 操作系统格式
ps aux
# 方式二:使用 Linux 标准命令格式
ps -le
第一种采用的是 Unix 格式,注意选项前面并没有「-」。aux:a 表示查看所有前台进程,x 表示查看所有后台进程,u 显示进程是由哪个用户产生的。-le:l 显示进程详细信息,e 显示系统所有进程。
绝大多数的系统进程的 TTY 显示的都是 「?」,证明这个进程不是由终端调用的,而是由内核直接产生的。按住 Alt + F1~F6 能够切换 6 个本地字符终端,如果按装了图形界面可以使用 Ctrl + Alt + F7 切换到图形终端。
4、查看系统健康状态1
2
3
4
5
6
7
8
9
10
11
12格式:
top [选项]
选项:
-d 秒数 指定 top 命令每隔几秒钟更新,默认是 3 秒
在 top 命令的交互模式当中可以执行的命令:
? 或 h 显示交互模式的帮助
P 以 cpu 使用率排序,默认就是此项
M 以内存的使用率排序
N 以 PID 排序
q 退出 top
相当于 Windows 的任务管理器,默认以 cpu 的占用率进行排序。该命令最主要的是看头 5 行。
主要看上图中的三个指标:Tasks 的 load average、Cpu 的 id、Mem 的 free。
(1) 第一行信息为任务队列信息
内容 | 说明 |
---|---|
17:01:55 | 系统当前时间 |
up 10 days, 6:02 | 系统的运行时间,本机已经运行 10 天 6 小时 2 分钟 |
1 users | 当前登陆了一个用户 |
load average: 0.00, 0.01, 0.05 | 系统在之前 1 分钟,5 分钟,15 分钟的平均负载。一般认为小于 1 时,负载较小;如果大于 1,系统已经超出负荷。 |
(2) 第二行为进程信息
内容 | 说明 |
---|---|
Tasks: 119 total | 系统中的进程总数 |
1 running | 正在运行的进程数 |
118 sleeping | 睡眠的进程 |
0 stopped | 正在停止的进程 |
0 zombie | 僵尸进程。如果不是 0,需要手工检查僵尸进程 |
僵尸进程指:这个进程正在终止,但是还没有终止完全。
(3) 第三行为 CPU 信息
内容 | 说明 |
---|---|
%Cpu(s): 0.0 us | 用户模式占用的 CPU 百分比 |
0.0 sy | 系统模式占用的 CPU 百分比 |
0.0 ni | 改变过优先级的用户进程占用的 CPU 百分比 |
100.0 id | 空闲 CPU 的 CPU 百分比 |
0.0 wa | 等待输入/输出的进程的占用 CPU 百分比 |
0.0 hi | 硬中断请求服务占用的 CPU 百分比 |
0.0 si | 软中断请求服务占用的 CPU 百分比 |
0.0 st | st(steal time)虚拟时间百分比。就是当有虚拟机时,虚拟 CPU 等待实际 CPU 的时间百分比 |
(4) 第四行为物理内存信息
内容 | 说明 |
---|---|
KiB Mem : 1012400 total | 物理内存的总量,单位 KB |
279524 free | 空闲的物理内存数量 |
196900 used | 已经使用的物理内存数量 |
535976 buff/cache | 作为缓冲/缓存的内存数量 |
(5) 第五行为交换分区(swap)信息
内容 | 说明 |
---|---|
KiB Swap: 1888252 total | 交换分区(虚拟内存)的总大小 |
1888252 free | 空闲交换分区的大小 |
0 used | 已经使用的交换分区的大小 |
574856 avail Mem | 作为缓存的交换分区的大小 |
注意:top 命令以及 Windows 的任务管理器,本身是非常耗费资源的,看一看就行,没事不要总打开。top 命令本身比较消耗资源。
5、查看进程树1
2
3
4
5
6格式:
pstree [选项]
选项:
-p 显示进程的 PID
-u 显示进程的所属用户
终止进程
1、kill 命令1
2
3
4
5
6
7
8
9# 查看可用的进程信号
kill -l
# 重启进程,22345 表示进程 ID 即 PID
# 注意 kill 后面跟的一定是 PID 号而不能是进程名
kill -1 22345
# 强制杀死进程
kill -9 22368
最常用的进程信号:1(重启)、9(强制终止)、15(正常终止,默认为此项)
2、killall 命令1
2
3
4
5
6
7格式:
# 按照进程名杀死进程
killall [选项][信号] 进程名
选项:
-i 交互式,询问是否要杀死某个进程
-I 忽略进程名的大小写
3、pkill 命令1
2
3
4
5
6
7
8
9
10
11
12格式:
# 按照进程名终止进程
pkill [选项][信号] 进程名
选项:
-t 终端号 按照终端号踢出用户
举例:
# 按照终端号踢出用户
# 用 w 命令查询本机已经登录的用户
# 强制杀死从 pst/1 虚拟终端登录的进程
pkill -t -9 pst/1
pkill 和 killall 其实非常类似,都是根据进程名杀死进程,区别就是 pkill 支持 -t 选项,即根据终端号踢出用户。
工作管理
1、把进程放入后台1
2
3
4
5# 方式一:使用 & ,& 表示放入后台继续运行
tar -zxf etc.tar.gz /etc &
# 方式二:使用 ctrl + z 快捷键,表示放入后天暂停运行
# 在 top 命令执行的过程中,使用 ctrl + z 快捷键
2、查看后台的工作1
2
3格式:
# 选项 -l 显示工作的 PID
jobs [-l]
注:[数字]表示工作号,表示第几个放入的。「+」号代表最近一个放入后台的工作,也是工作恢复时,默认恢复的工作。「-」号代表倒数第二个放入后台的工作。在不指定工作号的情况下,默认第一个恢复「+」,其次「-」。
3、将后台暂停的工作恢复到前台执行1
2
3
4
5格式:
fg %工作号
参数:
%工作号 %号可以省略,但是注意工作号和 PID 的区别
4、把后台暂停的工作恢复到后台执行1
bg %工作号
注:后台恢复执行的命令,是不能和前台有交互的,否则不能恢复到后台执行。
系统资源查看
1、vmstat 命令监控系统资源1
2
3
4
5
6格式:
vmstat [刷新延时 刷新次数]
举例:
# 监听 3 次系统资源,每次间隔 1 秒钟
vmstat 1 3
2、dmesg 开机时内核检测信息,dmesg 是一个重要的信息查看命令,可以通过它判断系统的硬件信息,如:查看 CPU 的信息 dmesg | grep CPU
。
3、free 命令查看内存使用状态1
2
3
4
5
6格式:
free [选项]
选项:
-b 以字节为单位;-k 以 KB 为单位,默认项
-m 以 MB 为单位;-G 以 GB 为单位
4、缓存和缓冲的区别
简单来说缓存(cache)是用来加速数据从硬盘中「读取」的,而缓冲(buffer)是用来加速数据「写入」硬盘的。
由于内存的运行速度比硬盘快,而且快的多。缓冲是为了避免频繁的对硬盘进行写操作,是将要写入的内容积累到一定数量然后一次性写入硬盘。
5、查看 CPU 信息:cat /proc/cpuinfo
。注意 /proc 目录是内存的挂载点,一旦断电这个目录里面的内容就会消失,即每次开机都系统都会检测 cpu 并写入该文件。
6、uptime 命令:显示系统的启动时间和平均负载,也就是 top 命令的第一行。w 命令也可以看到这个数据。
7、查看系统与内核相关的信息1
2
3
4
5
6
7格式:
uname [选项]
选项:
-a 查看系统所有相关信息
-r 查看内核版本
-S 查看内核名称
8、判断当前系统的位数:file /bin/ls
file 命令是查看文件类型的命令,只要使用 file 命令查询一个系统的外部命令的文件类型,注意不能是 Shell 的内部命令,会附带的显示操作系统位数。
9、查询当前 Linux 系统的发行版本:lsb_release -a
10、列出进程打开或使用的文件信息1
2
3
4
5
6
7格式:
lsof [选项]
选项:
-c 字符串:只列出以字符串开头的进程打开的文件
-u 用户名:只列出某个用户的进程打开的文件
-p pid :列出某个 PID 进程打开的文件
系统定时任务
1、crond 服务管理与访问控制(cron 计划任务,d 表示 deamon 守护进程)1
2
3
4
5# crond 启动命令
systemctl restart crond.service
# 设置 crond 开机自启动
systemctl enable crond.service
2、用户的 crontab 设置1
2
3
4
5
6
7
8
9
10
11
12
13格式:
crontab [选项]
选项:
-e 编辑 crontab 定时任务
-l 查询 crontab 任务
-r 删除当前用户所有的 crontab 任务
举例:
*/5 * * * * /bin/echo "11" >> /tmp/test
5 5 * * 2 /sbin/shutdown -r now
0 5 1,10,15 * * /root/sh/autobak.sh
执行命令 crontab -e
进入 crontab 编辑界面。会打开 vim 编辑你的工作。格式:* * * * * 执行的任务
,注意:在 crontab 中 % 是有特殊含义的,为了能够格式化日期,必须加转义符,否则定义的时间是无法正确执行 date=$(date +\%y\%m\%d)
。
crontab 编辑格式中五个「*」的含义:
项目 | 含义 | 范围 |
---|---|---|
第一个 * | 一小时当中的第几个分钟 | 0-59 |
第二个 * | 一天当中的第几个小时 | 0-24 |
第三个 * | 一个月当中的第几个天 | 1-31 |
第四个 * | 一年当中的第几个月 | 1-12 |
第五个 * | 一周当中的第几天 | 0-7(0 和 7 都代表星期日) |
crond 定时任务特殊符号解释:
特殊符号 | 含义 |
---|---|
* | 代表任何时间。比如第一个 * 就表示一小时中每分钟都执行一次的意思 |
, | 代表不连续的时间。比如 0 8,12,16 * * * 命令 ,就代表在每天的 8 点 0 分,12 点 0 分, 16 点 0 分都执行一次命令 |
- | 代表连续的时间范围。比如 0 5 * * 1-6 命令 ,代表在周一到周六的凌晨 5 点 0 分执行命令 |
*/n | 代表每隔多久执行一次。比如 */10 * * * * 命令 ,代表每隔 10 分钟就执行一遍命令 |
crond 定时任务示例解释:
时间 | 含义 |
---|---|
45 22 * * * 命令 |
在每天的 22 点 45 分执行命令 |
0 17 * * 1 命令 |
在每周 1 的 17 点 0 分执行命令 |
0 5 1,15 * * 命令 |
在每个月的 1 号和 15 号 5 点 0 分执行命令 |
40 4 * * 1-5 命令 |
每周 1 到周 5 的 4 点 40 分执行命令 |
*/10 4 * * * 命令 |
每天 4 点,每隔 10 分钟执行一次命令 |
0 0 1,15 * 1 命令 |
每月 1 号和 15 号,每周 1 的 0 点 0 分都会执行命令。注意:星期几和几号最好不要同时出现,因为他们定义的都是天。非常容易让管理员混乱 |
如果写的是「*」代表任意时间,如果写的是具体的值,代表指定的时间。