这 14 个 Linux 命令帮助我成为更好的故障排除者
使用 Linux,尤其是作为服务器,通常意味着处理新错误并解决它们。大多数问题只需通过网络搜索即可轻松修复。但有些错误可能需要您进行一些挖掘。在本指南中,我将分享一些 Linux 命令,它们将帮助您诊断和解决此类 Linux 错误。
1 dmesg
dmesg 命令是打印 Linux 内核环形缓冲区消息的强大工具。这些消息通常包括系统启动消息和硬件错误。使用 sudo 运行命令,如下所示:
sudo dmesg
您还可以使用人类可读的时间戳来显示它们。
sudo dmesg -T
从 dmesg 获得的输出可以通过管道传输到其他命令(例如 grep)以进行进一步处理。
2 systemctl
systemctl 命令用于使用 systemd 管理系统上的服务。您可以使用该命令打开/关闭服务、检查日志条目并列出所有服务的详细信息。
要检查服务的状态,请运行:
systemctl status service_name
如果需要启动或停止服务,请运行:
systemctl start service_name
systemctl stop service_name
如果需要重新启动服务,请运行:
systemctl restart service_name
例如,我的 Apache Web 服务器没有响应。我可以检查该服务是否处于活动状态。
systemctl status apache2
如果它没有运行,我可以启动或重新启动它。
3 ps
ps 命令允许您显示有关 Linux 进程的信息并对其进行监视。要获得所有进程的详细概述,请运行:
ps aux
如果您想以分层格式列出进程,请运行:
ps -He
您可以使用 ps 命令列出进程的资源使用情况或了解某个进程 ID。
4 杀死
Kill 命令对于强制终止正在运行的进程非常有用。有时,多个进程可能会相互冲突。因此,一个进程无法执行。这时您可以终止导致问题的进程。要终止进程,您必须知道其进程 ID (PID)。您可以使用 ps 命令获取 PID。通过将 PID 传递给 Kill 命令来终止进程,
kill <PID>
例如,要终止 Apache 进程,我将运行:
kill 7052
您可能还需要 sudo 来执行命令
5 ping
ping 是一种网络工具,用于检查网络上主机的可用性。它可以帮助您确定网络连接是否有效以及 DNS 解析是否正确。
您可以通过传递主机名(最好是 URL 或 IP 地址)来使用 ping 命令,如下所示:
ping www.google.com
丢包信息还可以让您了解网络性能。您还可以在 Windows 上使用 ping。
6 lsof
lsof 命令用于列出打开的文件。它可以在很多场合使用,例如网络调试、按进程、用户和端口列出文件。
如果您想查看打开的与网络相关的文件,请运行:
lsof -i
如果您想查看特定目录中打开的文件,请使用:
lsof +D /path/to/directory
lsof 命令可以帮助您找到哪些进程正在使用哪些文件,以便您可以正确地处理它们。
7 grep
grep 命令对于通过文件和整个目录搜索字符串和模式非常有用。要进行简单的搜索,请将模式和文件名或目录传递给 grep 命令。
grep -i pattern file_name
grep -r pattern dir_name
假设您有包含数千个条目的日志文件。 grep 命令将帮助您搜索与您的问题相关的行。您还可以搜索“错误”或“失败”等常用词来快速找到线路。您还可以将另一个命令的输出通过管道传输到 grep。
8 尾部
tail命令通常用于显示文件的最后几行。如果您的日志文件太长并且您只对文件的最新添加内容感兴趣,则 tail 会很方便。您还可以使用 tail 主动监视日志文件,使用以下命令:
tail -f file_name
该命令的另一个有用的功能是显示一定数量的行。假设您要显示文件的最后 20 行。然后运行:
tail -n 20 file_name
tail 命令还可以用于通过管道传输另一个命令的输出。
9 journalctl
Journalctl 命令对于查询和显示 systemd 日志中的日志非常有用。您可以简单地运行不带任何参数的命令(添加 sudo 可以更好地获取更多详细信息。)
sudo journalctl
您还可以显示带有额外信息的最新日志。
如果您想检查每个服务的日志,请运行:
journalctl -u service_name
假设您发生了系统崩溃。 Journalctl 命令将帮助您调查并确定根本原因。
10 strace
strace 命令跟踪系统调用和信号。它提供了流程正在执行的操作的详细信息。 strace 的一个简单用途是使用 PID 来跟踪正在运行的进程。
strace -p PID
你也可以通过系统调用得到上面的输出。
strace -p PID -e system_call,system_call2
它还允许您将跟踪输出保存到文件中。
strace -o output.txt command_name
如果某个程序恰好挂起,而您找不到原因,则可以跟踪该程序正在进行的系统调用并揭示其卡住的原因。
11 htop
htop 命令行工具就像一个交互式进程查看器,提供系统进程的实时动态概览。您需要先安装它,然后运行:
htop
它的底部有许多选项。按 F6 可让您按不同的指标(例如 CPU 或内存使用情况)对进程进行排序。如果您的系统负载较重,htop 可通过直观的界面帮助您快速识别资源占用情况。
12 df
df命令用于分析磁盘空间使用情况。它为您提供总磁盘空间和可用磁盘空间的概览。您可以按原样运行该命令。
df
但运行该命令的更好方法是使用 -h 标志,它以更易于理解的格式显示磁盘使用情况。
df -h
如果系统空间不足,可以使用 df 命令来分析哪些文件占用的空间最多,并相应地分析可用空间。
13 免费
free 命令用于检查系统的 RAM 使用情况。这还包括交换内存。只需运行这样的命令:
free
与 df 一样,free 命令可以选择以人类可读的格式显示信息。
free -h
如果内存不足,free 命令将为您提供帮助,并让您知道是否正在发生交换。
14 lscpu
lscpu 命令显示有关系统体系结构的信息。有一次我尝试安装一个软件但失败了,才发现我正在尝试安装针对ARM CPU的软件,而我的系统是x86_64。要显示 CPU 信息,请运行:
lscpu
您还可以获得其他信息,例如 CPU 功能、虚拟化功能和漏洞。
学习这些重要的Linux命令不仅帮助我成为更好的故障排除者,而且加深了我对Linux系统操作的理解。这些命令本质上是多种多样的,因此无论您可能面临什么样的问题,这些命令都会派上用场。