Debian Linux 日常运维实战:服务器管理、资源监控、日志分析与故障排查

举报
yd_228838069 发表于 2026/11/07 08:58:11 2026/11/07
【摘要】 Debian 是一种稳定、轻量且广泛应用于服务器环境的 Linux 发行版。在日常服务器管理中,无论是运行 Web 网站、数据库、API 服务,还是部署各种后台程序,都需要掌握基本的 Linux 运维技能。服务器上线后,并不意味着工作结束。日常运维还包括:检查 CPU、内存和磁盘使用情况。管理系统服务和进程。查看系统日志与应用日志。检查网络连接和端口状态。更新系统软件包。排查网站无法访问、服...

Debian 是一种稳定、轻量且广泛应用于服务器环境的 Linux 发行版。

在日常服务器管理中,无论是运行 Web 网站、数据库、API 服务,还是部署各种后台程序,都需要掌握基本的 Linux 运维技能。

服务器上线后,并不意味着工作结束。日常运维还包括:

  • 检查 CPU、内存和磁盘使用情况。

  • 管理系统服务和进程。

  • 查看系统日志与应用日志。

  • 检查网络连接和端口状态。

  • 更新系统软件包。

  • 排查网站无法访问、服务异常等问题。

  • 管理用户、权限和 SSH 登录。

  • 定期备份重要数据。

本文以 Debian 12/13 为例,介绍常用的日常运维命令和操作方法。大部分命令也适用于 Ubuntu 等 Debian 系 Linux 系统。

一、登录服务器与基础信息查看

1. SSH 登录服务器

在 Windows PowerShell 或 Linux 终端中执行:

ssh root@服务器IP

如果 SSH 使用非默认端口,例如 2222:

ssh -p 2222 root@服务器IP

如果使用指定私钥:

ssh -i ~/.ssh/id_ed25519 root@服务器IP

首次连接服务器时,SSH 可能提示是否信任服务器主机密钥。确认服务器身份后再输入 yes。

2. 查看 Debian 版本

cat /etc/debian_version

查看更完整的系统信息:

cat /etc/os-release

也可以使用:

hostnamectl

输出示例:

Static hostname: debian-server
Operating System: Debian GNU/Linux 12 (bookworm)
Kernel: Linux 6.1.0
Architecture: x86-64

3. 查看内核版本

uname -r

查看完整内核信息:

uname -a

4. 查看服务器运行时间

uptime

示例:

08:30:12 up 15 days,  3:20,  1 user,  load average: 0.20, 0.35, 0.40

其中:

  • up:系统连续运行时间。

  • 1 user:当前登录用户数量。

  • load average:过去 1、5、15 分钟的系统平均负载。

负载值需要结合 CPU 核心数判断。

例如:

CPU 核心数 负载 1.0 负载 4.0
1 核 已达到较高负载 严重繁忙
2 核 负载较低 负载较高
4 核 负载较低 接近满负载
8 核 负载较低 通常仍有余量

Load Average 不完全等于 CPU 使用率,还可能受到磁盘 I/O 等不可中断任务影响。

二、CPU 和内存监控

服务器出现响应缓慢、网站加载卡顿时,首先应该检查 CPU 和内存。

1. 查看 CPU 使用情况

安装常用工具:

apt update
apt install -y htop

运行:

htop

可以看到:

  • CPU 各核心使用率。

  • 内存和 Swap 使用情况。

  • 运行中的进程。

  • 进程 CPU 使用率。

  • 进程内存使用率。

退出:

F10

如果不想安装额外软件,可以使用:

top

2. 查看内存使用情况

free -h

示例:

               total        used        free      shared  buff/cache   available
Mem:           3.8Gi       1.2Gi       800Mi       100Mi       1.8Gi       2.4Gi
Swap:          2.0Gi          0B       2.0Gi

重点关注:

  • total:总内存。

  • used:已使用内存。

  • free:完全空闲内存。

  • buff/cache:缓存和缓冲区。

  • available:系统估算的可用内存。

判断服务器内存是否紧张时,通常优先看 available,而不是只看 free。

Linux 会主动使用空闲内存作为缓存,这是正常现象。

3. 查看进程内存占用

ps aux --sort=-%mem | head -10

显示内存占用最高的 10 个进程。

4. 查看 CPU 占用最高的进程

ps aux --sort=-%cpu | head -10

如果某个 Python、MySQL 或其他进程长期占用大量 CPU,需要进一步检查其运行状态和日志。

5. 查看 Swap 使用情况

swapon --show

也可以:

free -h

如果物理内存不足,Linux 可能使用 Swap。

Swap 可以缓解内存压力,但速度通常远低于物理内存。持续大量使用 Swap,可能导致服务器响应变慢。

三、磁盘空间与文件管理

磁盘空间不足是服务器运维中非常常见的问题。

例如:

  • 网站日志不断增长。

  • 数据库文件持续增加。

  • 系统更新缓存没有清理。

  • 上传文件占用了大量磁盘空间。

  • Docker 镜像和容器日志占满磁盘。

1. 查看磁盘使用情况

df -h

示例:

Filesystem      Size  Used Avail Use% Mounted on
/dev/vda1        40G   18G   20G  48% /

重点关注 Use%。

如果根分区达到 90% 以上,就应该开始排查。

2. 查看目录占用空间

查看当前目录:

du -sh .

查看根目录下各目录占用:

du -h --max-depth=1 / 2>/dev/null

查看 /var 目录:

du -h --max-depth=1 /var 2>/dev/null

查看 /var/log:

du -h --max-depth=1 /var/log 2>/dev/null

3. 查找大文件

查找大于 500 MB 的文件:

find / -type f -size +500M 2>/dev/null

查找大于 100 MB 的文件:

find / -type f -size +100M 2>/dev/null

查看文件大小:

ls -lh 文件路径

4. 清理 APT 软件包缓存

Debian 使用 APT 管理软件包。

清理已经下载的软件包缓存:

apt clean

删除不再需要的依赖:

apt autoremove --purge

执行前建议检查将要删除的软件包,避免误删仍在使用的组件。

查看 APT 缓存占用:

du -sh /var/cache/apt

5. 清理 systemd 日志

查看日志占用:

journalctl --disk-usage

保留最近 7 天日志:

journalctl --vacuum-time=7d

限制日志总容量为 500 MB:

journalctl --vacuum-size=500M

也可以通过配置限制日志长期增长。

编辑:

nano /etc/systemd/journald.conf

设置:

[Journal]
SystemMaxUse=500M
SystemKeepFree=1G
MaxRetentionSec=30day

保存后重启日志服务:

systemctl restart systemd-journald

注意:清理日志会删除历史排障证据。发生故障时,应先保存重要日志,再进行清理。

6. 查找已删除但仍被进程占用的文件

有时候 rm 删除文件后,磁盘空间并没有释放。

可能是因为某个进程仍然打开着该文件。

安装工具:

apt install -y lsof

执行:

lsof +L1

如果看到较大的日志文件显示为 deleted,说明文件已经从目录中删除,但进程仍然持有文件句柄。

可以在确认服务后,安全地重新打开日志或重启相关服务,释放空间。

不要随意终止不清楚用途的进程。

四、进程管理

Linux 中运行的程序通常以进程形式存在。

日常运维需要掌握进程查询、停止和信号管理。

1. 查看所有进程

ps aux

查看指定进程:

ps aux | grep nginx

2. 查看进程 PID

pgrep -a nginx

3. 结束指定进程

先尝试正常终止:

kill PID

如果进程无法正常退出,再考虑:

kill -9 PID

区别:

  • kill 默认发送 SIGTERM,允许程序正常清理资源并退出。

  • kill -9 发送 SIGKILL,进程无法捕获或处理该信号。

因此,不要一遇到进程异常就使用 kill -9。

4. 查看进程打开的文件

lsof -p PID

查看进程监听的网络连接:

ss -tunap

5. 实时观察进程

top

或者:

htop

五、systemd 服务管理

Debian 使用 systemd 管理大部分系统服务。

常见服务包括:

  • SSH

  • Nginx

  • MySQL

  • MariaDB

  • Redis

  • Docker

  • 自己部署的 FastAPI 服务

1. 查看服务状态

例如查看 Nginx:

systemctl status nginx

查看 MySQL:

systemctl status mysql

2. 启动服务

systemctl start nginx

3. 停止服务

systemctl stop nginx

4. 重启服务

systemctl restart nginx

5. 重新加载配置

如果服务支持配置热加载:

systemctl reload nginx

Nginx 修改配置后,建议先检查:

nginx -t

确认配置正确后再执行:

systemctl reload nginx

6. 设置开机启动

systemctl enable nginx

同时立即启动:

systemctl enable --now nginx

7. 取消开机启动

systemctl disable nginx

8. 查看失败的服务

systemctl --failed

查看所有服务:

systemctl list-units --type=service

六、日志查看与故障排查

日志是 Linux 运维中最重要的排障工具之一。

遇到服务无法启动、网站访问失败、数据库连接异常时,应该先查看日志,而不是盲目重启服务器。

1. 查看 systemd 服务日志

查看 Nginx 最近 100 行日志:

journalctl -u nginx -n 100

实时查看:

journalctl -u nginx -f

查看 MySQL 日志:

journalctl -u mysql -n 100

只查看本次开机后的日志:

journalctl -b

查看上一次开机的日志:

journalctl -b -1

2. 查看 Nginx 日志

Debian 默认通常使用:

/var/log/nginx/
├── access.log
└── error.log

查看访问日志:

tail -f /var/log/nginx/access.log

查看错误日志:

tail -f /var/log/nginx/error.log

查看最近 100 行:

tail -n 100 /var/log/nginx/error.log

3. 搜索错误日志

查找包含 error 的日志:

grep -i error /var/log/nginx/error.log

查找最近日志中的 502:

grep '502' /var/log/nginx/access.log | tail -20

4. 查看 Python 服务日志

如果 FastAPI 通过 systemd 运行,例如服务名为 fastapi.service:

journalctl -u fastapi -n 100

实时查看:

journalctl -u fastapi -f

查看最近 30 分钟:

journalctl -u fastapi --since "30 minutes ago"

5. 常见 HTTP 状态码

状态码 含义 常见原因
200 请求成功 正常返回
301 永久重定向 HTTP 跳转 HTTPS
403 禁止访问 权限或访问规则问题
404 资源不存在 路径或路由错误
413 请求过大 上传文件超出限制
500 服务器内部错误 应用程序异常
502 网关错误 后端服务不可用
503 服务不可用 服务过载或维护
504 网关超时 后端响应超时

遇到 502 时,可以依次检查:

systemctl status nginx
systemctl status fastapi
ss -lntp
journalctl -u fastapi -n 100
tail -n 100 /var/log/nginx/error.log

七、网络与端口管理

服务器网络故障可能来自 DNS、路由、防火墙、监听端口或服务自身。

1. 查看 IP 地址

ip addr

查看路由表:

ip route

2. 查看网络连接

ss -tunap

参数说明:

  • -t:TCP。

  • -u:UDP。

  • -n:显示数字地址和端口。

  • -a:显示全部连接及监听端口。

  • -p:显示关联进程。

3. 查看监听端口

ss -lntp

示例:

State  Recv-Q Send-Q Local Address:Port
LISTEN 0      511    0.0.0.0:80
LISTEN 0      511    0.0.0.0:443
LISTEN 0      128    127.0.0.1:8000

其中:

  • 80:HTTP。

  • 443:HTTPS。

  • 8000:示例应用服务端口。

如果 FastAPI 只需要由本机 Nginx 反向代理访问,通常可以监听 127.0.0.1,而不是直接暴露给公网。

4. 检查端口是否开放

ss -lntp | grep ':443'

检查本机服务:

curl -I http://127.0.0.1:8000

检查网站:

curl -I https://example.com

5. 检查 DNS 解析

安装工具:

apt install -y dnsutils

查询域名:

dig example.com

指定 DNS 服务器:

dig @1.1.1.1 example.com

也可以使用:

nslookup example.com

6. 测试网络连通性

ping -c 4 1.1.1.1

测试域名:

ping -c 4 example.com

如果 IP 可以访问但域名无法解析,应该优先检查 DNS。

注意,部分服务器或网络环境会屏蔽 ICMP,因此 ping 不通不一定意味着 TCP 服务不可访问。

7. 查看网络路由路径

安装:

apt install -y traceroute

执行:

traceroute example.com

也可以使用:

tracepath example.com

如果怀疑是 TCP 端口问题,可以进一步使用 nc:

apt install -y netcat-openbsd
nc -vz example.com 443

八、用户与权限管理

Linux 服务器通常不建议长期使用 root 账户进行所有操作。

可以创建普通管理用户,并通过 sudo 执行需要管理员权限的命令。

1. 创建用户

adduser admin

按照提示设置密码。

2. 添加 sudo 权限

usermod -aG sudo admin

确认用户组:

groups admin

3. 切换用户

su - admin

4. 使用 sudo

sudo apt update

5. 查看当前用户

whoami

查看登录用户:

who

查看更详细的登录记录:

last

6. 查看文件权限

ls -l

例如:

-rw-r--r-- 1 root root 1024 Nov 7 config.txt

权限说明:

权限 含义
r 读取
w 写入
x 执行

7. 修改文件权限

chmod 644 config.txt

设置目录权限:

chmod 755 /var/www/html

8. 修改文件所有者

chown admin:admin config.txt

递归修改目录:

chown -R admin:admin /var/www/html

注意:递归修改网站目录权限前,应确认 Web 服务运行用户和目录用途,避免破坏原有权限配置。

九、SSH 安全维护

SSH 是远程管理 Debian 服务器的重要入口。

如果 SSH 配置不当,可能增加暴力破解和未授权登录风险。

1. 查看 SSH 服务状态

systemctl status ssh

2. 查看 SSH 登录日志

journalctl -u ssh -n 100

也可以查看:

tail -n 100 /var/log/auth.log

3. 修改 SSH 端口

编辑配置:

nano /etc/ssh/sshd_config

例如:

Port 2222
PermitRootLogin no
PubkeyAuthentication yes
PasswordAuthentication no

说明:

  • Port:修改 SSH 监听端口。

  • PermitRootLogin no:禁止 root 直接登录。

  • PubkeyAuthentication yes:允许密钥认证。

  • PasswordAuthentication no:关闭密码认证。

重要: 修改 SSH 配置前,必须先确保普通用户具有 sudo 权限,并且已经测试过 SSH 密钥登录。还要先在云平台防火墙或系统防火墙中放行新端口。

检查配置:

sshd -t

重启 SSH:

systemctl restart ssh

不要立即关闭当前 SSH 会话。

打开另一个终端,测试新端口:

ssh -p 2222 admin@服务器IP

确认可以正常登录后,再关闭旧连接。

4. 安装 Fail2ban

Fail2ban 可以根据日志识别反复失败的登录行为,并临时封禁相关来源 IP。

安装:

apt install -y fail2ban

启动并设置开机启动:

systemctl enable --now fail2ban

查看状态:

fail2ban-client status

查看 SSH 规则:

fail2ban-client status sshd

具体规则应根据 SSH 日志路径、认证方式和实际登录策略配置。

十、Debian 系统更新与软件包管理

Debian 使用 APT 管理软件包。

定期更新系统能够修复已知漏洞、改善稳定性。

1. 更新软件包索引

apt update

2. 升级已安装软件包

apt upgrade

执行前建议查看将要升级的内容。

3. 完整升级

apt full-upgrade

full-upgrade 可能安装或删除软件包,以完成依赖关系调整,因此在生产服务器上应先检查变更计划。

4. 查找软件包

apt search nginx

5. 查看软件包信息

apt show nginx

6. 安装软件

apt install nginx

7. 卸载软件

apt remove nginx

同时删除软件包配置:

apt purge nginx

8. 查看可升级软件

apt list --upgradable

9. 查看是否需要重启

安装:

apt install -y needrestart

运行:

needrestart

它可以帮助判断哪些服务仍在使用旧版本库,以及是否需要重启服务或系统。

生产服务器更新前,建议先备份配置和重要数据,并安排维护窗口。

十一、时间与时区管理

服务器时间不正确,可能导致:

  • 日志时间混乱。

  • HTTPS 证书验证异常。

  • 数据库时间不一致。

  • 定时任务执行时间错误。

  • Token 过期判断异常。

1. 查看当前时间

date

2. 查看时区

timedatectl

3. 设置时区

例如设置为上海时间:

timedatectl set-timezone Asia/Shanghai

设置为 UTC:

timedatectl set-timezone UTC

4. 查看 NTP 同步状态

timedatectl status

查看:

System clock synchronized: yes
NTP service: active

如果没有启用时间同步,可以根据系统配置使用 systemd-timesyncd 或 chrony。

例如:

apt install -y chrony

启动:

systemctl enable --now chrony

查看同步状态:

chronyc tracking

不要在生产服务器上随意关闭时间同步。

十二、备份与恢复

备份是服务器运维中非常重要的一项工作。

服务器可能遇到:

  • 磁盘损坏。

  • 数据库误删除。

  • 系统升级失败。

  • 配置文件被覆盖。

  • 用户误操作。

  • VPS 服务商故障。

因此,重要数据必须定期备份。

1. 备份配置文件

例如备份 Nginx 配置:

tar -czf nginx-config-$(date +%F).tar.gz /etc/nginx

2. 备份网站目录

tar -czf website-$(date +%F).tar.gz /var/www/html

3. 备份 MySQL 数据库

安装 MySQL 客户端工具后,可以使用:

mysqldump -u root -p database_name > database.sql

如果需要导出所有数据库:

mysqldump -u root -p --all-databases > all-databases.sql

具体权限和认证方式应根据 MySQL 版本及账号配置调整。

4. 恢复 MySQL 数据库

mysql -u root -p database_name < database.sql

5. 备份文件传输到其他服务器

使用 scp:

scp backup.tar.gz admin@远程服务器IP:/backup/

使用 rsync:

rsync -avz /var/www/html/ admin@远程服务器IP:/backup/html/

6. 备份策略建议

数据类型 建议频率
数据库 每天
网站上传文件 每天或按变更频率
配置文件 修改后立即备份
系统镜像 重要升级前
完整服务器备份 定期执行

备份不能只保存在同一台服务器上。

建议至少保留一份异地备份,并定期进行恢复测试。

十三、定时任务管理

Linux 使用 cron 实现定时任务。

1. 编辑当前用户定时任务

crontab -e

2. 查看定时任务

crontab -l

3. 每天凌晨 2 点执行任务

0 2 * * * /usr/local/bin/backup.sh

4. 每 5 分钟执行一次

*/5 * * * * /usr/local/bin/check.sh

5. 每周日凌晨 3 点执行

0 3 * * 0 /usr/local/bin/weekly-backup.sh

Cron 表达式格式:

分 时 日 月 星期 命令

例如:

30 1 * * * /usr/local/bin/backup.sh

表示每天凌晨 1:30 执行。

建议在脚本中使用绝对路径,并明确设置日志输出:

0 2 * * * /usr/local/bin/backup.sh >> /var/log/backup.log 2>&1

还要注意,cron 的运行环境通常比交互式 Shell 简单,不要假设它自动加载了用户的全部环境变量。

十四、常用故障排查流程

掌握命令之后,更重要的是形成排障思路。

场景一:网站无法访问

按顺序检查:

第一步:检查服务器是否正常运行

uptime

第二步:检查 Nginx 状态

systemctl status nginx

第三步:检查端口

ss -lntp

第四步:检查 Nginx 配置

nginx -t

第五步:查看错误日志

tail -n 100 /var/log/nginx/error.log

第六步:检查后端服务

systemctl status fastapi

第七步:本机测试后端

curl -I http://127.0.0.1:8000

通过逐层排查,可以判断问题出在 Nginx、后端程序、端口监听还是网络访问环节。

场景二:服务器 CPU 占用过高

查看 CPU:

top

查看 CPU 排名前 10 的进程:

ps aux --sort=-%cpu | head -10

找到进程后:

ps -fp PID

检查对应服务日志:

journalctl -u 服务名称 -n 100

不要直接结束高 CPU 进程,应先判断它是否正在执行正常任务。

场景三:服务器磁盘空间不足

检查磁盘:

df -h

检查大目录:

du -h --max-depth=1 /var 2>/dev/null

检查日志:

journalctl --disk-usage

检查大文件:

find /var -type f -size +100M 2>/dev/null

确定文件用途后再决定清理方式。

场景四:MySQL 无法启动

查看服务:

systemctl status mysql

查看日志:

journalctl -u mysql -n 100

查看磁盘:

df -h

检查端口:

ss -lntp | grep 3306

如果出现数据目录权限、磁盘空间或配置错误,应根据日志具体处理,不要直接删除数据库文件。

场景五:服务器网络不通

依次检查:

ip addr
ip route

测试公网 IP:

ping -c 4 1.1.1.1

检查 DNS:

dig example.com

检查 HTTPS 端口:

nc -vz example.com 443

这样可以初步区分网卡、路由、DNS 和 TCP 连接问题。

十五、日常运维命令速查表

以下命令建议熟练掌握。

任务 命令
查看系统版本 cat /etc/os-release
查看内核 uname -r
查看运行时间 uptime
查看 CPU 和进程 top
查看内存 free -h
查看磁盘 df -h
查看目录大小 du -sh 目录
查找大文件 find / -type f -size +100M
查看端口 ss -lntp
查看进程 ps aux
查看服务 systemctl status 服务名
查看失败服务 systemctl --failed
查看服务日志 journalctl -u 服务名 -n 100
实时查看日志 journalctl -u 服务名 -f
查看 DNS dig 域名
测试 HTTP curl -I URL
更新软件索引 apt update
升级软件 apt upgrade
清理缓存 apt clean
查看登录记录 last
查看登录用户 who
查看时区 timedatectl
编辑定时任务 crontab -e

十六、建议建立每日运维检查清单

日常运维不一定每天都需要执行大量命令,但应该形成固定的检查习惯。

每日检查

  • 查看服务器 CPU 和负载。

  • 查看内存和 Swap。

  • 检查磁盘空间。

  • 检查关键服务状态。

  • 检查网站是否正常访问。

  • 查看关键服务错误日志。

  • 检查数据库是否正常运行。

  • 确认备份任务是否执行成功。

每周检查

  • 检查系统安全更新。

  • 检查异常 SSH 登录记录。

  • 检查磁盘增长趋势。

  • 检查日志占用情况。

  • 检查备份文件是否完整。

  • 检查是否存在异常进程和监听端口。

每月检查

  • 执行一次备份恢复测试。

  • 检查用户和 SSH 权限。

  • 检查证书有效期。

  • 检查系统软件包更新情况。

  • 检查服务器资源使用趋势。

  • 检查防火墙和安全策略。

十七、总结

Debian 日常运维的核心不是记住所有命令,而是能够通过正确的工具发现问题、定位问题并安全处理问题。

建议重点掌握以下内容:

  1. 系统信息:uname、hostnamectl、uptime。

  2. 资源监控:top、htop、free。

  3. 磁盘管理:df、du、find。

  4. 进程管理:ps、kill、lsof。

  5. 服务管理:systemctl。

  6. 日志分析:journalctl、grep、tail。

  7. 网络排查:ip、ss、dig、curl。

  8. 用户权限:adduser、sudo、chmod、chown。

  9. 安全维护:SSH 密钥、Fail2ban、防火墙。

  10. 数据保护:备份、恢复、定时任务。

对于一台长期运行的 Debian 服务器,资源监控、日志分析、安全更新和异地备份应当成为常规工作,而不是等到网站出现故障后才开始处理。

【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0)

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。