歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux基礎 >> 關於Linux >> Linux系統學習筆記:日常使用和管理

Linux系統學習筆記:日常使用和管理

日期:2017/3/1 15:27:49   编辑:關於Linux
Linux系統學習筆記:日常使用和管理 回到有關Linux系統的環境。Linux系統是多用戶的操作系統,對用戶管理有非常完善的支持,有簡單高效的文件系統,還有大量的實用工具滿足日常工作的需要。本篇總結Linux系統的常用命令、用戶特性和文件系統。 常用命令 Linux下的命令工具非常豐富,並且數量還在不斷地增長。 Linux的最常用命令包括: man 查看man手冊頁 info 查看Texinfo文檔 ls 顯示文件名或文件列表,以及文件的相關屬性信息 rm 刪除文件 cp 復制文件 mv 移動文件,重命名 lpq lpr lprm 打印文件 cat 顯示文本文件內容,可以用來拼接文件 less more 分屏顯示文件 head tail 顯示文件頭部和尾部 sort 排序文件內容 uniq 忽略文件中的重復行 diff 比較兩個文件 file 不打開文件,查看文件的信息 grep 查找字符串 echo 顯示文本 date 顯示日期和時間 script 記錄會話信息 unix2dos dos2unix Linux文本文件和Windows文本文件的相互轉換 tar 文件歸檔和解檔 gzip gunzip zcat .gz文件壓縮、解壓和查看 bzip2 bunzip2 bzcat .bz2文件的壓縮、解壓和查看 which whereis 查找命令等的完整路徑 apropos whatis 在man中搜索關鍵字,給出簡要描述 locate 查找文件的完整路徑 who w {who am i} 顯示登錄用戶的信息 hostname 顯示主機名 幫助 大部分命令可以通過 -h 或 --help 選項來查看簡要的幫助信息。 更詳細的幫助文檔以 man 手冊頁的組織。手冊頁一般分為9節: 用戶級命令和應用程序。 系統調用和內核出錯代碼。 庫調用。 設備驅動程序和網絡協議。 標准文件格式。 游戲和演示。 各種文件和文檔。 系統管理命令。 少見隱秘的內核規范和接口。 可以用 manpath 命令查看 man 的搜索路徑。可以設置 MANPATH 環境變量來覆蓋默認路徑,也可以在/etc/manpath.config 中設置。手冊頁一般以 .gz 格式壓縮。 $ manpath /usr/local/man:/usr/local/share/man:/usr/share/man man 通過 less 命令顯示手冊頁,可以通過設置 PAGER 環境變量來修改。獲取手冊頁使用 man [sec] name命令,也可以用 -k 選項來按關鍵字查找。 另一種幫助文檔是Texinfo文檔,使用 info 命令查看。 路徑操作 用於路徑操作的 ls 等命令可算是最為常用的命令了。它們用來管理文件、目錄等的路徑。後面總結文件系統時會再詳細說明它們。 文件操作 文件操作的命令一般用於文本文件。 如創建文件 a.txt : $ cat > a.txt # 將標准輸入重定向到文件 Monday Tuesday Wednesday Thursday Friday Saturday Sunday ^C $ cat b.txt # 顯示文件內容 Monday Tuesday Tuesday Thursday Friday Saturday Sunday $ head -3 a.txt # 查看開頭3行 Monday Tuesday Wednesday $ tail -f a.txt # 查看內容不斷增長的文件,多用於日志查看 Monday Tuesday Wednesday Thursday Friday Saturday Sunday ^C $ sort a.txt # 排序 Friday Monday Saturday Sunday Thursday Tuesday Wednesday $ uniq b.txt # 去掉重復行 Monday Tuesday Thursday Friday Saturday Sunday $ diff -u a.txt b.txt # 比較文件,-u顯示不同 --- a.txt 2012-03-08 15:34:00.340179508 +0800 +++ b.txt 2012-03-08 15:41:12.404569605 +0800 @@ -1,6 +1,6 @@ Monday Tuesday -Wednesday +Tuesday Thursday Friday Saturday $ file a.txt # 查看文件信息 a.txt: ASCII text $ grep -in --color sat *.txt # 查找字符串,-i不區分大小寫,-n顯示行號 a.txt:6:Saturday b.txt:6:Saturday grep 命令對單個文件可以使用 -H 始終顯示文件名,對目錄可以使用 -r 遞歸查找。 幾個實用工具 有幾個常用的如 echo 、 date 等命令,完成一些日常操作。 $ date --rfc-3339=s # =date會只顯示日期 2012-03-08 15:59:57+08:00 壓縮歸檔 Linux下的壓縮工具有很多種,最常用的是 gzip 和 bzip2 。一般使用 tar 直接將文件或目錄歸檔然後壓縮,它們也可以分開獨立使用。 $ tar czf w.tar.gz a.txt b.txt $ tar xzf w.tar.gz $ tar cjf w.tar.bz2 a.txt b.txt $ tar xjf w.tar.bz2 一般把通過 tar 歸檔然後直接壓縮的包命名為 .tar.XX 的形式,以區別於單獨壓縮的 .gz 和 .bz2 文件。 查找命令 為確定一個命令是否存在,可以使用 which 命令查找它是否在搜索路徑中,但它在Debian上不顯示用戶沒有執行權限的命令,這時可以用 whereis 在更大范圍進行查找。 還可以使用 locate 在整個文件系統查找,它可以找到任何類型的文件。 locate 的數據庫通常由 updatedb命令定時生成。 $ which ifconfig # 沒找到,權限不夠 $ whereis ifconfig ifconfig: /sbin/ifconfig /usr/share/man/man8/ifconfig.8.gz $ locate ifconfig /sbin/ifconfig /usr/share/man/de/man8/ifconfig.8.gz /usr/share/man/fr/man8/ifconfig.8.gz /usr/share/man/man8/ifconfig.8.gz /usr/share/man/pt_BR/man8/ifconfig.8.gz 查看用戶信息 w 和 who 可以分別以詳細的和簡略的方式查看用戶信息, who am i 查看當前登錄用戶的身份。 $ w 16:13:50 up 3:34, 3 users, load average: 0.00, 0.00, 0.00 USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT yeolar pts/0 yeolar-pc.local 13:27 2:05 1.04s 1.04s -bash yeolar pts/1 yeolar-pc.local 16:11 0.00s 0.36s 0.00s w yeolar pts/2 yeolar-pc.local 16:13 8.00s 0.38s 0.08s sshd: yeolar [priv] $ who yeolar pts/0 2012-03-08 13:27 (yeolar-pc.local) yeolar pts/1 2012-03-08 16:11 (yeolar-pc.local) yeolar pts/2 2012-03-08 16:13 (yeolar-pc.local) $ who am i yeolar pts/1 2012-03-08 16:11 (yeolar-pc.local) 用戶 Linux系統上的每個文件和進程都屬於特定的用戶帳號。如果沒有得到屬主的許可,其他用戶就不能訪問這些對象。系統文件和進程屬於 root 虛擬用戶,也稱為超級用戶。Linux是多用戶系統,用戶和權限的劃分保障了Linux系統的多用戶安全。 每個文件都有一個屬主和一個屬組。文件的屬主指定屬組成員可以對文件做哪些操作,這樣可以讓一些成員共享文件。Linux用數字來確定屬主和屬組。用戶ID(UID)映射到 /etc/passwd 文件中的用戶名上,組ID(GID)映射到 /etc/group 文件中的組名上。UID和GID對應的文字名稱是用來方便用戶的使用。 進程的屬主可以向該進程發送信號,或者降低該進程的優先級。進程有7個相關的ID,包括3個UID(真實、有效、保存)、3個GID(真實、有效、保存)和1個文件系統UID。 超級用戶 root 帳號的UID為0,超級用戶被允許在任何文件或進程上執行正當的操作,有些系統調用只能夠由超級用戶執行。 為保障安全性, root 帳號的密碼的長度應該至少為8個字符。 為了執行一些系統級的操作,經常會需要成為 root 用戶,直接用 root 帳號登錄的方法並不好,不安全的因素增加,而且也無法區分究竟是誰做了哪些操作。有兩種方法從普通用戶切換到 root 用戶,一是使用su 命令,另一個是使用 sudo 命令。 不加參數的 su 命令切換到 root 帳號,加用戶名作為參數會切換到該用戶帳號,使用 - 會同時將路徑切換到該用戶的主目錄。 sudo 以要執行的命令為參數,以 root 身份(或其他用戶)執行。配置文件 /etc/sudoers 設置授權使用sudo 的用戶和允許執行的命令,使用 visudo 命令來修改 /etc/sudoers 。 sudo 有一個可設置的超時時間。 sudo 會保存一個日志,保存命令執行相關的命令、主機、用戶、目錄和時間。 偽用戶 系統中還定義了幾個偽用戶,一般是用 * 代替它們在 /etc/passwd 中的密碼字段,使它們不能用來登錄。幾個常見的如 bin (系統命令的屬主)、 daemon (無特權的系統軟件的屬主)、 nobody (普通NFS用戶)。 /etc/passwd文件 /etc/passwd 文件是系統能夠識別的用戶的清單,在登錄時,系統查詢該文件來確定用戶的UID並驗證密碼。 每一行為一個用戶,包含如下字段: 用戶名。 經過加密的密碼或占位符 x 。 數值用戶ID。 數值組ID。 用戶信息:全名、辦公室、分機號、住宅電話。 初始工作目錄。 登錄shell。 現在通常將加密的密碼放在 /etc/shadow 文件中,這稱為隱蔽口令系統,使用這種機制時, /etc/passwd中的密碼字段寫作 x 。可以用 vipw 命令編輯該文件。可以用 pwconv 命令讓 shadow 文件的內容和 passwd文件的內容保持一致。 /etc/group文件 /etc/group 文件包含了組的名稱和每個組中的成員的列表。 每一行為一個組,包含如下字段: 組名。 加密的密碼或 x ,後者表示有一個 /etc/gshadow 文件。 數值組ID。 成員列表,以逗號隔開。 組的密碼很少使用,一般將其設為 * 。 帳號管理 可以手工創建和刪除用戶。一般為了方便,使用 useradd 命令創建用戶, usermod 和 userdel 可以修改和刪除用戶。 可以用 usermod -L user 和 usermod -U user 對用戶上鎖和解鎖,禁止用戶的登錄。 passwd 命令可以修改用戶的密碼。 登錄賬戶記錄 Linux在 /var/run/utmp 文件中記錄當前登錄系統的用戶,在 /var/log/wtmp 文件中記錄登錄和注銷事件。分別由 who 和 last 命令讀取和打印記錄。 文件系統 文件系統的類型常見的有EXT2、EXT3和EXT4,Linux現在還支持Windows下的FAT和NTFS類型。還有一些使用不是很廣泛的如IBM的JFS類型。 在 /etc/fstab 文件中包含了和文件系統相對應的設備的清單。 df 命令查看文件系統的大小。 $ df -h / Filesystem Size Used Avail Use% Mounted on /dev/sda3 78G 3.7G 71G 5% / 通過 mount 和 umount 命令安裝和卸載文件系統,如: # mount /dev/hda5 /users 將磁盤分區上 /dev/hda5 表示的文件系統安裝到路徑 /users 下。 可以把新建的文件系統添加到 /etc/fstab 文件中來自動安裝。 在卸載時,如果內核說明設備忙,可以運行 fuser -mv mpoint 來查看正在使用文件系統上的資源的進程。fuser -v file 可以查看特定文件的使用,使用 -k 選項可以殺死所有帶來麻煩的進程。一個更強大的替代程序是 lsof 。 fsck 命令可以檢查和修復文件系統,通常文件和數據塊的錯誤引用可以通過它來修復。 組織結構 在Linux下,不同的文件按照約定被放到一些路徑下,通常安裝程序會對文件的位置做一些假設,因此應該盡可能地保持這一默認的文件樹結構。 /bin 最小系統所需的命令 /boot 內核和加載內核所需的文件 /dev 終端、磁盤等的設備項 /etc 關鍵的啟動文件和配置文件 /home 用戶的主目錄 /lib C編譯器的庫和部分C編譯器 /media 可移動介質上的文件系統的安裝點 /opt 可選的應用軟件包 /proc 所有正在運行的進程的映像 /root 超級用戶的主目錄 /sbin 引導、修復或恢復系統的命令 /tmp 臨時空間(重啟時刪除) /usr 次要文件和命令的層次結構 /usr/bin 大多數命令和可執行文件 /usr/include 編譯C程序的頭文件 /usr/lib 庫 /usr/local 本地軟件(用戶編寫或安裝的) /usr/local/bin 本地的可執行文件 /usr/local/etc 本地系統的配置文件和命令 /usr/local/lib 本地庫 /usr/local/sbin 靜態鏈接的本地系統維護命令 /usr/local/src /usr/local/* 的源代碼 /usr/man 聯機用戶手冊 /usr/sbin 次要的系統管理命令和修復命令 /usr/share 多種系統共同的東西 /usr/share/man 聯機用戶手冊 /usr/src 非本地軟件包的源代碼 /var 系統專用數據和配置文件 /var/log 系統日志文件 /var/spool 假脫機目錄(打印機、郵件等使用) /var/tmp 臨時空間(重啟時保留) 文件類型 Linux中有7種文件類型:普通文件、目錄、字符設備文件、塊設備文件、套接字、命名管道、符號鏈接。 文件類型 ls 中的符號 創建方式 刪除方式 普通文件 - 編輯器、 cp 等 rm 目錄 d mkdir rmdir 、 rm -r 字符設備文件 c mknod rm 塊設備文件 b mknod rm 套接字 s socket(2) rm 命名管道 p mknod rm 符號鏈接 l ln -s rm 普通文件就是一個數據包,Linux沒有對它規定任何結構。 目錄包含按名字對其他文件的引用。 . 和 .. 分別代表目錄本身和它的父目錄。文件的名稱存儲在它的父目錄中,而不是存在文件本身處。可以有多個目錄同時引用一個文件,並且可以有不同的名稱,這種類型的引用稱為硬鏈接,使用 ln 命令創建,Linux維護指向每個文件的鏈接的計數。硬鏈接不能跨文件系統。 設備文件使程序能夠同系統的硬件和外圍設備進行通信。字符設備文件讓相關的驅動程序做它們自己的輸入和輸出緩沖。塊設備文件由處理塊數據I/O的驅動程序使用,內核為它們提供緩沖。設備文件用兩個數字表示其特征,分別為主設備號和次設備號,主設備號對應哪個驅動程序,次設備號對應尋址的物理單元。 套接字是進程間通信的一種方式。本地域套接字只能從本地訪問,通過文件系統對象使用,也稱為UNIX域套接字。 命名管道也是同一主機上進程間通信的方式。 符號鏈接也稱軟鏈接,符號鏈接是通過文件名稱的引用,而不是硬鏈接的直接引用。內核查找路徑時遇到符號鏈接時,就重定向到鏈接存儲的路徑名上。 文件屬性 Linux文件系統中,每個文件有一個16位的字存儲的屬性信息,其中包括12位模式位和4位文件類型信息,模式位又分為9個控制用戶讀寫和執行權限的權限位和3個和可執行程序運行相關的權限位。 9個權限位分為三組,分別設置用戶、組和其他人的讀取、寫入和執行權限。另外3個權限位為 setuid 位、setgid 位和粘住位。經常用八進制的數來表示權限位。 值 權限位 值 權限位 值 權限位 值 權限位 4000 setuid 400 用戶讀權限 40 組讀權限 4 其他讀權限 2000 setgid 200 用戶寫權限 20 組寫權限 2 其他寫權限 1000 粘住位 100 用戶執行權限 10 組執行權限 1 其他執行權限 對可執行文件設置 setuid 位和 setgid 位使程序可以訪問執行程序的用戶無權訪問的文件和進程。對目錄設置 setgid 位使目錄中新建的文件具有目錄的組權限而不是創建文件的用戶的組。對目錄設置粘住位後,必須是目錄的用戶、文件的用戶或超級用戶,才可以刪除或重命名目錄中的文件。 在 ls -l 命令中,分別用 r 、 w 、 x 表示讀、寫、執行權限, setuid 、 setgid 、粘住位分別在用戶、組和其他的執行權限位上用 S 、 S 、 T 表示,同時設置了對應的可執行權限時用小寫表示。 ls -l 命令的輸出的其他項為硬鏈接數、用戶、組、大小、修改日期、路徑。 使用 chmod 命令修改權限,使用 chown 命令改變用戶和組。 $ chmod 755 dir $ chmod -R u+w dir $ chmod ug=srx,o= file $ chown -R yeolar:yeolar dir 硬盤 關於硬盤的知識這裡不進行詳細說明,可以看一些相關的參考書。 目前常見的硬盤接口有PATA(IDE)、SATA和SCSI,SATA是IDE的後續技術。在Linux系統中,一般用sdxn 形式的名稱表示SCSI硬盤, x 為 a b c ... 代表不同的硬盤, n 為數字代表不同的分區。用 hdxn 形式的名稱表示IDE和SATA硬盤, x 和 n 的含義和SCSI硬盤的一樣。 為硬盤分區使用 fdisk 命令。創建文件系統和交換分區使用如 mke2fs 和 mkswap 命令, swapon 命令啟用交換分區。 Linux的硬盤管理有兩個重要的工具:RAID和LVM。Linux內核提供了創建軟RAID的支持,一般使用 mdadm命令。LVM是一種可選的子系統,使用它可以將多個硬盤組成卷組,分配為邏輯卷,還可以動態改變邏輯卷的大小。 USB設備 lsusb 命令列出內核已經發現的USB設備。內核用什麼設備文件表示已發現的設備可以查看系統日志/var/log/kern.log 。
Copyright © Linux教程網 All Rights Reserved