数据备份与进程管理

发布于:2025-08-13 ⋅ 阅读:(17) ⋅ 点赞:(0)

一、数据备份

1.Linux服务器中需要备份的数据

        (1)Linux系统重要数据:/root/目录,/home/目录,/etc/目录

        (2)安装服务的数据:Apache(配置文件,网页主目录,日志文件)

2.备份策略

        (1)完全备份:把所有需要备份的数据全部备份(整块硬盘、整个分区或某个具体目录)

                        优点:数据恢复方便

                        缺点:备份数据量大,备份时间长,占据空间较多

        (2)增量备份:先进行一次完全备份,后比较数据差异,只备份差异数据

                        优点:备份数据较少,耗时较少,占用空间较少

                        缺点:数据恢复比较繁琐(先恢复完全备份,后按照第一、第二.....增量备份数据恢复)

        (3)差异备份:先进行一次完全备份,后每次备份都备份和原始完全备份数据不同的数据

                        优点:不需要备份所有数据,数据恢复也比较方便

                        缺点:随时间增加,差异备份也可能变得数据庞大,备份缓慢,占用较大空间

3.备份工具

命令格式:dd if="输入文件" of="输出文件"  bs="数据块"  count="数量"

  • if:定义输入数据的文件,也可以是输入设备
  • of:定义输出数据的文件,也可以是输出设备
  • bs:指定数据块大小,默认512字节
  • count:指定bs的数量

注:如果想要备份分区,则分区大小不能比原分区小,只能和原分区大小一致或比原分区大;如果需要恢复,只需要把输入项和输出项反过来即可

网络复制工具:rsync和scp

  • rsync:可以实现服务器之间的备份数据,也可以增量备份,实现类似镜像的效果
  • scp:在Linux之间传文件,基于ssh的cp

scp  /root/本地文件  root@192.168.25.16:/root/        #上传

scp  root@192.168.25.6:/root/本地文件   /root/         #下载

4.xfs文件系统的备份与恢复

注:xfs文件系统支持备份功能,使用xfsdump命令和xfsrestore可以完成备份与恢复

备份——可进行完全备份、增量备份、差异备份

注意事项

  1. 不支持对未挂载文件系统进行备份
  2. 必须使用root身份才有权限执行
  3. 只能备份xfs文件系统,默认只支持备份文件系统
  4. 备份数据只能被xfsrestore解析
  5. 通过UUID来辨别备份文件,不能备份两个具有相同UUID的文件系统

xfsdump选项

  • -L:记录每次备份的说明标签
  • -M:指定存储媒介的说明标签
  • -l:指定备份级别(0-9),0是完整备份,1-9是增量备份
  • -f:指定转储的目的地
  • -I:从/var/lib/xfsdump/inventory列出目前备份的信息状态

(1)备份整个分区:xfsdump  -f  备份文件路径  被备份路径或设备文件

注:被备份路径可以写成/dev/sda1或/disk1,不能写成/disk1/

(2)指定备份是免交互操作

语法:xfsdump  -f  /opt/dump_2  /disk1  -L  dump_2  -M  sda1

(3)指定只备份分区中的某个目录(-s  文件路径[相对路径])

语法:xfsdump  -f  /opt/dump_test  -s  test  /disk1  -L  dump_test  -M  sda1

(4)文件系统恢复

语法:xfsrestore  -f  指定恢复文件的位置  指定存放恢复后的文件路径

(5)增量备份

全备:xfsdump  -f  /opt/dump_full  /disk1  -L  dump_full  -M  sda1

第n次:xfsdump  -l  n  -f  /opt/dump_backn  /disk1  -L  dump_backn  -M  sda1

二、进程管理

1.进程概述和PS管理进程

进程的组成部分:已分配内存的地址空间,进程ID(PID),程序代码,进程状态

进程管理包括:进程调度、中断处理、信号、进程优先级、进程切换、进程状态、进程内存等

进程的生命周期:

  1. 父进程复制自己的地址空间(fork)创建一个新的子进程结构
  2. 每个进程分配一个唯一的进程ID(PID),满足跟踪安全性之需
  3. PID和父进程(PPID)是子进程环境的元素,任何进程都可以创建子进程
  4. 所有进程都是第一个系统进程的后代
  5. Centos5或6 PID为1的是init,Centos7是systemd

僵尸进程:不执行代码,占用内存地址空间

  1. 当一个进程收到终止信号时,它结束之前需要一段时间来结束所有任务
  2. 在进程执行所有代码之后,它将相关终止报告发给父进程
  3. 父进程正常情况下会移除所有子进程的数据结构
  4. 如果父进程没能接收到子进程的退出信号,那么子进程就变为了僵尸进程
  5. 所以通常在某个很短的时间内,子进程是一个僵尸进程
  6. 使用kill命令不能杀死僵尸进程,因为它已经被认定为死亡
  7. 可尝试杀死僵尸进程的父进程,僵尸进程也会随之消失
  8. 如果一个进程为僵尸状态,父进程是init或systemd,那么需要重启系统来解决问题

2.进程、线程、协程

  • 进程:是一个执行环境, 包含指令、用户数据、部分系统数据,以及运行期内获取的其他资源
  • 线程:较小的轻量级实体,进程中产生的一个执行单位(线程直接可以共享资源,包括内存、地址空间、打开文件等)
  • 协程:最小实体,可通过并发方式运行;协程的创建、切换和销毁开销非常低,因为它们在用户态完成,不涉及操作系统的内核切换(与线程相比,需要的系统资源少,能在更小的内存空间中运行)

3.上下文切换

  1. 在处理器执行期间,运行进程的信息被存储在处理器的寄存器和高速缓存中。
  2. 执行的进程被加载到寄存器的数据被称为上下文。
  3. 在实际处理器运行过程中,先存储运行进程的上下文。
  4. 然后将下一个要运行的进程的上下文恢复到寄存器,这个过程称之为上下文切换。
  5. 一般不能有太多上下文切换。
  6. 因为处理器每次要刷新寄存器和高速缓存,以便释放空间给新进程,可能导致性能下降。

4.中断处理

  1. 中断是优先级最高的任务之一。
  2. 通常由 I/O 产生,比如网络接口、键盘、磁盘控制器等。
  3. 当一个中断信号到达内核的时候,内核必须从当前执行的进程切换到一个新的进程,以便处理这个中断。
  4. 这意味着中断会导致上下文切换。也就是说大量中断会导致性能下降。

注:Linux中有硬中断和软中断。硬中断由硬件产生,需要快速响应(如磁盘I/O中断,键盘中断,鼠标中断等);软中断被用来处理可以推迟的任务(TCP/IP,SCSI协议操作等)

5.进程的属性

  • 进程 ID(PID):是唯一的数值
  • 父进程的 ID(PPID)
  • 启动进程的用户 ID(UID)和所归属的组(GID)
  • 进程状态:状态分为运行 R、休眠 S、僵尸 Z
  • 进程执行的优先级
  • 进程所连接的终端名
  • 进程资源占用:比如占用资源大小(内存、CPU 占用量)

6.使用PS查看进程工具

常见选项组合:ps  aux |  more

  • a:显示跟当前终端关联的所有进程
  • u:基于用户的格式显示
  • x:显示所有进程,不以终端来区分

  • USER: 启动这些进程的用户
  • PID: 进程的 ID
  • %CPU 进程占用的 CPU 百分比
  • %MEM 占用内存的百分比
  • VSZ:进程占用的虚拟内存大小(单位:KB)
  • RSS:进程占用的物理内存大小(单位:KB)
  • STAT:该程序目前的状态,Linux 进程有 5 种基本状态:
    R :该程序目前正在运行,或者是可被运行(在运行队列)
    S :该程序目前正在睡眠当中 ,但可被某些信号唤醒
    T :该程序目前是停止状态
    Z :该进程应该已经终止,但是其父程序却没有正常的终止它
    D 不可中断的睡眠状态,通常存在于 I/O 情况下
    I:空闲的内核进程(Rocky9.X)
  • START:该进程被触发启动的时间
  • TIME :该进程实际使用 CPU 运行的时间
  • COMMAND:该程序的实际指令

基本状态后字符:

  • <:进程运行在高优先级上
  • N:进程运行在低优先级上
  • l:进程有页面锁定在内存中
  • s:进程是控制进程
  • I:进程是多线程的
  • +:当前进程运行在前台
  • t:进程被调试器跟踪时会出现(在编程调试期间会出现)

实验——

步骤一:在一个终端下创建aaa.txt文件,并vim打开,不修改,另开一个终端查看当前状态

步骤二:在aaa.txt终端按下ctrl +z 停止进程,在另一个终端再次查看当前状态

步骤三:tar -zcvf usr.gz /usr/,然后在另一个终端不断查看状态,由 S+,R+变为 D+

常见选项组合:ps  -ef

  • e:显示所有进程
  • f:显示完整格式输出

  • UID: 启动这些进程的用户
  • PID: 进程的 ID
  • PPID: 父进程的进程号
  • C: 进程生命周期中的 CPU 利用率
  • STIME: 进程启动时的系统时间
  • TTY: 表明进程在哪个终端设备上运行。如果显示?表示与终端无关,这种进程一般是内核态进程。另外,tty1-tty6 是本机上面的登入者程序,若为 pts/0 等,则表示运行在虚拟终端上的进程。
  • TIME: 运行进程一共累计占用的 CPU 时间
  • CMD: 启动的程序名称

实验——

步骤一:终端一:dd if=/dev/zero of=/a.txt count=10 bs=100M;终端二: ps -axu | grep dd

7.补充:free命令

第一行:total 是总内存量,used 是已经使用的内存量,free 是空闲的内存,shared 是多个进程共

享的内存总数,buffers 是缓冲内存数,cached 是缓存内存数。默认单位是 KB。
第二行开始:

  • total 系统中有 972MB 的物理内存,
  • used 是已经使用的内存数量。
  • free 是空闲的内存数量。
  • shared 是多个进程共享的内存数量。
  • buff/cache 用来作为缓冲和缓存的空间,内核会在内存将要耗尽时释放这部分内存给其他进程使用。
  • availble:可使用空间,评估有多少内存可用于启动新应用程序。

注:available 字段考虑了页缓存,而不是所有可回收的内存。正因为这个原因所以通常

free+buff/cache 的数值要比 available 的数值大。
第三行为 swap 虚拟内存。

  1. 在上面信息中我们可以看到,其实系统上并没有运行什么服务。但是有 1.4G 的 cache,这是因为在实验过程中进行过多次读写执行等操作。
  2. 这些文件会被系统暂时缓存下来,以便下次运行的时候能够快速的读取。
  3. 这种使用都是正常的情况,说明物理内存正在被合理的使用
  4. 但是如果我们发现 swap 区域一直被大量使用,这就说明物理内存不足。
  5. 可能需要考虑系统上 swap 使用比例或者添加物理内存。

三、uptime查看系统负载--top动态管理进程

1.uptime查看cpu负载工具

18:54:11 当前时间
48 系统运行时间,说明系统已经运行了48分钟
3 当前登录用户数
load average:0.08,0.17,0.25 系统负载均衡,即任务队列的平均长度。三个数值为1分钟、5分钟、15分钟前到现在的平均值

任务队列的平均长度(cpu队列数为3时):

注:如果服务器cpu为1核,则load average>=3为负载过高;如果服务器cpu为4核,则>=12为负载过高(通常单核一分钟平均负载不要超过3)

2.top命令动态管理

Cpu(s) 系统用户进程使用cpu百分比
sy 内核中的进程占用cpu百分比
ni 用户进程空间内改变过优先级的进程占用cpu百分比
id 空闲cpu百分比
wa cpu等待I/O完成的时间总量
hi(硬中断消耗时间) 硬中断占的cpu百分比
si(软中断消耗时间) 软中断占的cpu百分比
st(steal偷) 虚拟机偷取物理的时间

PID 进程id
USER 进程所有者的用户名
PR 优先级,由内核动态调整,用户不能修改。rt表示任务正在实时调度优先级下运行
NI 进程优先级,nice值。负值表示高优先级
VIRT 虚拟内存,是进程正在使用的所有内存
RES 是进程所使用的物理内存,是实际使用内存
SHR 共享内存大小,单位kb
S 进程状态
%CPU 上次更新到现在的cpu占用百分比
%MEM 进程使用的物理内存百分比
TIME+ 进程使用的cpu时间总计,单位1/100s
COMMAND 命令名;命令行

快捷键

  • 默认三秒刷新一次,按s修改刷新时间
  • 按空格立刻刷新
  • q退出
  • P按cpu排序
  • M按内存排序
  • T:按时间排序
  • 数字键1:显示每个内核的cpu使用率
  • -p:进程pid,查看某个进程状态
  • -u/U:指定显示用户
  • h:帮助

注:lscpu命令可以查看cpu系统中cpu详细信息,并且在sockets字段表示物理cpu数量

实验——

步骤一:使用top动态只查看某个或某些进程的信息

步骤二:找出系统中使用cpu最多的进程

注:在一个linux进程中,最多可以使用的cpu占用百分比跟内核数有关,可以超过100%

3.fuser命令根据文件或端口号找相应进程

  • -k:默认结束进程,也可以执行发送信号(可用信号与kill命令不同)
  • -i:在结束进程前会交互式确认
  • -u:在进程后显示进程所属用户名
  • -c:查看有哪些进程访问挂载点下文件

实验——

步骤一:根据/media目录查看有哪些进程正在访问目录,并列出进程用户名称

步骤二:查看 boot 分区下有哪些进程在访问文件

步骤三:查看 tcp 协议 22 号端口有哪些进程

注:对文件或目录执行会输出相应的进程号(c表示执行进程的用户在当前查询目录中;f表示文件,但通常文件默认不显示;r表示root目录;e表示正在运行的可执行文件)

4.lsof命令:用于查看进程打开的文件、端口(TCP,UDP)

  • -i:列出符合条件的进程。IPv4或IPv6(4,6,协议,:端口,@ip)
  • -p:列出指定进程号所打开的文件

一般用于进程在读哪些文件,或哪个进程在使用端口

四、前后台进程切换-nice进程优先级

1.Linux后台进程与前台进程的区别

  1. 前台进程:是在终端中运行的命令,命令执行过程中持续占用前台。
  2. 依赖终端:那么该终端就为进程的控制终端,一旦这个终端关闭,这个进程也随之消失。
  3. 脱离终端:一旦这个终端关闭,这个进程不会消失。
  4. 后台进程: 进程放入后台运行,通常不会影响当前终端后续命令执行。如:tar -cf 命令等。
  5. 后台运行并脱离终端:其中有一类进程也叫守护进程(Daemon),是运行在后台的一种特殊进程,不受终端控制,它不需要终端的交互。
  6. Linux 的大多数服务器就是用守护进程实现的。比如,Web 服务器 httpd 等。

2.进程前台与后台运行(跟系统任务相关的几个进程)

& 跟在命令最后,可以把命令放在后台执行
ctrl+z 将前台命令放在后台,并且暂停
jobs 查看当前后台运行进程(作业控制命令)
fg 将后台命令调至前台继续运行(fg %命令序号)
bg  将后台暂停命令变为继续执行(bg %命令序号)
nohup 脱离终端

注:虽然bg 1使得后台暂停命令继续运行,但vi命令无法在后台执行,因此很快就停止运行

补充

  1. 进程调度:操作系统决定哪个就绪进程获得cpu的执行权的过程
  2. 中断处理:cpu响应硬件或软件中断,暂停当前任务,转而去执行中断服务程序,完成后恢复原任务
  3. 信号:内核或进程向目标进程发送的异步通知
  4. 进程优先级:决定进程被调度执行的优先顺序
  5. 进程切换:CPU从一个进程切换到另一个进程时,保存当前进程的上下文,并加载新进程的上下文
  6. 进程状态:运行、就绪、阻塞
  7. 进程内存:进程运行时分配的地址空间

网站公告

今日签到

点亮在社区的每一天
去签到