在將新配置的伺服器投入工作之前,請確保你知道你正在使用什麼。
當我在linux上測試軟體(這是我工作的乙個常規部分)時,我需要使用多個執行linux的具有各種體系結構的伺服器。我調配機器,安裝所需的軟體包,執行測試,收集結果,並將機器返回到池中,以便其他人可以使用它進行測試。
由於我經常這樣做(甚至一天多次),我在linux伺服器上的頭10分鐘已經成為每天的例行公事。當我第一次登入到linux伺服器時,我會使用命令來收集我需要的資訊。在本文中,我將詳細介紹我的過程,但請注意,在大多數情況下,我只給出命令名,因此您需要標識這些命令的特定標誌以獲取所需的資訊。閱讀命令的手冊頁是乙個很好的起點。
翻譯自:
一旦我登入到伺服器,我要做的第一件事就是檢查它是否具有執行測試所需的作業系統、核心和硬體體系結構。我經常檢查伺服器已經執行了多長時間。雖然這對於測試系統來說無關緊要,因為它將被多次重新啟動,但我仍然覺得這些資訊很有用。
使用以下命令獲取此資訊。我主要使用red hat linux進行測試,因此如果您使用的是另乙個linux發行版,請在檔名中使用 *-release 而不是redhat-release
:
cat /etc/redhat-release
uname -a
hostnamectl
uptime
一旦我知道機器滿足了我的測試需求,我就需要確保沒有其他人在執行自己的測試的同時登入到系統中。儘管這不太可能,但考慮到**系統會為我處理這些問題,偶爾檢查一下還是不錯的,尤其是當我第一次登入伺服器時。我還檢查是否有其他使用者(root使用者除外)可以訪問系統。
使用以下命令查詢此資訊。最後乙個命令在/etc/passwd
檔案中查詢具有shell訪問許可權的使用者;它跳過檔案中沒有shell訪問許可權或shell設定為nologin的其他服務:
who
who -hu
grep sh$ /etc/passwd
現在我知道我自己擁有這台機器,我需要確定它是物理機還是虛擬機器(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
因為我經常測試連線到linux機器的硬體,所以我通常使用物理伺服器,而不是虛擬機器。在物理機器上,我的下一步是確定伺服器的硬體功能,例如,執行什麼型別的cpu,它有多少個核心,啟用了哪些標誌,以及有多少記憶體可用於執行測試。如果我正在執行網路測試,我會檢查連線到伺服器的乙太網或其他網路裝置的型別和容量。
使用以下命令顯示連線到linux伺服器的硬體。某些命令在較新的作業系統版本中可能會被棄用,但您仍然可以從yum repos安裝它們,或切換到其等效的新命令:
lscpu or cat /proc/cpuinfo
lsmem or cat /proc/meminfo
ifconfig -a
ethtool lshw
lspci
dmidecode
測試軟體總是需要安裝額外的依賴軟體包、庫等。但是,在安裝任何軟體包之前,我會檢查已經安裝的軟體包(包括它的版本),以及配置了哪些repos,這樣我就知道了軟體的**,並且可以除錯任何軟體包安裝問題。
使用以下命令確定安裝了什麼軟體:
rpm -qa
rpm -qa | grep rpm -qi yum repolist
yum repoinfo
yum install ls -l /etc/yum.repos.d/
一旦我檢查了安裝的軟體,很自然就會檢查系統上執行的程序。在系統上執行效能測試時,這一點至關重要如果正在執行的程序、守護程序、測試軟體等占用了大部分cpu/ram,那麼在執行測試之前停止該程序是有意義的。這還檢查測試所需的程序或守護程序是否已啟動並正在執行。例如,如果測試需要執行httpd,那麼即使安裝了包,啟動守護程式的服務也可能沒有執行。
使用以下命令標識系統上正在執行的程序和已啟用的服務:
pstree -pa 1
ps -ef
ps auxf
systemctl
今天的機器高度聯網,它們需要與網路上的其他機器或服務進行通訊。我確定伺服器上哪些埠是開啟的,是否有從網路到測試機器的任何連線,是否啟用了防火牆,如果啟用了防火牆,它是否阻止了任何埠,以及機器與哪些dns伺服器通訊。
netstat -tulpn
netstat -anp
lsof -i
ssiptables -l -n
cat /etc/resolv.conf
在進行系統測試時,我發現了解與核心相關的資訊很有幫助,比如核心版本和載入了哪些核心模組。我還列出了所有可調的核心引數以及它們的設定,並檢查了在引導正在執行的核心時使用的選項。
使用以下命令標識此資訊:
uname -r
cat /proc/cmdline
lsmod
modinfo sysctl -a
cat /boot/grub2/grub.cfg
到現在為止,我對伺服器有了乙個很好的了解,包括安裝了什麼軟體以及執行了什麼程序。另一件我無法逃避的事情是日誌檔案-我需要知道在**檢查不斷更新的資訊。
使用以下命令檢視系統日誌
dmesg
tail -f /var/log/messages
journalctl
雖然命令和實用程式將發生變化,但它們顯示的基本資訊或多或少保持不變。在關注要掌握的命令之前,您需要對要查詢的資訊及其所屬類別有乙個高階檢視。
由於linux將大部分資訊儲存在檔案中,這些命令基本上從檔案中讀取資訊,並以一種易於理解的方式呈現它們。下一步是確定每個命令用於獲取要顯示的資訊的檔案。查詢該資訊的提示是strace命令。
10分鐘教會你Mac上搭建Web伺服器
因工作需要使用區域網搭建 web 伺服器測試環境,在mac上面的話會簡單方便很多,因為mac os x 自帶了 apache 和 php 環境,我們只需要簡單的啟動它就行了。開啟web伺服器的方法有兩種 啟動後,我們在瀏覽器輸入 http localhost 會發現 apache伺服器預設的web根...
30分鐘學會linux伺服器環境的配置知識
對於我們這種習慣圖形介面的站長而言,要配置命令列的linux伺服器實在不簡單,很多站長因此選擇windows系統。其實,很多時候不是我們學不會配置linux伺服器,而是我們過早畏懼,對黑白介面輸入命令有厭惡情緒,不樂意接觸 如果我們敢於接觸黑白命令列介面,不用太費勁即可配置好linux伺服器。當然,...
十分鐘搭建自己的linux伺服器
今天和乙個學妹聊了好多,從中也是深刻感受到了自己近期以來的懈怠。現制定如下任務 好了廢話不多說了,接下來說正事!必備材料 1.一台linux伺服器。centos系統 2.阿帕奇 因為我選擇使用阿帕奇搭建 這個還是要看個人興趣愛好。3.別忘了安裝xshell and 和 winscp 嗯嗯,還是個人習...