Fork me on GitHub

Linux 入门总结(十四)

Linux 入门总结(十四) —— Linux 系统管理

进程管理

进程查看

1、进程简介
进程是正在执行的一个程序或命令,每一个进程都是一个运行的实体,都有自己的地址空间,并占用一定的系统资源。

注意:命令也是一个进程,因为命令其实是一个功能,但是命令的进程存留的时间超级短,可能很难看到。要运行一个程序至少产生一个进程。

2、进程管理的作用

判断服务器健康状态
查看系统中所有进程
杀死进程

注意:进程管理最主要的工作是判断服务器的健康状态,而不是杀死进程,就算是不需要的进程也应该尝试正确终止,而不是杀死进程,杀进程是无法正常终止才采用的方式。

3、查看系统中所有进程

1
2
3
4
5
# 方式一:使用 BSD 操作系统格式
ps aux

# 方式二:使用 Linux 标准命令格式
ps -le

第一种采用的是 Unix 格式,注意选项前面并没有「-」。aux:a 表示查看所有前台进程,x 表示查看所有后台进程,u 显示进程是由哪个用户产生的。-le:l 显示进程详细信息,e 显示系统所有进程。

ps aux 显示

ps aux 显示


ps aux 显示说明

ps aux 显示说明

绝大多数的系统进程的 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 行。

top 命令显示

top 命令显示


主要看上图中的三个指标: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]

jobs -l 显示

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

查看 crond 服务是否启动

查看 crond 服务是否启动

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 分都会执行命令。注意:星期几和几号最好不要同时出现,因为他们定义的都是天。非常容易让管理员混乱

如果写的是「*」代表任意时间,如果写的是具体的值,代表指定的时间。

-------------本文结束感谢您的阅读-------------

本文标题:Linux 入门总结(十四)

文章作者:Yan ChongSheng

发布时间:2018年11月03日

最后更新:2018年11月06日

原始链接:yanchongsheng.github.io/2018/11/03/Linux-2018-11-03-Linux入门总结-十四/

许可协议: 署名-非商业性使用-禁止演绎 4.0 国际 转载请保留原文链接及作者。

开启打赏模式
Powered By Valine
v1.5.2