作為一名系統(tǒng)管理員(sysadmins)通常負(fù)責(zé)日常維護(hù)系統(tǒng)和服務(wù)。其中一個(gè)關(guān)鍵任務(wù)就是保證服務(wù)能正常運(yùn)營提供。為此,他們必須周密進(jìn)行備份計(jì)劃,容災(zāi)管理策略,定時(shí)維護(hù)以及安全審查等工作。
與其他管理一樣,系統(tǒng)管理員也有他們的必備工具。使用合適的工具,在正確的時(shí)間和情況下可以幫助有效維護(hù)系統(tǒng),達(dá)到最小的服務(wù)中斷時(shí)間和最大的運(yùn)行時(shí)間。
筆者通過xmodulo網(wǎng)站所歸納介紹一些系統(tǒng)管理員日常活動(dòng)中最常用和有效的命令行工具。如果你是系統(tǒng)管理員,針對以下所列出的命令工具可以推薦其他好用的工具來給大家分享一下。
網(wǎng)絡(luò)工具
學(xué)習(xí):Linux系統(tǒng)管理員命令行工具目錄
●ping:通過ICMP echo/reply來檢查遠(yuǎn)端主機(jī)的端到端連接性(RTT延時(shí),抖動(dòng),丟包)。一般用來檢查系統(tǒng)狀態(tài)和可連接性。
●hping:網(wǎng)絡(luò)掃描和檢測工具,可以產(chǎn)生ICMP/TCP/UDP ping數(shù)據(jù)包。常用于高級端口掃描,防火墻測試,手動(dòng)MTU路徑發(fā)現(xiàn)和碎片測試。
●traceroute:通過TTL限定的ICMP/UDP/TCP偵測包來發(fā)現(xiàn)從本地主機(jī)到遠(yuǎn)端目標(biāo)主機(jī)之間的第三層轉(zhuǎn)發(fā)路徑。有效解決調(diào)試網(wǎng)絡(luò)連接性和路由問題。
●mtr:是traceroute的一個(gè)變種版本,能根據(jù)運(yùn)行時(shí)統(tǒng)計(jì)數(shù)據(jù)整理出每一跳的包丟失/抖動(dòng)。用來評估路由路徑延時(shí)。
●netcat/socat:TCP/IP網(wǎng)絡(luò)中“瑞士軍刀”,可以讀/寫在TCP/UDP協(xié)議字節(jié),主要用來調(diào)試防火墻策略和服務(wù)可用性。
●dig:作為DNS調(diào)試工具可以生成正向查詢,反向查詢,搜索域名服務(wù)器,檢查CNAME,MX和其他DNS記錄,主要特點(diǎn)可以查詢特定的DNS服務(wù)器。
●nslookup:另外一個(gè)DNS檢查/調(diào)試工具。支持所有DNS查詢和記錄,也可以查詢特定DNS服務(wù)器。
●dnsyo:一個(gè)DNS測試工具,通過對全世界1500個(gè)不同網(wǎng)絡(luò)中的大量開放解析器來執(zhí)行DNS查詢來測試DNS傳輸。
●lsof:顯示進(jìn)程中所打開的文件信息(常規(guī)文件,管道或套接字),用來監(jiān)視網(wǎng)絡(luò)連接中用戶的文件和信息。
●iftop:一個(gè)基于ncurses的命令行界面應(yīng)用,可以實(shí)時(shí)監(jiān)視各個(gè)網(wǎng)絡(luò)物理接口上的網(wǎng)絡(luò)連接和帶寬占用。用來記錄霸占帶寬的應(yīng)用、用戶、目的地和端口等很不錯(cuò)。
●netstat:一個(gè)網(wǎng)絡(luò)統(tǒng)計(jì)工具,可以顯示狀態(tài)以及統(tǒng)計(jì)信息,當(dāng)前網(wǎng)絡(luò)連接(TCP/UDP端口,IP地址)、路由表、TX/RX traffic以及網(wǎng)絡(luò)協(xié)議。用來做網(wǎng)絡(luò)相關(guān)診斷和性能調(diào)試很不錯(cuò)。
●tcpdump:一個(gè)常用的基于libpcap抓包庫的包偵測工具。可以按伯克利包過濾器格式定義抓包條件。
●tshark:另一個(gè)命令行抓包工具,和它的GUI版本W(wǎng)ireshark完全兼容。支持1000種協(xié)議而且這個(gè)列表還在增加。用來調(diào)試、分析和保存實(shí)時(shí)網(wǎng)絡(luò)封包信息很不錯(cuò)。
●ip:一個(gè)多功能的命令行網(wǎng)絡(luò)工具,是iproute2包的一部分??梢詸z查和修改路由表、網(wǎng)絡(luò)設(shè)備狀態(tài)以及IP隧道設(shè)置。用來查看路由表、增加/刪除靜態(tài)路由、配置網(wǎng)絡(luò)接口、以及調(diào)試路由問題很有用。
●ifup/ifdown:用來激活和關(guān)閉特定的網(wǎng)絡(luò)接口。經(jīng)常用于重啟整個(gè)網(wǎng)絡(luò)服務(wù)。
●autossh:一個(gè)能建立SSH連接并在斷線后自動(dòng)重新連接的程序。用來創(chuàng)建長時(shí)間保持的穿越嚴(yán)格企業(yè)網(wǎng)絡(luò)的SSH隧道很有用。
●iperf:一個(gè)網(wǎng)絡(luò)測試工具,通過在發(fā)送自定義TCP/UDP數(shù)據(jù)流來衡量主機(jī)間雙向最大吞吐量。
●elinks/lynx:服務(wù)基于文字網(wǎng)頁瀏覽器的CLI服務(wù)器環(huán)境。
第2頁:安全、存儲(chǔ)以及日志訪問工具
安全工具
●iptables:作為一個(gè)用戶空間下的命令行工具,用于配置Linux內(nèi)核防火墻,可以針對Linux內(nèi)核空間創(chuàng)建和修改網(wǎng)絡(luò)包接收、轉(zhuǎn)發(fā)和發(fā)送規(guī)則。
●nmap:一個(gè)安全審查的端口掃描和網(wǎng)絡(luò)發(fā)現(xiàn)工具。主要用來在本地網(wǎng)絡(luò)中找出哪些主機(jī)開機(jī)并運(yùn)行以及特定主機(jī)打開了哪些端口。
●TCP Wrappers:一個(gè)主機(jī)端的網(wǎng)絡(luò)訪問控制列表工具,可以過濾輸入/輸出的網(wǎng)絡(luò)請求/回復(fù)。配合iptables一起使用作為額外安全保護(hù)層。
●getfacl/setfacl:查看和定制文件和目錄的訪問控制列表,作為傳統(tǒng)文件權(quán)限的擴(kuò)展。
學(xué)習(xí):Linux系統(tǒng)管理員命令行工具解析
安全工具(圖片來源spidersweb.pl)
●cryptsetup:用于創(chuàng)建和管理LUKS加密磁盤分區(qū)。
●lynis:一個(gè)命令行的漏洞掃描工具??梢話呙枵麄€(gè)Linux系統(tǒng),并匯報(bào)潛在的漏洞以及相關(guān)可能解決方案。
●maldet:一個(gè)惡意軟件掃描命令行工具,可以檢測和隔離潛在的感染文件。可以在后臺(tái)運(yùn)行長期監(jiān)視。
●rkhunter/chkrootkit:作為一個(gè)命令行工具,可以掃描本地系統(tǒng)里的潛在木馬、隱藏后門和可疑運(yùn)行程序并禁用。
存儲(chǔ)工具
●fdisk:一個(gè)磁盤分區(qū)編輯工具。用于查看、創(chuàng)建和修改本地磁盤或可移動(dòng)磁盤的分區(qū)。
●sfdisk:fdisk的一個(gè)變種,能用一種非交互的方式訪問或更新磁盤分區(qū)表。用來自動(dòng)化備份和恢復(fù)過程中的磁盤分區(qū)很有用。
●parted:另一個(gè)磁盤分區(qū)編輯器,支持超過2TB的磁盤的GPT(GUID分區(qū)表)格式。gparted是parted的一個(gè)前端GTK+圖形界面。
●df:用來查看不同分區(qū)或文件路徑的已用/可用存儲(chǔ)空間和掛載點(diǎn)。還有一個(gè)更易用的變種dfc。
●du:用來查看不同文件和目錄的當(dāng)前磁盤占用情況(例如,du -sh *)。
●mkfs:一個(gè)磁盤格式化命令,用來在獨(dú)立磁盤分區(qū)上建立文件系統(tǒng)。有多個(gè)文件系統(tǒng)相關(guān)的版本:ext2、ext3、ext4、bfs、ntfs、vfat/fat。
●fsck:一個(gè)命令行工具,用來檢查文件系統(tǒng)錯(cuò)誤并嘗試可能的修復(fù)。通常在啟動(dòng)時(shí)自動(dòng)運(yùn)行,但是在卸載一個(gè)分區(qū)后也可以根據(jù)需要手動(dòng)運(yùn)行。
●mount:用來映射一個(gè)物理磁盤分區(qū)、網(wǎng)絡(luò)共享或遠(yuǎn)程存儲(chǔ)到一個(gè)本地掛載點(diǎn)。任何對掛載點(diǎn)里的讀/寫操作都是對應(yīng)實(shí)際存儲(chǔ)的實(shí)際數(shù)據(jù)讀/寫。
●mdadm:一個(gè)命令行工具,用來管理物理塊設(shè)備上的軟件RAID設(shè)備。可以創(chuàng)建、構(gòu)造、增長或監(jiān)視RAID陣列。
●lvm:一套命令行工具集,用來管理卷分組和物理/邏輯卷,可以用最小的停機(jī)時(shí)間在多個(gè)物理磁盤上創(chuàng)建、調(diào)整大小、拆分和合并卷。
日志訪問工具
●tail:用來查看一個(gè)(增長中的)日志文件的尾部。有幾個(gè)變種,包括multitail(多窗口查看)和ztail(支持inotify和正則表達(dá)式過濾以及顏色)。
●logrotate:一個(gè)命令行工具,可以在根據(jù)設(shè)定的時(shí)間段拆分、壓縮并通過郵件發(fā)送舊的/大的日志文件。用來管理可能產(chǎn)生大量日志文件的繁忙主機(jī)很有用。
●grep/egrep:可以通過特定的模式或正則表達(dá)式過濾日志內(nèi)容。變種包括用戶更友好的ack和速度更快的ag。
●awk:一個(gè)多功能的文本掃描和處理工具。常用于從文本/日志文件中找出特定的列或內(nèi)容,并輸出給其他工具。
●sed:一個(gè)文本流編輯工具,可以過濾和改變(刪除行/空格、替換/轉(zhuǎn)換單詞、增加計(jì)數(shù))文本流并通過管道連接到stdout/stderr或者其他工具。
第3頁:備份、性能監(jiān)視、硬件等工具
備份工具
●rsync:一個(gè)快速的單向增量備份和鏡像工具。常用于復(fù)制一個(gè)數(shù)據(jù)倉庫到線下存儲(chǔ),可以選擇通過SSH或stunnel的加密連接。
●rdiff-backup:另一個(gè)有效利用帶寬的增量備份工具。管理兩個(gè)連續(xù)快照之間的差分。
●duplicity:一個(gè)加密的增量備份工具。使用GnuPG加密備份,并通過SSH上傳到遠(yuǎn)程服務(wù)器。
性能監(jiān)視工具
學(xué)習(xí):Linux系統(tǒng)管理員命令行工具解析
性能監(jiān)視(圖片來源HPC)
●top:一個(gè)命令行的進(jìn)程查看程序??梢员O(jiān)視系統(tǒng)負(fù)載、進(jìn)程狀態(tài)、CPU和內(nèi)存占用。有一個(gè)更易用的變種htop。
●ps:顯示系統(tǒng)所有運(yùn)行中進(jìn)程的一個(gè)快照。輸出可以定制成顯示PID、PPID、用戶、負(fù)載、內(nèi)存、積累的用戶/系統(tǒng)時(shí)間、啟動(dòng)時(shí)間、以及更多。有一個(gè)變種pstree可以用樹結(jié)構(gòu)顯示進(jìn)程。
●nethogs:一個(gè)帶寬監(jiān)視工具,按進(jìn)程來分組顯示活動(dòng)網(wǎng)絡(luò)連接,實(shí)時(shí)匯報(bào)每個(gè)進(jìn)程占用的(上傳/下載)帶寬。
●ngxtop:一個(gè)網(wǎng)頁服務(wù)器訪問日志解析和監(jiān)視工具,界面受到了top命令啟發(fā)。它可以實(shí)時(shí)匯報(bào)整理過的頁面請求列表,包括頻率、大小、HTTP返回值、IP地址,等等。
●vmstat:一個(gè)簡單的命令行工具,可以顯示多個(gè)實(shí)時(shí)系統(tǒng)特征,例如進(jìn)程數(shù)、剩余內(nèi)存、分頁狀態(tài)、CPU占用、塊設(shè)備I/O活動(dòng)、中斷/上下文切換統(tǒng)計(jì)、等等。
●iotop:一個(gè)基于ncurses的I/O監(jiān)視工具,可以實(shí)時(shí)排序顯示所有運(yùn)行中進(jìn)程的磁盤I/O活動(dòng)。
●iostat:一個(gè)命令行工具,可以匯報(bào)當(dāng)前CPU使用情況,以及設(shè)備I/O使用情況,這里的I/O使用情況(例如,塊傳輸速度、字節(jié)讀/寫速度)是按設(shè)備或分區(qū)來匯報(bào)的。
效率工具
●screen:用來把一個(gè)單一的終端拆分成多個(gè)持久的虛擬終端,也支持遠(yuǎn)程用戶訪問,類似teamviewer的屏幕分享功能。
●tmux:另一個(gè)終端復(fù)用工具,可以支持多個(gè)長期會(huì)話,還可以橫向/縱向拆分終端。
●cheat:一個(gè)簡單的命令行工具,可以讓你查看多個(gè)常用Linux命令的備忘錄,就在手邊非常方便。內(nèi)建的備忘錄也可以完全定制。
●apropos:用來在幫助手冊里查找描述或關(guān)鍵字很有用。
包管理工具
●apt:基于Debian系統(tǒng)的事實(shí)上的包管理工具,例如Debian、Ubuntu或Backtrack。一個(gè)救生圈。
●apt-fast:apt-get的一個(gè)支撐應(yīng)用,可以通過多個(gè)并行連接明顯提高apt-get的下載速度。
●apt-file:用來查看某個(gè)特定文件屬于哪個(gè).deb包,或者顯示一個(gè)特定.deb包里的所有文件。已安裝和未安裝的包都能支持。
●dpkg:一個(gè)用來手動(dòng)安裝.deb包的命令行工具。強(qiáng)烈建議盡可能的使用apt。
●yum:用于基于紅帽的系統(tǒng)的自動(dòng)包管理工具,比如RHEL、CentOS或Fedora。這是另一個(gè)救生圈!
●rpm:通常我都是使用rpm來配合yum使用。有很多有用的參數(shù),比如-q、-f、-l可以分別用來查詢、指定文件和路徑。
硬件工具
●lspci:一個(gè)命令行工具,可以顯示已安裝的PCI設(shè)備的各種信息,比如型號名稱、設(shè)備驅(qū)動(dòng)、設(shè)備功能、內(nèi)存地址、PCI總線地址。
●lshw:一個(gè)命令行工具,可以查詢和顯示不同分類下的硬件配置的詳細(xì)信息(例如,處理器、內(nèi)存、主板、網(wǎng)絡(luò)、存儲(chǔ))。支持多重輸出格式:html、xml、json、text。
●inxi:一個(gè)綜合硬件查看工具,可以提供不同硬件模塊的總覽,例如CPU,顯卡,聲卡,網(wǎng)卡,溫度/風(fēng)扇傳感器。