对于 Linux 系统管理员来说最有用的 CLI 工具
系统管理员(sysadmin)负责生产系统和服务的日常运营。系统管理员的关键角色之一是确保运营服务全天候可用。为此,他们必须仔细规划备份策略、灾难管理策略、定期维护、安全审核等。与其他学科一样,系统管理员也有自己的交易工具。在正确的时间、正确的情况下使用正确的工具可以帮助维护操作系统的健康,同时最大限度地减少服务中断和最长的正常运行时间。

本文将介绍一些推荐给系统管理员在日常活动中最流行和最有用的 CLI 工具。如果您想推荐此处未列出的任何有用工具,请不要忘记在评论部分中分享。
网络工具
1. ping
使用 ICMP 回显/应答检查远程主机的端到端连接(RTT 延迟、抖动、数据包丢失)。用于检查系统状态和可达性。
2. hping
网络扫描和测试工具,可以生成ICMP/TCP/UDP ping数据包。通常用于高级端口扫描、防火墙测试、手动路径 MTU 发现和碎片测试。
3. traceroute
通过TTL限制的ICMP/UDP/TCP探测报文发现从本地主机到远程目的主机的三层转发路径。对于解决网络可达性和路由问题很有用。
4. mtr
traceroute
的一种变体,通过运行统计来表征每跳数据包丢失/抖动。对于表征路由路径延迟很有用。5. netcat/socat
TCP/IP 网络的瑞士军刀,允许通过 TCP/UDP 读取/写入字节流。对于排除防火墙策略和服务可用性故障很有用。
6. dig
DNS故障排除工具,可以生成正向查询、反向查询、查找权威名称服务器、检查CNAME、MX等DNS记录。可以指示查询您选择的特定 DNS 服务器。
7. nslookup
另一个 DNS 检查/故障排除工具。适用于所有 DNS 查询和记录。可以查询特定的 DNS 服务器。
8. dnsyo
一种 DNS 测试工具,通过从遍布全球 1,500 个不同网络的多个开放解析器执行 DNS 查找来检查 DNS 传播。
9. lsof
显示有关进程打开的文件(例如常规文件、管道或套接字)的信息。对于监视进程或用户的开放网络连接或打开的文件很有用。
10. iftop
基于
ncurses
的 TUI 实用程序,可用于实时监控各个网络接口的带宽利用率和网络连接。可用于跟踪占用带宽的应用程序、用户、目的地和端口。11. netstat
网络统计实用程序,可以显示有关开放网络连接(TCP/UDP 端口、IP 地址)、路由表、TX/RX 流量和协议的状态信息和统计信息。对于网络相关的诊断和性能调整很有用。
12. tcpdump
一个基于
libpcap
数据包捕获库的流行数据包嗅探工具。可以以伯克利数据包过滤器格式定义数据包捕获过滤器。13. tshark
另一款 CLI 数据包嗅探器软件与其 GUI 版本 Wireshark 完全兼容。支持 1,000 种协议,并且该列表还在不断增长。对于排除故障、分析和存储实时数据包信息很有用。
14. ip
一个多功能的 CLI 网络工具,是 iproute2 包的一部分。用于检查和修改路由表、网络设备状态和 IP 隧道设置。对于查看路由表、添加/删除静态路由、配置网络接口以及解决路由问题非常有用。
15. ifup/ifdown
用于启动或关闭特定的网络接口。通常是重新启动整个网络服务的首选替代方案。
16. autossh
命令行 SSH 自动化工具,可创建 SSH 会话并在会话断开连接时自动重新启动该会话。对于跨限制性企业网络创建持久的反向 SSH 隧道通常很有用。
17. iperf
一种网络测试工具,通过在主机之间注入可定制的 TCP/UDP 数据流来测量一对主机之间的最大双向吞吐量。
18. elinks
用于基于 CLI 的服务器环境的基于文本的 Web 浏览器。
安全工具
19. iptables
用于配置 Linux 内核防火墙的用户空间 CLI 工具。提供在 Linux 内核空间内创建和修改传入、传输和传出数据包规则的方法。
20. nmap
一种流行的端口扫描和网络发现工具,用于安全审核目的。有助于找出本地网络上哪些主机已启动并正在运行,以及特定主机上打开了哪些端口。
21. TCP Wrappers
基于主机的网络 ACL 工具,可用于过滤传入/传出的请求/回复。通常与 iptables 一起使用作为额外的安全层。
22. getfacl/setfacl
查看和自定义文件和目录的访问控制列表,作为传统文件权限的扩展。
23. cryptsetup
用于创建和管理 LUKS 加密的磁盘分区。
24. lynis
基于 CLI 的漏洞扫描工具。可以扫描整个 Linux 系统,并报告潜在的漏洞以及可能的解决方案。
25. maldet
恶意软件扫描器 CLI 工具,可以检测和隔离潜在受恶意软件感染的文件。可以作为后台守护进程运行以进行持续监控。
26. rkhunter/chkrootkit
CLI 工具扫描本地系统上潜在的 rootkit、隐藏的后门和可疑的漏洞,并禁用它们。
存储工具
27. fdisk
磁盘分区编辑器工具。用于查看、创建和修改硬盘驱动器和可移动介质上的磁盘分区。
28. sfdisk
fdisk
的变体,以非交互方式访问或更新分区表。作为备份和恢复过程的一部分,可用于自动执行磁盘分区。29. parted
另一个磁盘分区编辑器,可以支持大于 2TB 的 GPT(GUID 分区表)磁盘。 Gparted 是parted 的GTK+ GUI 前端。
30. df
用于检查不同分区或文件目录的已用/可用存储和挂载点。存在用户友好的变体
dfc
。31. du
用于查看与不同文件和目录关联的当前磁盘使用情况(例如,
du -sh *
32. mkfs
用于在各个磁盘分区上构建文件系统的磁盘格式化命令。许多文件系统都存在特定于文件系统的 mkfs 版本,包括 ext2、ext3、ext4、bfs、ntfs、vfat/fat。
33. fsck
一个 CLI 工具,用于检查文件系统是否有错误并在可能的情况下进行修复。通常在必要时在启动时自动运行,但也可以在卸载分区后根据需要手动调用。
34. mount
用于将物理磁盘分区、网络共享或远程存储映射到本地安装点。挂载点中的任何读/写都会导致相应的实际存储中实际数据被读/写。
35. mdadm
用于管理物理块设备之上的软件 RAID 设备的 CLI 工具。可以创建、构建、扩展或监控 RAID 阵列。
36. lvm
一套用于管理卷组和物理/逻辑卷的 CLI 工具,允许用户在多个物理磁盘上创建、调整大小、拆分和合并卷,并以最短的停机时间。
日志处理工具
37. tail
用于监视(增长的)日志文件的尾部部分。其他变体包括
multitail
(多窗口监控)和ztail
(inotify 支持以及正则表达式过滤和着色)。38. logrotate
一个 CLI 工具,可以按预定义的时间间隔分割、压缩和邮寄旧/大日志文件。对于管理可能产生大量日志文件的繁忙服务器很有用。
39. grep/egrep
可用于过滤特定模式或正则表达式的日志内容。变体包括用户友好的
ack
和更快的ag
。40. awk
多功能文本扫描和处理工具。通常用于从文本/日志文件中提取某些列或字段,并将结果提供给其他工具。
41. sed
文本流编辑器工具,可以过滤和转换(例如,删除行/空格、替换/转换单词、添加编号)文本流并将结果通过管道传输到 stdout/stderr 或其他工具。
备份工具
42. rsync
一种快速的单向增量备份和镜像工具。通常用于将数据存储库复制到异地存储,可以选择通过 SSH 或 stunnel 等安全连接。
43. rdiff-backup
另一种带宽高效的增量备份工具。保持两个连续快照的差异。
44. duplicity
加密的增量备份实用程序。使用 GnuPG 加密备份,并通过 SSH 传输到远程服务器。
性能监控工具
45. top
基于 CLI 的进程查看器程序。可以监控系统负载、进程状态、CPU 和内存利用率。变体包括更加用户友好的
htop
。46. ps
显示系统中所有正在运行的进程的快照。可以自定义输出以显示 PID、PPID、用户、负载、内存、累计用户/系统时间、启动时间等。变体包括 pstree,它以树形层次结构显示进程。
47. nethogs
一种带宽监控工具,可按进程对活动网络连接进行分组,并实时报告每个进程(上传/下载)的带宽消耗。
48. ngxtop
一个 Web 服务器访问日志解析器和监控工具,其界面受到
top
命令的启发。它可以实时报告 Web 请求的排序列表以及频率、大小、HTTP 返回代码、IP 地址等。49. vmstat
一个简单的 CLI 工具,显示各种运行时系统属性,例如进程计数、可用内存、分页状态、CPU 利用率、块 I/O 活动、中断/上下文切换统计信息等。
50. iotop
一个基于 ncurses 的 I/O 监控工具,按排序顺序实时显示所有正在运行的进程的磁盘 I/O 活动。
51. iostat
报告当前 CPU 利用率以及设备 I/O 利用率的 CLI 工具,其中 I/O 利用率(例如,块传输速率、字节读/写速率)是按设备或每个分区报告的。
52. sysdig
一种多功能且全面的开源服务器监控工具,用于在实时和离线模式下捕获和分析系统行为和服务器状态。
生产力工具
53. screen
用于将单个终端拆分为多个持久的虚拟终端,也可以供远程用户访问,就像类似于 teamviewer 的屏幕共享一样。
54. tmux
另一个终端多路复用器工具,可实现多个持久会话以及终端的水平/垂直拆分。
55. cheat
一个简单的 CLI 工具,让您可以方便地阅读许多常见 Linux 命令的备忘单。预先构建的备忘单是完全可定制的。
56. apropos
当您在手册页中搜索描述或关键字时很有用。
包管理工具
57. apt
事实上的包管理器,适用于基于 Debian 的系统,例如 Debian、Ubuntu、Backtrack 或elementary OS。救生员。
58. apt-fast
apt-get的配套实用程序,通过使用多个并发连接可以显着提高apt-get的下载速度。
59. apt-file
用于查找特定文件属于哪个 .deb 包,或显示特定 .deb 包中的所有文件。适用于已安装和未安装的软件包。
60. dpkg
用于手动安装 .deb 软件包的 CLI 实用程序。强烈建议尽可能使用
apt
。61. yum
事实上的自动包管理器,适用于基于 Red Hat 的系统,例如 RHEL、CentOS 或 Fedora。又一个救星。
62. rpm
通常,我仅在无法使用 yum 时才使用 rpm。有一些有用的参数,例如
-q
、-f
、-l
分别用于查询、文件和位置。
五金工具
63. lspci
一个命令行工具,显示有关已安装 PCI 设备的各种信息,例如型号名称、设备驱动程序、功能、内存地址、PCI 总线地址。
64. lshw
一个命令行工具,可查询并显示各种类别的硬件配置的详细信息(例如处理器、内存、主板、网络、视频、存储)。支持多种输出格式:html、xml、json、text。
65. inxi
全面的硬件报告工具,可概述各种硬件组件,如 CPU、显卡、声卡、网卡、温度/风扇传感器等。
如果您想推荐这里未列出的任何有用工具,请随时在评论部分分享。