每位系统管理员现在必须掌握的五个必备 Linux 命令

通过这份涵盖每位系统管理员必须掌握的五种不可或缺的 Linux 工具的必备指南,精通命令行。我们详细介绍了用于服务管理的 `systemctl`、用于网络分析的 `ss`、用于系统配置(或包管理)的 `dnf`/`apt`、用于高级自动化和数据解析的 `awk`,以及用于安全远程访问和隧道的 `ssh`。了解实用用法、最佳实践和高级标志,以简化日常操作、增强故障排除能力并提高系统安全性。

每位系统管理员必须立即掌握的五个基本Linux命令

当你能从命令行快速检查服务器时,Linux系统管理会变得更容易。仪表盘有帮助,但当服务宕机、端口关闭或需要解析日志时,这些基本的Linux命令能为你提供最快的答案路径。

本指南涵盖了你将经常使用的五个命令:systemctlssaptdnfawkssh。示例侧重于日常操作、故障排除和安全远程访问。

1. 服务生命周期管理:systemctl

systemctl命令是控制systemd的主要接口,systemd是大多数当前服务器发行版(包括RHEL、Fedora、Debian和Ubuntu)使用的服务管理器。你用它来管理服务、定时器、套接字和启动目标。

核心systemctl操作

理解运行时状态(start/stop)和启动配置(enable/disable)之间的区别至关重要。

命令 描述 用途
status 显示详细的当前状态,包括最近的日志。 故障排除和即时检查。
start / stop 立即更改服务状态。 运行时控制。
enable / disable 配置服务在启动时启动/不启动。 持久性控制。
restart 在一个操作中停止然后启动服务。 应用配置更改。
reload 告诉服务重新加载其配置文件而不中断(如果支持)。 零停机配置更新。
# 检查Web服务器的状态
sudo systemctl status httpd.service

# 确保SSH服务在启动时启动并立即启动它
sudo systemctl enable sshd --now

# 列出所有失败的服务
systemctl list-units --type=service --state=failed

最佳实践: 在启动或重启服务后,始终使用systemctl status <service>来确认服务是否正常运行,并检查输出中的配置错误。

2. 网络分析和套接字统计:ss

ss命令(套接字统计)是已弃用的netstat的现代、更快的替代品。它对于排查网络连接问题、识别开放端口、验证防火墙规则以及诊断与套接字相关的性能瓶颈至关重要。

实用的ss标志

系统管理员主要使用ss来查看哪些端口是开放的以及哪些应用程序正在监听。

# 显示监听的TCP套接字(t)、UDP套接字(u)、数字地址(n)和进程信息(p)
ss -tulnp

# 查找监听端口80的进程
sudo ss -tulnp | grep ':80'

# 显示所有已建立的到服务器的连接
ss -o state established

高级用法:过滤和汇总

你可以使用过滤选项快速分析特定的连接类型,这在安全审计或事件响应期间非常宝贵。

# 显示来自源地址192.168.1.5的TCP连接
ss -n state established '( src 192.168.1.5 )'

# 按协议汇总套接字统计信息
ss -s

3. 稳健的软件配置:dnf / apt

无论你是使用dnf管理RHEL系列系统,还是使用apt管理Debian系列系统,包管理都能保持服务器打补丁和可用。良好的包管理习惯包括刷新元数据、审查升级、删除未使用的包以及知道哪个仓库提供了某个包。

基本包管理任务

任务 dnf (RHEL/Fedora) apt (Debian/Ubuntu)
更新元数据 sudo dnf check-update sudo apt update
应用安全/系统更新 sudo dnf upgrade sudo apt upgrade
安装包 sudo dnf install httpd sudo apt install apache2
删除包 sudo dnf remove <package> sudo apt remove <package>
删除未使用的依赖项 sudo dnf autoremove sudo apt autoremove
搜索包 dnf search <keyword> apt search <keyword>
# 示例:更新和清理Ubuntu服务器
sudo apt update && sudo apt upgrade -y
sudo apt autoremove

# 示例:安装包并查看包详细信息 (RHEL/Fedora)
sudo dnf install vim-enhanced
dnf info vim-enhanced

提示: 在生产环境中错开更新。在Debian和Ubuntu上,理解apt upgradeapt full-upgrade之间的区别。在RHEL系列系统上,将常规包更新与主要操作系统版本升级分开。

4. 高级文本处理和报告:awk

虽然grep非常适合简单过滤,sed处理流编辑,但awk编程语言是脚本中结构化数据分析、报告和复杂文本操作的终极工具。系统管理员经常使用awk来解析日志文件、配置文件和命令输出。

awk逐行处理文本,根据分隔符(默认为空白)将每行分成字段。变量$1$2等引用这些字段。

awk语法和示例

# 语法:awk 'PATTERN { ACTION }'

# 示例:从/etc/passwd打印用户名(字段1)和shell(字段7)(分隔符为':')
awk -F ':' '{ print "User: " $1 " | Shell: " $7 }' /etc/passwd

# 示例:查找所有使用超过10% CPU的进程,并打印PID和CPU使用率
ps aux | awk 'NR>1 && $3 > 10 { print "PID: " $2 " | CPU%: " $3 }'

# 示例:对'ls -l'列出的文件大小(字段5)求和
ls -l | awk 'NR>1 { sum += $5 } END { print "Total Bytes: " sum }'

当数据需要在传递给另一个命令或存储到报告之前进行提取、格式化或计算时,awk非常有用。例如,你可以将嘈杂的进程输出转换为简短的CPU报告,而无需打开电子表格。

5. 安全远程访问和隧道:ssh

安全Shell协议(ssh)是远程Linux管理的生命线。系统管理员不仅必须掌握基本登录,还必须掌握高级配置、密钥管理和隧道技术,以维护对基础设施的安全高效访问。

掌握基于密钥的身份验证

密码身份验证容易受到暴力攻击。系统管理员必须依赖SSH密钥来获得更强的安全性。

  1. 生成密钥对:ssh-keygen -t ed25519
  2. 将公钥复制到远程服务器:ssh-copy-id user@remote_host

基本ssh配置和用法

本地SSH配置文件(~/.ssh/config)允许你定义别名和永久连接参数,从而简化日常操作。

# 示例 ~/.ssh/config 条目
Host db-prod-server
    Hostname 192.168.10.50
    User sysadmin_user
    Port 2222
    IdentityFile ~/.ssh/id_ed25519_prod
    LocalForward 8080 127.0.0.1:80

SSH隧道(端口转发)

隧道允许你安全地访问防火墙后面的服务或安全地代理流量。两种主要类型是:

  • 本地转发(-L): 将你本地机器上的一个端口映射到远程服务器可达的主机和端口。

    # 通过本地端口5000访问远程服务器上运行的数据库(端口3306)
    ssh -L 5000:localhost:3306 user@remote_host
    
  • 远程转发(-R): 将远程端口映射到本地机器可达的主机和端口。当远程服务器需要临时访问本地开发服务时很有用。

    # 远程主机可以通过其端口8080访问我的本地Web服务器(80)
    ssh -R 8080:localhost:80 user@remote_host
    

总结

如果你能用systemctl管理服务,用ss检查套接字,用aptdnf保持包更新,用awk解析文本,并用ssh安全地访问系统,你就能处理大多数一线Linux管理工作。在你的运行手册中保留一小套经过测试的命令,然后根据环境需求进行扩展。