当前位置:首页 > 网络编程 > 正文内容

Debian系统维护技巧与方法

2024-11-09网络编程64

维护Debian系统是确保其稳定性、安全性和最佳性能的关键。系统管理员需要掌握一系列的技巧来处理从用户管理到硬件配置的各种任务。本教程将介绍一些基础而重要的维护技巧,帮助管理员有效地监控和维护各自的Debian系统。

一、系统

可以通过下面的方法检查谁登录在系统里。

  • who(1) 显示谁登录在系统里面;

  • w(1) 显示谁登录在系统里面,他们正在在做什么;

  • last(1) 显示用户最后登录的列表;

  • lastb(1) 显示用户最后错误登录的列表。

“/var/run/utmp” 和 “/var/log/wtmp” 存储这样的用户信息。

二、警告所有人

可以通过下面的方式使用 wall(1) 给登录系统的每一个人发送信息。

$ echo "We are shutting down in 1 hour" | wall

三、硬件识别

对于 PCI 类设备(AGP, PCI-Express, CardBus, ExpressCard 等), 一开始就使用 lspci(8) (也许加上 “-nn” 选项) 进行硬件识别比较好。

此外,可以通过阅读 “/proc/bus/pci/devices” 里面的内容或浏览”/sys/bus/pci” 下面的目录树来进行硬件识别

硬件识别工具列表:

软件包流行度大小说明
pciutilsV:244, I:991212Linux PCI 工具: lspci(8)
usbutilsV:72, I:868325Linux USB 工具: lsusb(8)
nvme-cliV:14, I:221621Linux NVMe 工具: nvme(1)
pcmciautilsV:6, I:1091Linux PCMCIA 工具: pccardctl(8)
scsitoolsV:0, I:2346SCSI 硬件管理工具集: lsscsi(8)
procinfoV:0, I:9132从 “/proc”: lsdev(8) 获得系统信息
lshwV:13, I:91919硬件配置信息: lshw(1)
discoverV:40, I:95798硬件识别系统: discover(8)

四、硬件配置

像 GNOME 和 KDE 这类现代图形桌面系统,虽然大部分硬件的配置都能够通过相应的图形配置工具来管理,但知道一些配置它们的基础方式,也是一个好的主意。

硬件配置工具列表:

软件包流行度大小说明
console-setupV:89, I:967428Linux 控制台字体和键盘表工具
x11-xserver-utilsV:298, I:524568X 服务端工具: xset(1), xmodmap(1)
acpidV:85, I:154158管理高级可配置和电源接口(ACPI)事件分发的后台守护进程(daemon)
acpiV:10, I:14247显示 ACPI 设备信息的工具
sleepdV:0, I:086在笔记本空闲时,使其进入休眠状态的后台守护进程(daemon)
hdparmV:183, I:350256硬盘访问优化 (参见 第 9.6.9 节 “硬盘优化”)
smartmontoolsV:206, I:2492358使用 S.M.A.R.T. 控制和监控存储系统
setserialV:4, I:7103串口管理工具集
memtest86+V:1, I:2112711内存硬件管理工具集
scsitoolsV:0, I:2346SCSI 硬件管理工具集
setcdV:0, I:037光驱访问优化
big-cursorI:026X 系统的大鼠标光标

这里, ACPI 是一个比 APM 新的电源管理系统框架。

注意:现代系统的 CPU 频率调整功能,是由内核模块 acpi_cpufreq 管理的。

五、系统和硬件时间

下面设置系统的硬件时间为:MM/DD hh:mm, CCYY.

# date MMDDhhmmCCYY
# hwclock --utc --systohc
# hwclock --show

Debian 系统的时间通常显示为本地时间,但硬件时间通常使用 UTC(GMT) 时间。如果硬件时间设置为 UTC 时间,请在“/etc/default/rcS”里面设置“UTC=yes”。

下面是重新配置 Debian 系统使用的时区。

# dpkg-reconfigure tzdata

如果希望通过网络来更新系统时间,考虑使用 ntp, ntpdate 和 chrony 这类包提供的 NTP 服务。在 systemd 下,是使用 systemd-timesyncd 来替代进行网络时间同步。

六、终端配置

有几个组件可以用来配置字符控制台和 ncurses(3) 系统功能。

“/etc/terminfo/*/*” 文件(terminfo(5));
  • “$TERM” 环境变量(term(7));

  • setterm(1)、stty(1)、tic(1) 和 toe(1)。

如果 xterm 的 terminfo 对非 Debian 的 xterm 不起作用,则当从远程登录到 Debian 系统时,需要改变终端类型 “$TERM”,从 “xterm” 更改为功能受限的版本(例如 “xterm-r6”)。

七、声音基础设施

用于现在的 Linux 的声卡设备驱动程序由 高级 Linux 声音体系(Advanced Linux Sound Architecture,ALSA) 提供。ALSA 提供了兼容之前的 开放声音系统(Open Sound System,OSS)的模拟模式。

应用软件不仅可被配置为不仅直接访问声音设备,也可以通过一些标准化声音服务端系统来访问它们。目前,PulseAudio、JACK 和 PipeWire 被用作声音的服务端系统。

每个流行的桌面环境通常都有一个通用的声音引擎。每个被应用程序使用的声音引擎都可以选择连接到不同的声音服务器。

使用 “cat /dev/urandom > /dev/audio” 或 speaker-test(1) 来测试扬声器(^C 停止)。如果无法听到声音,那扬声器可能连接到了一个静音输出。现代的声音系统有许多输出。alsa-utils 软件包中的 alsamixer(1) 可以很好地配置声音和静音设置。

声音软件包:

软件包流行度大小说明
alsa-utilsV:323, I:4632605配置和使用 ALSA 的工具
oss-compatV:1, I:1818在 ALSA 下兼容 OSS,预防 “/dev/dsp not found” 错误
pipewireV:264, I:315119音频和视频处理引擎多媒体服务端 – 元数据包
pipewire-binV:274, I:3151630音频和视频处理引擎多媒体服务端 – 音频服务和命令行程序
pipewire-alsaV:99, I:148205音频和视频处理引擎多媒体服务端 – 代替 ALSA 的音频服务
pipewire-pulseV:155, I:20349音频和视频处理引擎多媒体服务端 – 代替 PulseAudio 的音频服务
pulseaudioV:260, I:3146472PulseAudio 服务端
libpulse0V:409, I:578975PulseAudio 客户端库
jackdV:2, I:199JACK Audio Connection Kit. (JACK) 服务器(低延迟)
libjack0V:1, I:10329JACK Audio Connection Kit. (JACK) 库(低延迟)
libgstreamer1.0-0V:428, I:5934454GStreamer:GNOME 声音引擎
libphonon4qt5-4V:72, I:161593Phonon:KDE 声音引擎

八、关闭屏幕保护

关闭屏幕保护,使用下面的命令。

关闭屏幕保护命令列表:

环境命令
Linux 控制台setterm -powersave off
X 窗口(关闭屏幕保护)xset s off
X 窗口(关闭 dpms)xset -dpms
X 窗口(屏幕保护 GUI 配置)xscreensaver-command -prefs

九、关闭蜂鸣声

可以把电脑的扬声器拔掉来关闭蜂鸣声。把 pcspkr 内核模块删除,也可以做到这点。

bash(1) 用到的 readline(3) 程序,当遇到告警字符(ASCII=7)时,将会发生。下面的操作将阻止发生。

$ echo "set bell-style none">> ~/.inputrc

十、内存使用

这里有两种可用的方法来得到内存的使用情况:

“/var/log/dmesg” 中的内核启动信息包含了可用内存的精确总大小;

free(1) 和 top(1) 显示正在运行的系统中内存资源的相关信息。

下面是一个例子:

# grep '\] Memory' /var/log/dmesg
[ 0.004000] Memory: 990528k/1016784k available (1975k kernel code, 25868k reserved, 931k data, 296k init)
$ free -k
total used free shared buffers cached
Mem: 997184 976928 20256 0 129592 171932
-/+ buffers/cache: 675404 321780
Swap: 4545576 4 4545572

“dmesg 告诉 free 为 990 MB,而 free -k 告诉 free 为 320 MB。这丢失了超过 600 MB ……”。“Mem:” 这行中 “used” 较大的值以及 “free” 较小的值,放轻松,需要查看的是下面的那个(在上面的例子中它们是 675404 和 321780)。

对于我的 MacBook,有 1GB=1048576k 内存(显卡系统用掉一些),我看到的如下。

报告的内存大小:

报告大小
dmesg 中 total 的大小1016784k = 1GB – 31792k
dmesg 中的 free990528k
shell 下的 total997184k
shell 下的 free20256k(但有效的为 321780k)

十一、系统安全性检查

糟糕的系统维护可能会暴露系统,导致它被外部非法使用。对于系统安全性和完整性的检查,需要从下面这些方面开始。

  • debsums 软件包;

  • chkrootkit 软件包;

  • clamav 软件包家族。

用于系统安全性和完整性检查的工具:

软件包流行度大小说明
logcheckV:6, I:8110后台守护进程(daemon),将系统日志文件中的异常通过邮件发送给管理员
debsumsV:5, I:3698实用程序,使用 MD5 校验码对已安装软件包的文件进行校验
chkrootkitV:7, I:17925rootkit 检测软件
clamavV:9, I:4527455Unix 的反病毒实用程序 —— 命令行界面
tigerV:1, I:27800报告系统安全漏洞
tripwireV:2, I:212168文件和目录完整性检测软件
johnV:1, I:9471先进的密码破解工具
aideV:1, I:1293高级入侵环境检测 —— 静态二进制
integritV:0, I:02659文件完整性验证程序
crackV:0, I:1149密码猜测程序

下面是一个简单的脚本,用来检测典型的所有人可写的错误文件权限。

# find / -perm 777 -a \! -type s -a \! -type l -a \! \( -type d -a -perm 1777 \)

注意:由于 debsums 软件包使用本地存储的 MD5 校验码,因此面对恶意攻击,也不能完全相信系统安全性检测工具。