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