在 Linux 服务器上最初 10 分钟内要做的 9 件事

在将新配置的服务器投入工作之前,请确保您了解您正在使用的东西。
205 位读者喜欢这篇文章。
Parts, modules, containers for software

Opensource.com

当我在 Linux 上测试软件(这是我工作的常规部分)时,我需要使用运行 Linux 的各种架构的多台服务器。我配置机器,安装所需的软件包,运行我的测试,收集结果,然后将机器返回到池中,以便其他人可以将其用于他们的测试。

由于我经常这样做(甚至每天多次),我在 Linux 服务器上的最初 10 分钟已成为一种日常习惯。当我第一次登录 Linux 服务器时,我会使用命令查找某些内容,以收集我需要的信息。我将在本文中介绍我的流程,但请注意,在大多数情况下,我只会给出命令名称,因此您需要确定这些命令的特定标志才能获得您需要的信息。阅读命令的手册页是一个好的开始。

1. 首次接触

一旦我登录服务器,我做的第一件事就是检查它是否具有我将要运行的测试所需的操作系统、内核和硬件架构。我经常检查服务器已运行多长时间。虽然这对于测试系统来说不是很重要,因为它将被多次重启,但我仍然觉得这些信息很有帮助。

使用以下命令获取此信息。我主要使用 Red Hat Linux 进行测试,因此如果您使用的是其他 Linux 发行版,请在文件名中使用 *-release 而不是 redhat-release

cat /etc/redhat-release
uname -a
hostnamectl
uptime

2. 还有其他人在使用吗?

一旦我知道机器满足我的测试需求,我就需要确保没有其他人在同一时间登录系统并运行他们自己的测试。虽然这不太可能,因为配置系统会为我处理这个问题,但偶尔检查一下仍然是好的——尤其是在我第一次登录服务器时。我还检查是否有其他用户(root 用户以外)可以访问系统。

使用以下命令查找此信息。最后一个命令查找 /etc/passwd 文件中具有 shell 访问权限的用户;它跳过文件中没有 shell 访问权限或 shell 设置为 nologin 的其他服务

who
who -Hu
grep sh$ /etc/passwd

3. 物理机还是虚拟机

现在我知道这台机器是我的了,我需要确定它是物理机还是虚拟机 (VM)。如果是我自己配置的机器,我可以确定我得到了我所要求的。但是,如果您使用的是您没有配置的机器,您应该检查机器是物理的还是虚拟的。

使用以下命令识别此信息。如果是物理系统,您将看到供应商的名称(例如,HP、IBM 等)以及服务器的制造商和型号;而在虚拟机中,您应该看到 KVM、VirtualBox 等,具体取决于用于创建 VM 的虚拟化软件

dmidecode -s system-manufacturer
dmidecode -s system-product-name
lshw -c system | grep product | head -1
cat /sys/class/dmi/id/product_name
cat /sys/class/dmi/id/sys_vendor 

4. 硬件

因为我经常测试连接到 Linux 机器的硬件,所以我通常使用物理服务器,而不是 VM。在物理机上,我的下一步是识别服务器的硬件功能——例如,正在运行哪种 CPU,它有多少个核心,启用了哪些标志,以及有多少内存可用于运行测试。如果我正在运行网络测试,我会检查连接到服务器的以太网或其他网络设备的类型和容量。

使用以下命令显示连接到 Linux 服务器的硬件。某些命令可能在新版本的操作系统中已弃用,但您仍然可以从 yum 仓库安装它们或切换到等效的新命令

lscpu or cat /proc/cpuinfo
lsmem or cat /proc/meminfo
ifconfig -a
ethtool <devname>
lshw
lspci
dmidecode

5. 已安装的软件

测试软件总是需要安装额外的依赖包、库等。但是,在安装任何东西之前,我会检查已安装的内容(包括版本),以及配置了哪些仓库,以便我知道软件来自哪里,并且我可以调试任何软件包安装问题。

使用以下命令识别已安装的软件

rpm -qa 
rpm -qa | grep <pkgname>
rpm -qi <pkgname>
yum repolist
yum repoinfo
yum install <pkgname>
ls -l /etc/yum.repos.d/

6. 正在运行的进程和服务

一旦我检查了已安装的软件,自然就会检查系统上正在运行的进程。这在系统上运行性能测试时至关重要——如果正在运行的进程、守护程序、测试软件等占用了大部分 CPU/RAM,那么在运行测试之前停止该进程是有意义的。这也检查了测试所需的进程或守护程序是否已启动并正在运行。例如,如果测试需要 httpd 运行,即使软件包已安装,启动守护程序的服务也可能尚未运行。

使用以下命令识别系统上正在运行的进程和已启用的服务

pstree -pa 1
ps -ef
ps auxf
systemctl

7. 网络连接

今天的机器是高度联网的,它们需要与网络上的其他机器或服务进行通信。我识别服务器上打开了哪些端口,是否有来自网络的到测试机器的任何连接,是否启用了防火墙,如果启用了,它是否阻止了任何端口,以及机器与哪些 DNS 服务器通信。

使用以下命令识别与网络服务相关的信息。如果已弃用的命令不可用,请从 yum 仓库安装它或使用等效的新命令

netstat -tulpn
netstat -anp
lsof -i
ss
iptables -L -n
cat /etc/resolv.conf

8. 内核

在进行系统测试时,我发现了解内核相关信息很有帮助,例如内核版本以及加载了哪些内核模块。我还列出任何 可调内核参数 以及它们的设置,并检查启动正在运行的内核时使用的选项。

使用以下命令识别此信息

uname -r
cat /proc/cmdline
lsmod
modinfo <module>
sysctl -a
cat /boot/grub2/grub.cfg

9. 日志

到现在为止,我已经对服务器有了很好的了解,包括安装了哪些软件以及正在运行哪些进程。我无法逃避的另一件事是日志文件——我需要知道在哪里检查不断更新的信息。

使用以下命令查看系统的日志

dmesg
tail -f /var/log/messages
journalctl

后续步骤

虽然命令和实用程序会更改,但它们显示的基础信息或多或少保持不变。您需要对您正在查找的信息的高级视图以及它属于哪个类别有一个了解,然后才能专注于要掌握哪些命令。

由于 Linux 将大部分信息保存在文件中,因此这些命令基本上是从文件中读取信息并以易于理解的方式呈现它们。下一步是确定每个命令使用哪些文件来获取要显示的信息。查找该信息的提示是 strace 命令。

接下来阅读什么
标签
User profile image.
经验丰富的软件工程专业人士。主要兴趣是安全、Linux、恶意软件。喜欢在命令行上工作。对底层软件和理解事物的工作原理感兴趣。此处表达的观点是我个人的,不代表我的雇主

6 条评论

非常感谢兄弟。我认为还应该检查磁盘。使用 df -h。

在 df 的选项中添加 'T' 甚至可以为您提供文件系统类型;这也很有用。是 ext(2/3/4) 吗?Xfs?

'df -hT' 为您提供良好的、人类可读的数值输出,并告知您文件系统类型。

回复 作者:alikemal

嗯,ifconfig 已经被弃用足够长的时间,可以在许多国家饮酒了(19 年);iproute2 已经存在足够长的时间,可以在美国饮酒了,21 年。

请更新您的文章以使用 'ip -a' 而不是 'ifconfig'。

来自维基百科:Linux 的 ifconfig 是 net-tools 软件包的一部分,于 2001 年 4 月 15 日发布了最新的 1.60 版本。许多 Linux 发行版已弃用 ifconfig 和 route 的使用,转而使用 iproute2 软件套件,例如 ArchLinux 或 RHEL 自版本 7 起,该版本自 1999 年以来已用于 Linux 2.2。”

哎,为什么我不能编辑我的评论...
我的意思是说

'ip addr'。或 'ip addr show'

回复 作者:Mike H

感谢您的这篇文章,因为学生在大学学习期间很难了解 Linux 服务器。有很多家庭作业,只有 https://essayassistant.org/ 和类似的网站可以为您编写,并节省一点时间用于自我发展!

对那些刚开始 Linux 之旅的人很有用

Creative Commons 许可协议本作品根据 Creative Commons Attribution-Share Alike 4.0 International License 许可。
© . All rights reserved.