初次登錄 Linux 伺服器馬上要做的 9 件事
當我在 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 等,這取決於創建虛擬機時使用了什麼虛擬化軟體:
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 機器的硬體,所以我通常使用物理伺服器,而不是虛擬機。在物理機器上,我的下一步是確定伺服器的硬體能力 —— 例如,運行的是什麼類型的 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
命令。
via: https://opensource.com/article/20/12/linux-server
作者:Gaurav Kamathe 選題:lujun9972 譯者:wxy 校對:wxy
本文轉載來自 Linux 中國: https://github.com/Linux-CN/archive