# 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 stst(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
# 查看可用的进程信号

image-20220905140955538

[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 编辑你的工作

* * * * * 执行的任务

image-20220905151638179

image-20220905151755104

image-20220905151912241