:從目錄結構到常用命令)
一、Linux 目錄結構 —— 先搞清楚“東西放哪兒”Windows 有 C 盤、D 盤Linux 則是一棵以根/為起點的目錄樹。每個目錄都有其約定俗成的用途了解之后你就能猜到某個文件大概在什么地方。根目錄 /所有目錄的起點。只有 root 用戶有寫權限普通用戶只能讀。另外要注意root 用戶自己的家目錄是 /root不是 /home/root。/bin 和 /sbin —— 命令的“家”/bin 存放的是所有用戶都可以使用的命令比如 ls、cp、ping、grep 這些最常用的工具。而 /sbin 里放的是系統(tǒng)管理員專用命令像 fdisk、ifconfig、reboot、iptables 這類通常只有 root 才能執(zhí)行。所以當你執(zhí)行某個命令提示找不到時可以看看是不是在 /usr/bin 或 /usr/sbin 下面因為有些發(fā)行版會把部分命令放在那里。/etc —— 配置文件大本營幾乎所有的系統(tǒng)配置文件都在這里比如網(wǎng)絡配置 /etc/sysconfig/network-scripts/主機名解析 /etc/hosts還有各種服務的啟動腳本。特別提一下 /etc/hosts它相當于本地 DNS可以手動把域名綁定到 IP如果你們公司內(nèi)網(wǎng)有測試環(huán)境經(jīng)常需要改這個文件來指定域名解析。/dev —— 一切皆文件設備也不例外Linux 把硬件設備也抽象成文件放在 /dev 下。比如硬盤 /dev/sda終端 /dev/tty1。你往 /dev/null 寫數(shù)據(jù)就等于把它扔進黑洞這個技巧在寫腳本時很常用。/proc —— 系統(tǒng)運行的“實時快照”這是一個虛擬文件系統(tǒng)里面存的是當前系統(tǒng)狀態(tài)和進程信息。比如 /proc/cpuinfo 可以看 CPU 詳情/proc/meminfo 看內(nèi)存。你還可以通過 /proc/進程號/ 查看某個進程的詳細信息排查問題時很有用。/var —— 經(jīng)常變化的文件日志文件 /var/log郵件 /var/mail打印隊列 /var/spool都放在這里。如果你的服務器磁盤報警通常要去 /var/log 下看看是不是日志把空間吃滿了。/tmp —— 臨時文件存放處系統(tǒng)重啟后這個目錄下的文件會被清空。所以臨時下載包、解壓文件都可以放這里用完也不用操心清理。/home —— 普通用戶的家每個用戶在這里有自己的目錄比如 /home/john用戶登錄后默認就進入自己的家目錄可以隨意存?zhèn)€人文件。/boot —— 引導加載程序內(nèi)核文件、grub 引導配置都在這里不小心刪了系統(tǒng)就起不來了所以沒事別動這個目錄。/usr —— 用戶程序、庫文件這個目錄挺大/usr/bin 和 /usr/sbin 補充了 /bin 和 /sbin 沒有的命令/usr/lib 存放庫文件/usr/local 則用來放自己從源碼編譯安裝的軟件比如你手動裝 Apache通常會放在 /usr/local/apache2。/mnt 和 /media —— 掛載點/mnt 通常是臨時掛載文件系統(tǒng)用的比如你插個 U 盤或掛載 ISO 鏡像/media 則是系統(tǒng)自動掛載的可移動設備目錄比如光盤、U 盤。掌握這些目錄后你就能像個“老司機”一樣快速定位文件位置而不是到處亂找。二、常用文件操作命令命令的通用格式是命令 -選項 參數(shù)。多個選項可以合并比如 ls -la。ls —— 查看目錄內(nèi)容ls 是使用頻率最高的命令。加 -a 可以顯示隱藏文件以 . 開頭的文件加 -l 顯示詳細信息。那個長串信息里第一列的第一個字符表示文件類型d 是目錄- 是普通文件l 是軟鏈接。后面的 9 個字符分成三組分別代表所有者、所屬組、其他人的讀r、寫w、執(zhí)行x權限。cd —— 切換目錄cd / 回到根目錄cd .. 回到上級目錄cd ~ 回到自己的家目錄。沒有輸出信息但它確實把目錄切過去了。pwd —— 看自己在哪當你不知道當前在哪個目錄時敲一下 pwd它會打印出完整路徑。touch —— 創(chuàng)建空文件touch newfile.txt如果文件不存在就創(chuàng)建存在則更新它的修改時間。mkdir —— 創(chuàng)建目錄mkdir newdir 創(chuàng)建一個新目錄。如果想一次性創(chuàng)建多層目錄加 -p 參數(shù)比如 mkdir -p a/b/c。cp —— 復制cp source target 復制文件。如果要復制整個目錄加 -r 選項比如 cp -r dir1 dir2。mv —— 移動或重命名mv oldname newname 其實就是重命名mv file /target/ 則是移動文件。它既移動又改名很靈活。rm —— 刪除rm file 刪除文件rm -r dir 刪除目錄。強烈建議加上 -f 強制刪除避免每次都要確認。但也要格外小心因為 Linux 沒有回收站刪了就真沒了尤其是 rm -rf / 這種操作千萬別手滑。cat —— 查看整個文件適合查看小文件比如 cat /etc/hosts。如果文件很長屏幕會刷得飛快這時候要用 more 或 less。more —— 分頁查看more /etc/services 會一頁一頁顯示按空格翻頁按 Enter 逐行滾動按 q 退出。head 和 tail —— 看頭看尾head -20 file 顯示前 20 行tail -30 file 顯示后 30 行。tail -f 特別實用可以動態(tài)跟蹤日志文件的更新比如實時查看應用日志tail -f /var/log/messages。ln —— 鏈接文件ln -s source target 創(chuàng)建軟鏈接類似 Windows 的快捷方式。軟鏈接可以跨文件系統(tǒng)但原文件刪了鏈接就失效。硬鏈接不加 -s相當于給文件起了個別名兩個文件內(nèi)容同步變化而且原文件刪除后硬鏈接依然可用但硬鏈接不能跨分區(qū)。三、權限管理 —— 安全的核心Linux 的權限管理基于用戶、組、其他人三個維度。每個文件都有讀r4、寫w2、執(zhí)行x1三種權限。chmod —— 修改權限兩種方式字母法或數(shù)字法。數(shù)字法最常用比如 chmod 755 file表示所有者有 rwx7421所屬組和其他人有 rx541。chmod ux file 給所有者加執(zhí)行權限chmod g-w file 去掉所屬組的寫權限。chown —— 改所有者只有 root 可以操作比如 chown tom file 將文件所有者改為 tom。chgrp —— 改所屬組比如 chgrp developers file 將文件所屬組改為 developers。操作目錄時要注意對目錄來說r 權限表示可以列出目錄內(nèi)容w 權限表示可以在目錄里創(chuàng)建刪除文件即使該文件本身沒有寫權限x 權限表示可以進入該目錄。所以給目錄授權時一般至少 755 或 750。四、文件搜索which —— 找命令的位置which ls 會顯示 /bin/ls它只在 PATH 環(huán)境變量指定的路徑中查找所以只能找命令文件。find —— 最強大的查找工具find 在指定路徑下按各種條件查找文件。比如find /etc -name init 精確匹配文件名為 initfind /etc -name *init* 包含 init 的文件find /etc -name init??? 以 init 開頭且后面正好三個字符find / -size 204800 查找大于 100MB 的文件單位是 512 字節(jié)塊204800 塊100MBfind / -user sam 查找所有者是 sam 的文件find 還可以組合條件比如 -type f 只查普通文件-type d 只查目錄。這個命令很強大但搜索速度較慢適合臨時查找。grep —— 在文件內(nèi)容里搜索grep ftp /etc/services 會在 /etc/services 文件中找出所有包含 ftp 的行。通常和管道結合使用比如 ps -ef | grep java找出 Java 進程。五、幫助命令man 命令是最好的老師。man ls 會顯示 ls 的詳細手冊包括所有參數(shù)和用法。按空格翻頁按 q 退出。如果記不清某個選項直接 man 一下就行。六、壓縮與解壓Linux 下常見壓縮格式有 .gz、.tar.gz、.zip 等。gzip 和 gunzipgzip file 會把 file 壓縮成 file.gz但原文件不保留。如果要保留原文件可以用 gzip -c file file.gz。gunzip file.gz 解壓同樣默認不保留壓縮包可以用 gunzip -c file.gz file 保留。tar —— 打包兼壓縮最常用tar 本身只是打包不壓縮但配合 -z 可以調(diào)用 gzip 壓縮。語法打包并壓縮tar -zcvf dir1.tar.gz dir1/解壓tar -zxvf dir1.tar.gz參數(shù)解釋-c 創(chuàng)建-x 解包-z 使用 gzip-v 顯示過程-f 指定文件名。記憶技巧czf 是“創(chuàng)建壓縮文件”xzf 是“解壓文件”。zip 和 unzipzip 可以壓縮目錄且保留原文件zip -r test.zip /test。解壓用 unzip test.zip。如果系統(tǒng)提示找不到命令可以用 yum install zip 安裝。七、網(wǎng)絡與系統(tǒng)管理命令ping —— 測網(wǎng)絡通不通ping 192.168.1.1 看能不能連通目標。注意如果防火墻開著可能 ping 不通可以檢查防火墻狀態(tài)systemctl status firewalld 或 service iptables status。臨時關閉防火墻service iptables stop永久關閉chkconfig iptables offCentOS 6 方式。CentOS 7 以后用 systemctl 管理。ifconfig —— 查看 IP 地址ifconfig -a 顯示所有網(wǎng)絡接口信息包括沒激活的。現(xiàn)在有些系統(tǒng)推薦用 ip addr但 ifconfig 還是很多人的習慣。shutdown 和 rebootshutdown -h now 立即關機reboot 重啟。也可以用 poweroff。八、輸出重定向和管道 —— 讓命令組合起來輸出重定向ls -l /tmp tmp.msg 將命令結果覆蓋寫入文件date tmp.msg 將日期追加到文件末尾管道|把前一個命令的輸出作為后一個命令的輸入。比如 ls -l /etc | more 分頁顯示ls -l /etc | grep init 只顯示包含 init 的行再配合 wc -l 可以統(tǒng)計行數(shù)非常靈活。命令替換反引號ls -l which touch 會先執(zhí)行 which touch得到 /bin/touch然后 ls -l 查看這個文件的信息。這在寫腳本時經(jīng)常用到。九、vi/vim 編輯器vi 是 Linux 內(nèi)置的文本編輯器vim 是它的增強版。初學者容易懵是因為它有三種模式命令模式剛打開時進入可以移動光標、刪除、復制等。插入模式按 i、a、o 等鍵進入此時可以編輯文本按 Esc 回到命令模式。末行模式在命令模式下按 : 進入可以執(zhí)行保存、退出、查找等操作?;静僮鞅4娌⑼顺雒钅J较掳?Esc 確保回到命令模式然后 :wq不保存退出:q!查找在末行模式下輸入 /關鍵詞按 n 跳到下一個匹配項復制一行yy粘貼p刪除一行dd多用幾次就熟悉了別被它嚇到。十、軟件包管理 —— RPM 和 YUMRPM 是 Red Hat 包管理器安裝命令rpm -ivh 包名.rpm。但 RPM 有個缺點就是依賴關系需要手動解決經(jīng)常出現(xiàn)“需要 A而 A 又依賴 B”的循環(huán)。所以現(xiàn)在更推薦用 YUM它能自動解決依賴。YUM 常用操作安裝yum install 軟件名升級yum update 軟件名不帶軟件名則升級全部卸載yum remove 軟件名查詢已安裝rpm -qa | grep 關鍵詞查看軟件信息yum info 軟件名關于安裝 JDK 和 Tomcat手動解壓方式有時候我們需要安裝官方 tar.gz 包比如 JDK 和 Tomcat步驟一般是下載 tar.gz 包解壓到指定目錄如 /usr/local/配置環(huán)境變量編輯 /etc/profile加入 JAVA_HOME、PATH 等執(zhí)行 source /etc/profile 讓配置生效對于 Tomcat直接解壓后進入 bin 目錄執(zhí)行 ./startup.sh 啟動./shutdown.sh 停止。記得給啟動腳本加執(zhí)行權限如果提示權限不足就 chmod x *.sh。源碼編譯安裝以 Redis 為例如果需要從源碼安裝步驟通常是先安裝編譯工具yum -y install gcc gcc-c make解壓源碼包進入目錄執(zhí)行 ./configure有些軟件不需要比如 Redis 直接 makemakemake install有時候編譯會報錯比如缺少依賴庫根據(jù)提示安裝對應的開發(fā)包即可。還有一個常見問題用 yum 安裝時提示 “NOKEY” 警告這是因為缺少 GPG 密鑰可以導入對應的公鑰例如 rpm --import http://centos.ustc.edu.cn/centos/RPM-GPG-KEY-CentOS-5。