当前位置: 首页 > 科技观察

首次登录Linux服务器时应立即做的9件事

时间:2023-03-22 14:22:30 科技观察

当我在Linux上测试软件时(这是我工作的常规部分),我会使用多个在不同架构上运行Linux的服务器。我配置机器,安装所需的包,运行我的测试,收集结果,然后将机器返回仓库,以便其他人可以使用它进行测试。因为我经常这样做(甚至一天多次),所以在我第一次登录Linux服务器的前10分钟工作已经成为一种日常习惯。当我第一次登录到Linux服务器时,我使用命令来收集我需要的信息以找到一些东西。我将在本文中详细介绍我的过程,但请注意,在大多数情况下,我只提供命令名称,因此您需要确定这些命令的特定选项以获取所需信息。阅读命令的手册页是一个很好的起点。1.第一次接触当我登录到服务器时,我做的第一件事就是检查它是否具有我将要运行的测试所需的操作系统、内核和硬件架构。我经常检查服务器运行了多长时间。虽然这对于测试系统来说并不重要,因为它会多次重新启动,但我发现此信息很有用。使用以下命令获取此信息。我主要使用RedHatLinux进行测试,所以如果您使用其他Linux发行版,请在文件名中使用*-release而不是redhat-release:cat/etc/redhat-releaseuname-ahostnamectluptime2。有人登录了吗?一旦我知道这台机器适合我的测试需求,我需要确保没有其他人同时登录到系统来运行他们自己的测试。虽然系统设置程序不太可能为我处理这个问题,但偶尔检查一次还是有好处的——尤其是当我第一次登录服务器时。我还会检查是否没有其他用户(root除外)可以访问系统。使用以下命令查找此信息。最后一条命令在/etc/passwd文件中查找具有shell访问权限的用户;它会跳过文件中没有shell访问权限或shell设置为nologin的其他服务:whowho-Hugrepsh$/etc/passwd3。physicalorvirtualMachine现在我有了自己的机器,我需要确定它是物理机还是虚拟机(VM)。如果我自己准备这台机器,我可以肯定这就是我所要求的。但是,如果您使用的机器不是您自己配置的,则应检查该机器是物理机器还是虚拟机器。使用以下命令来识别这些信息。如果是物理系统,您会看到供应商的名称(例如HP、IBM等)以及服务器的品牌和型号;而在虚拟机中,您应该看到KVM、VirtualBox等,具体取决于创建虚拟机时使用的是哪个。什么虚拟化软件:dmidecode-ssystem-manufacturerdmidecode-ssystem-product-namelshw-csystem|grepproduct|head-1cat/sys/class/dmi/id/product_namecat/sys/class/dmi/id/sys_vendor4。硬件因为我经常测试连接到Linux盒子的硬件,所以我通常使用物理服务器,而不是虚拟机。在物理机上,我的下一步是确定服务器的硬件功能——例如,正在运行的CPU类型、它有多少个内核、启用了哪些标志,以及有多少内存可用于运行测试。如果我要运行网络测试,我会检查连接到服务器的以太网或其他网络设备的类型和容量。使用以下命令显示连接到Linux服务器的硬件。其中一些命令可能在较新的操作系统版本中已被弃用,但您仍然可以从yum存储库安装它们或切换到它们的新等价物:lscpuorcat/proc/cpuinfolsmemorcat/proc/meminfoifconfig-aethtoollshwlspcidmidecode5。安装软件测试软件总是需要安装额外的依赖,库等。但是,在安装任何东西之前,我检查安装了什么(包括什么版本),以及配置了哪些存储库,所以我知道软件来自哪里并且可以调试任何包安装问题。使用以下命令确定安装了哪些软件:rpm-qarpm-qa|greprpm-qiyumrepolistyumrepoinfoyuminstallls-l/etc/yum.repos.d/6。运行进程和服务检查完安装的软件之后,自然要检查系统上运行了哪些进程。这在系统上运行性能测试时至关重要——如果正在运行的进程、守护进程、测试软件等占用了大部分CPU/RAM,那么在运行测试之前停止该进程是有意义的。这还会检查测试所需的进程或守护进程是否已启动并正在运行。例如,如果测试需要运行httpd,启动守护进程的服务可能不会运行,即使包已安装。使用以下命令识别系统上正在运行的进程和启用的服务:pstree-pa1ps-efpsauxfsystemctl7。网络连接如今的机器高度联网,它们需要与网络上的其他机器或服务进行通信。我会确定服务器上打开了哪些端口,是否有任何到测试机器的网络连接,是否启用了防火墙,如果是,是否有任何端口被阻止,以及机器与哪些DNS服务器通信。使用以下命令识别web服务相关信息。如果过时的命令不可用,请从yum存储库安装它或使用新的等效命令:netstat-tulpnnetstat-anplsof-issiptables-L-ncat/etc/resolv.conf8。内核在做系统测试的时候,我发现了解内核相关的信息很有帮助,比如内核版本,加载了哪些内核模块。我还列出了所有可调内核参数及其设置,并检查了用于启动正在运行的内核的选项。使用以下命令来识别这些:uname-rcat/proc/cmdlinelsmodmodinfosysctl-acat/boot/grub2/grub.cfg9.logs现在我对服务器有了一个很好的了解,包括安装了哪些软件,哪些进程正在运行。我无法摆脱的另一件事是日志文件——我需要知道在哪里寻找不断更新的信息。使用以下命令查看系统日志:dmesgtail-f/var/log/messagesjournalctl下一步尽管命令和实用程序会发生变化,但它们显示的基本信息基本保持不变。在您专注于掌握哪些命令之前,您需要全面了解您要查找的信息及其所属的类别。由于Linux将大部分信息保存在文件中,这些命令基本上从文件中读取信息并以可理解的方式呈现。下一步是找出每个命令使用哪个文件来获取显示的信息。一个提示:查找此信息的方法是strace命令。