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