前端linux基礎,這一篇就夠了
1. Linux
- Linux是一套免費使用和自由傳播的類Unix作業系統
- 在伺服器端領域和嵌入式領域有非常廣泛的應用
2.版本
分為核心版本和髮型版本
- kernel
- 各個廠商會製作自己的發行版本
- redhat
- CentOS
- debian
- ubuntu
- fedora
3. Linux與Windows的不同
- Linux嚴格區分大小寫
- Linux中所有的內容以檔案形式儲存,包括硬體、使用者和檔案。
- Linux不靠副檔名區分檔案型別,是靠許可權來區分,但是有一些約定的副檔名,是給管理員看的
- 壓縮包
.gz
.bz2
.tar.bz2
.tgz
- 二進位制檔案
.rpm
- 網頁檔案
.html .php
- 指令碼檔案
.sh
- 配置檔案
.conf
- 壓縮包
- Windows下的程式不能直接在Linux中安裝和執行
- Linux更多使用字元介面
- 佔用的系統資源更少
- 減少了出錯和被攻擊的可能性,會讓系統更穩定
4. Linux安裝
4.1 linux系統安裝
- 選擇作業系統
- 選擇光碟機啟動
4.6.1 安裝型別
Install or upgrade an existing system Install system with basic video driver Rescue installed system Boot from local drive Memory test
4.6.2 密碼
- 複雜性
- 八位字元以上、大小寫字母、數字、符號
- 不能是英文單詞
- 不能是和使用者相關的內容
- 易記憶性
- 實效性
4.6.3 安裝型別
Basic Server
4.6.5.2 網絡卡介面關閉與啟用
ifdown eth0 #關閉網路 ifup eth0 #啟動網路 複製程式碼
4.6.5.3 網路服務啟動與關閉
service network restart #重啟網路服務 複製程式碼
5.linux常用命令
5.1 常見目錄
- / 根目錄
- /boot 啟動目錄,啟動相關檔案
- /dev 裝置檔案
- /etc 配置檔案
- /home 普通使用者的家目錄,可以操作
- /lib 系統庫儲存目錄
- /mnt 移動裝置掛載目錄
- /media 光碟掛載目錄
- /misc 磁帶機掛載目錄
- /root 超級使用者的家目錄,可以操作
- /tmp 臨時目錄,可以操作
- /proc 不能直接操作,儲存的是記憶體的掛載點
- /sys 不能直接操作,儲存的是記憶體的掛載點
- /var 變數
- /bin 普通命令
- /sbin 命令儲存目錄,級使用者才可以執行的命令
- /usr/bin 系統軟體資源目錄 面向普通使用者的系統命令
- /usr/sbin 系統軟體資源目錄 面向超級使用者的系統命令
5.2 命令基本格式
5.2.1 命令提示符
[root@zhangrenyang ~]# 複製程式碼
- root 當前登入使用者
- localhost 主機名
- ~ 當前工作目錄,預設是當前使用者的家目錄,root就是/root,普通使用者是 /home/使用者名稱
- 提示符 超級使用者是 #,普通使用者是$
5.2.2 命令格式
- 命令 [選項] [引數]
- 當有多個選項時,可以寫在一起
- 一般引數有簡化和完整寫法兩種
-a
與--all
等效
5.2.3 ls
- 查詢目錄中的內容
- ls [選項] [檔案或者目錄]
- 選項
- -a 顯示所有檔案,包括隱藏檔案
- -l 顯示詳細資訊
- -d 檢視目錄本身的屬性而非子檔案 ls /etc/
- -h 人性化的方式顯示檔案大小
- -i 顯示inode,也就是i節點,每個節點都有ID號
- 預設當前目錄下的檔案列表
5.2.3.1 -l
顯示詳細資訊
drwxr-xr-x .1 rootroot800 Sep 16 00:19 logs 複製程式碼
drwxr-xr-x | . | 1 | root | root | 800 | Sep 16 00:19 | logs |
---|---|---|---|---|---|---|---|
檔案型別和許可權 | ACL許可權 | 硬連結引用計數 | 所有者 | 所屬組 | 檔案大小 | 最後修改時間 | 檔名 |
5.2.3.2 檔案型別和許可權
-rw-r--r-- 複製程式碼
- 檔案型別 - 檔案、d 目錄、l 軟連結檔案
- u(所有者)、g(所屬組)、o(其他人)
- r(read) 讀取、w(write) 寫入、x(execute) 執行
5.3 檔案處理命令
5.3.1 mkdir
- 建立目錄 make directory
- mkdir -p [目錄名]
- -p 遞迴建立
5.3.2 cd
- 切換所在目錄 change directory
- cd [目錄]
- ~ 家目錄
- 家目錄
-
- 上次目錄
- . 當前目錄
- .. 上級目錄
- 相對路徑是參照當前所在目錄
- 絕對路徑是從根目錄開始
- 按TAB鍵可以補全命令和目錄
5.3.3 pwd
- 顯示當前目錄 pwd
5.3.4 rmdir
- 刪除目錄 remove empty directory
- rmdir [目錄名]
5.3.5 rm
- 刪除檔案或者目錄 remove
- rm [檔案或者目錄]
- -r 刪除目錄
- -f 強制刪除
- rm -rf 檔案或者目錄] 遞迴強制刪除所有目錄
5.3.6 cp
- copy 複製命令
- copy [原始檔或者目錄] [目標檔案]
- -r 複製目錄,預設是複製檔案
- -p 連帶檔案屬性複製
- -d 若原始檔是連結檔案,則複製連線屬性
- -a 相當於 -rpd
5.3.7 mv
- 移動檔案或者改名 move
- mv [原始檔或者目錄] [目標檔案]
5.3.8 ln
- 連結命令,生成連結檔案
link
5.3.8.1 硬連結特徵
- 擁有相同的i節點和儲存block塊,可以看作是同一個檔案
- 可以通過i節點訪問
- 不能跨分割槽
- 不能針對目錄使用
- 一般不使用
5.3.8.2 軟連結特徵
- ln -s [原始檔] [目標檔案]
- -s 建立軟連結
- 類似Windows快捷方式
- 軟連結擁有自己的i節點和Block塊,但是資料塊中只儲存原始檔的檔名和i節點號,並沒有實際的檔案資料
- lrwxrwxrwx l 軟連結 軟連結的檔案許可權都是 777
- 修改任意一個檔案,另一個都會改變
- 刪除原始檔,軟連結不能使用
- 軟連結原始檔必須寫絕對路徑
5.4 檔案搜尋命令
5.4.1 locate
- 在後臺數據庫中按檔名搜尋,速度比較快
- 資料儲存在
/var/lib/mlocate
後臺資料庫,每天更新一次 - 可以
updatedb
命令立刻更新資料庫 - 只能搜尋檔名
-
/etc/updatedb.conf
建立索引的配置檔案- PRUNE_BIND_MOUNTS = "yes" 全部生效,開啟搜尋限制
- PRUNEFS 不搜尋的檔案系統
- PRUNENAMES 忽略的檔案型別
- PRUNEPATHS 忽略的路徑 /tmp
5.4.2 whereis
- 搜尋命令所在路徑以及幫助文件所在位置
- whereis 命令名
whereis ls
- -b 只查詢可執行檔案
- -m 只查詢幫助檔案
5.4.3 which
which ls which cd
5.4.4 環境變數
/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin
- 定義的是系統搜尋命令的路徑
- echo $PATH
5.4.5 find
- 檔案搜尋命令
- find [搜尋範圍] [搜尋條件]
5.4.5.1 按名稱搜尋
- 避免大範圍的搜尋,會非常消耗系統資源
find / -name aaa.log 複製程式碼
5.4.5.2 萬用字元
- find是在系統當中搜尋符合條件的檔名,如果需要匹配,使用萬用字元匹配,萬用字元是完全匹配
- 萬用字元
* ? []
find . -name "ab[cdef]" 複製程式碼
5.4.5.3 -i
不區分大小寫
find / -iname A.log 複製程式碼
5.4.5.4 -user
按所有者進行搜尋
find /root -user root find /root -nouser 複製程式碼
5.4.5.5 按時間搜尋
find /nginx/access.log -mtime +5 複製程式碼
引數 | 含義 |
---|---|
atime | 檔案訪問時間 |
ctime | 改變檔案屬性 |
mtime | 修改檔案內容 |
引數 | 含義 |
---|---|
-5 | 5天內修改的檔案 |
5 | 5天前當前修改的檔案 |
+5 | 5天前修改的檔案 |
5.4.5.6 按大小搜尋
- k小寫,M大寫
find . -size 100k 複製程式碼
引數 | 含義 |
---|---|
-8k | 小於8K |
8k | 等於8K |
+8k | 大於8K |
+8M | 小於8M |
5.4.5.7 按i節點搜尋
find . -inum 123456 複製程式碼
5.4.5.8 綜合應用
find /tmp -size +10k -a -size -20k 複製程式碼
- 查詢/etc目錄下,大於10KB並且小於20KB的檔案
- -a and 邏輯與,兩個條件都滿足
- -o or 邏輯或,兩個條件滿足一個就可以
find /tmp -size +10k -a -size -20k -exec ls -lh {} \; 複製程式碼
- exec 對上個命令的結果進行操作
5.4.5.9 grep
- 在檔案當中匹配符合條件的字串
- grep "10" access.log
-i -v
- find命令,在系統當中搜尋符合條件的檔名,如果需要匹配,使用萬用字元匹配,萬用字元是完全匹配
- grep命令 在檔案當中搜尋符合條件的字串,如果需要匹配,使用正則表示式進行匹配,正則表示式時包含匹配
5.5 幫助命令
5.5.1 基本用法
man ls
5.5.2 man的級別
- 1 檢視命令的幫助
- 2 檢視可被核心呼叫的函式的幫助
- 3 檢視函式和函式庫的幫助
- 4 檢視特殊檔案的幫助
- 5 檢視配置檔案的幫助
- 6 檢視遊戲的幫助
- 7 檢視其它的幫助
- 8 檢視系統管理員可用命令的幫助
- 9 檢視和核心相關檔案的幫助
5.5.3 檢視命令級別
- 檢視命令級別
- 1p: POSIX utilities
- POSIX表示可移植作業系統介面(Portable Operating System Interface of UNIX,縮寫為 POSIX ),POSIX標準定義了作業系統應該為應用程式提供的介面標準.
man -f ls whatis ls man 1 ls man 1p ls 複製程式碼
5.5.4 關鍵字搜尋
- man -k passwd 複製程式碼
5.5.5 shell 內部幫助
-
whereis
找到就是外部,找不到就是內部help cd 複製程式碼
5.6 壓縮與解壓縮命令
.zip
.gz
.bz2
.tar.gz
.tar.bz2
5.6.1 zip格式
- 壓縮檔案 zip 壓縮檔名 原始檔
- 壓縮目錄 zip -r 壓縮檔名 源目錄
- 解壓 unzip 壓縮檔名
mkdir book touch book/1.txt touch book/2.txt zip -r book.zip book unzip book.zip 複製程式碼
5.6.2 gzip
命令 | 示例 | 含義 |
---|---|---|
gzip 原始檔 | gzip a.txt | 壓縮為.gz格式的壓縮檔案,原始檔會消失 |
gzip -c 原始檔 > 壓縮檔案 | gzip -c yum.txt > yum.txt.gz | 壓縮為.gz格式的壓縮檔案,原始檔不會消失 |
gzip -r 目錄 | gzip -r xx | 壓縮目錄下的所有子檔案,但是不壓縮目錄 |
gzip -d 壓縮檔名 | gzip -d yum.txt.gz | 解壓縮檔案,不保留壓縮包 |
gunzip 壓縮檔案 | gunzip yum.txt.gz | 解壓縮檔案,不保留壓縮包 |
- 壓縮是壓縮目錄下的檔案
5.6.3 .bz2格式壓縮
命令 | 示例 | 含義 |
---|---|---|
bzip2 原始檔 | bzip2 1.txt | 壓縮為.bz2格式的檔案,不保留原始檔 |
bzip2 -k 原始檔 | zip2 -k 1.txt | 壓縮為.bz2格式的檔案,保留原始檔 |
bzip2 -d 壓縮檔名 | bzip2 -d 1.txt.bz2 | 解壓壓縮包 |
bunzip2 壓縮檔名 | bunzip2 1.txt.bz2 | 解壓壓縮包 |
- bzip2 不能壓縮目錄
5.6.4 tar
- 打包命令
- tar -cvf 打包檔名 原始檔
- -c 打包
- -v 顯示過程
- -f 指定打包後的檔名
tar -cvf book.tar book gzip book.tar bzip2 book.tar 複製程式碼
- x 解打包
tar -xvf book.tar 複製程式碼
5.6.4 tar.gz壓縮格式
可以先打包為 .tar
格式,再壓縮為 .gz
格式 -z 壓縮為.tar.gz格式 -x 解壓縮.tar.gz格式 |命令|示例|含義| |:----|:----|:----| |tar -zcvf 壓縮包名 .tar.gz
原始檔|tar -zcvf book.gar.gz book|可以先打包為 .tar
格式,再壓縮為 .gz
格式| |tar -zxvf 壓縮包名.tar.gz|tar -zxvf book.tar.gz|解壓tar.gz壓縮包| |tar -jcvf 壓縮包名 .tar.bz2
原始檔|tar -zcvf .tar.bz2 book|可以先打包為 .tar
格式,再壓縮為 .bz2
格式| |tar -jxvf 壓縮包名.tar.bz2|tar -zxvf book.tar.bz2|解壓tar.bz2壓縮包|
5.7 關機和重啟命令
5.7.1 shutdown
shutdown 關機命令
- -c 取消前一個關機命令
- -h 關機
- -r 重啟
shutdown -r 06:00 shutdown -c 複製程式碼
5.7.2 init
關機
init 0 複製程式碼
重啟
init 6 複製程式碼
系統的執行級別
- 0 關機
- 1 但使用者
- 2 不 完全多使用者,不包含NFS服務
- 3 完全多使用者
- 4 未分配
- 5 圖形介面
- 6 重啟
5.7.3 logout
退出登入
logout 複製程式碼
5.8 掛載
5.8.1 掛載命令
- mount 檢視系統中已經掛載的裝置
mount mount -a 複製程式碼
5.8.2 掛載命令格式
- mount [-t 檔案系統] [-o 特殊選項] 裝置檔名 掛載點
- 選項
- -t 檔案系統 ext4 iso9660
- -o 特殊選項
5.8.3 掛載光碟機
mkdir /mnt/cd mount -t iso9660 /dev/sr0 /mnt/cdrom 複製程式碼
5.8.4 解除安裝光碟機
umount /dev/sr0 umount /mnt/cdrom 複製程式碼
5.8.4 掛載U盤
fdisk -l mount -t vfat /dev/sdb1 /mnt/usb 複製程式碼
- linux預設不支援NTFS格式
5.9 檢視登入使用者資訊
5.9.1 w
檢視登入使用者資訊
- USER 登入的使用者名稱
- TTY 登入的終端 tty1 本地終端 pts/0遠端終端
- FROM 登入的IP
- LOGIN 登入時間
- IDLE 使用者閒置時間
- JCPU 該終端所有程序佔用的時間
- PCPU 當前程序所佔用的時間
- WHAT 正在執行的命令
5.9.2 who
檢視登入使用者資訊
- USER 登入的使用者名稱
- TTY 登入的終端 tty1 本地終端 pts/0遠端終端
- LOGIN 登入時間(登入的IP)
5.9.3 last
檢視當前登入和過去登入的使用者資訊 預設讀取 /var/log/wtmp
檔案
- 使用者名稱
- 登入終端
- 登入IP
- 登入時間
- 退出時間(線上時間)
5.9.4 lastlog
檢視所有使用者的最後一次登入時間
- 使用者名稱
- 登入終端
- 登入IP
- 最後一次登入時間
6. shell
- shell是一個命令列直譯器,它為使用者提供了一個向Linux核心傳送請求以便執行程式的介面系統級程式
- 使用者可以用Shell來啟動、掛起、停止或者編寫一些程式
- Shell還是一個功能相當強大的程式語言,易編寫,易除錯,靈活性較強。
- Shell是解釋執行的指令碼語言,在Shell中可以直接呼叫Linux系統命令。
6.1 檢視支援的shell
- /etc/shells
6.2 echo
- 輸出命令
- --e 支援反斜線控制的字元轉換
控制字元 | 作用 |
---|---|
\a | 輸出警告音 |
\b | 退格鍵,也就是向左刪除鍵 |
\n | 換行符 |
\r | 回車鍵 |
\t | 製表符,也就是Tab鍵 |
\v | 垂直製表符 |
\onnn | 按照八進位制ASCII碼錶輸出字元,其中0為數字零,nnn是三位八進位制數 |
\xhh | 按照十六進位制ASCII碼錶輸出字元,其中hh是兩位十六進位制數 |
- 30m-47m
- echo -e "\e[1;31m warning \e[0m"
|符號|顏色| |#30m|黑色| |#31|紅色| |#32|綠色| |#33|黃色| |##34|藍色| |##35|洋紅| |##36|青澀| |##37|白色|
6.3 編寫執行shell
#!/bin/bash echo -e "\e[1;34m hello world \e[0m" 複製程式碼
賦予執行許可權,直接執行
chmod 755 hello.sh ./hello.sh 複製程式碼
通過Bash呼叫執行指令碼
bash hello.sh 複製程式碼
6.4 別名
- 命令別名 == 小名
- 臨時生效
- alias
- alias rm="rm -i"
- 寫入環境變數配置檔案 vi ~/.bashrc
- source ~/.bashrc
- unalias 別名 刪除別名
6.5 命令的生效順序
- 絕對路徑或者相對路徑
- 別名
- bash內部命令
- 按照$PATH環境變數定義的目錄查詢順序找到的第一個命令
6.6 命令快捷鍵
命令 | 含義 |
---|---|
ctrl+c | 強制終止當前命令 |
ctrl+l | 清屏 |
ctrl+a | 游標移動到命令列首 |
ctrl+e | 游標移動到命令列尾 |
ctrl+u | 從游標所在的位置刪除到行首 |
ctrl+z | 把命令放入後臺 |
ctrl+r | 在歷史命令中搜索 |
6.7 歷史命令
- history [選項] [歷史命令儲存檔案]
- 選項
- -c 清空歷史命令
- -w 把快取中的歷史命令寫入歷史命令儲存檔案 ~/.bash_history
- 預設儲存1000條 /etc/profile HISSIZE=10000
6.8 呼叫
- 使用上下箭頭呼叫以前的歷史命令
- 使用 !n 重複執行第n條歷史命令
- 使用 !! 重複執行上一條命令
- 使用 !字元 重複執行最後一條以該字串開頭的命令
6.9 輸出重定向
6.9.1 標準輸入輸出
裝置 | 裝置檔名 | 檔案描述符 | 型別 |
---|---|---|---|
鍵盤 | /dev/stdin | 0 | 標準輸入 |
顯示器 | /dev/stdout | 1 | 標準輸出 |
顯示器 | /dev/stderr | 2 | 標準錯誤輸出 |
型別 | 符號 | 作用 |
---|---|---|
標準輸出重定向 | 命令 > 檔案 | 以覆蓋的方式,把命令的正確輸出輸出到指定的檔案或裝置當中 |
標準輸出重定向 | 命令 >> 檔案 | 以追加的方式,把命令的正確輸出輸出到指定的檔案或裝置當中 |
錯誤輸出重定向 | 命令>檔案 | 以覆蓋的方式,把命令的錯誤輸出輸出到指定的檔案或裝置當中 |
錯誤輸出重定向 | 命令>>檔案 | 以追加的方式,把命令的錯誤輸出輸出到指定的檔案或裝置當中 |
正確輸出和錯誤輸出同時儲存 | 命令>檔案 2>&1 | 以覆蓋的方式,把正確輸出和錯誤輸出都儲存到同一個檔案當中 |
正確輸出和錯誤輸出同時儲存 | 命令>檔案 2>>&1 | 以追加的方式,把正確輸出和錯誤輸出都儲存到同一個檔案當中 |
正確輸出和錯誤輸出同時儲存 | 命令&>檔案 | 以覆蓋的方式,把正確輸出和錯誤輸出都儲存到同一個檔案當中 |
正確輸出和錯誤輸出同時儲存 | 命令&>>檔案 | 以追加的方式,把正確輸出和錯誤輸出都儲存到同一個檔案當中 |
正確輸出和錯誤輸出同時儲存 | 命令>>檔案1 2>檔案2 | 以覆蓋的方式,正確的輸出追加到檔案1中,把錯誤輸出追加到檔案2中 |
6.9.2 輸入重定向
- 命令 < 檔案把檔案做為命令的輸入
-
命令 << 識別符號 識別符號把識別符號之間內容作為命令的輸入
-
wc < access.log
- wc <>
6.10 管道符號
6.10.1 多命令順序執行
|多命令執行符|格式|作用| |;|命令1;命令2|多個命令執行,命令之間沒有任何邏輯聯絡| |&&|命令1&&命令2|邏輯與 當命令1正確執行,則命令2才會執行 當命令1執行不正確,則命令2不會執行| ||||命令1|| 命令2|邏輯或 當命令1執行不正確,則命令2才會執行 當命令1正確執行,則命令2不會執行|
- date;ls;date;ls - ls && echo yes || echo no 複製程式碼
6.10.2 管道符號
- 命令1的正確輸出會作為命令2的操作物件
- 命令1|命令2
ls /etc/ | more netstat -an | grep ESTABLISHED | wc -l 複製程式碼
6.10.3 萬用字元
匹配檔名和目錄名 |萬用字元|作用| |:----|:----| |?|匹配一個任意字元| |*|匹配0個或任意字元,也就是可以匹配任意內容| |[]|匹配中括號中任意一個字元| |[-]|匹配中括號中任意一個字元,-代表範圍| |[^]|匹配不是中括號中的一個字元|
6.10.4 其它符號
符號 | 作用 |
---|---|
'' | 單引號。在單引號中所有的特殊符號,如$和`都沒有特殊含義 |
"" | 雙引號,在雙引號裡特殊符號都沒有特殊含義,但是 $ ` \ 例外,擁有呼叫變數值,引用命令和轉義的含義 |
|
反引號,擴起來的是系統命令 |
$() | 和反引號一樣 |
# | 在shell指令碼中,#開頭的行代表註釋 |
$ | 用於呼叫變數的值 |
\ | 轉義符號 |
-a=`ls` -b=$(ls) 複製程式碼
7. vi編輯器
- VI visual interface
- 視覺化介面
- 類似與windows中的記事本
- vim支援多級撤銷
- 跨平臺
- 語法高亮
- 支援圖形介面
7.1 操作模式
模式名 | 含義 |
---|---|
Command Mode 命令模式 | 等待輸入的模式 |
Insert Mode 輸入模式 | 編輯模式,用於輸入文字 |
Last Line Mode 底行模式(尾行、末行) | 可以輸入指令,搜尋,儲存 |
- vim + abc
- vim +3 abc
- vim +5 abc
- vim +/xxx abc
- vim a b c :n
7.2 常用指令
7.2.1 底行模式
- :w 儲存
- :q 退出
- :! 強制儲存
- :ls 列出所有的檔案
- :n 下一個
- :N 上一個
- :15 跳轉到指定行
- /xxx 從游標位置開始向後搜尋 xxx 字串
- ?xxx 從游標位置開始向前搜尋
7.2.2 命令模式
- h 游標左移
- j 游標下移
- k 游標上移
-
l 游標右移
-
ctrl+f 向下翻頁(front)
- ctrl+b 向上翻頁
- ctrl+d 向下翻半頁
-
ctrl+u 向上翻半頁
-
dd 刪除游標所在行
- o 在游標所在行的下方插入一行並切換到輸入模式
- yy 複製游標所在的行
- p 在游標所在行的下方貼上
- P 在游標所在行的上方貼上
8. 使用者和使用者組
- 使用作業系統的人都是使用者
- 使用者組是具有相同系統許可權的一組使用者
8.1 使用者組
8.1.1 /etc/group
- /etc/group 儲存當前系統中所有使用者組資訊
- group:x:123:abc,def
- 組名稱:組密碼佔位符:組編號:組中使用者名稱列表
- root 組編號為0
- 1-499系統預留的編號 預留給安裝的軟體和服務的
- 使用者手動建立的使用者組從500開始
- 組密碼佔位符都是x
8.1.2 /etc/gshadow
- 存放當前系統中使用者組的密碼資訊
- 和group中的記錄一一對應
- Group: * : :abc
- 組名稱 組密碼 組管理者 組中使用者名稱
8.1.3 /etc/passwd
- 儲存當前系統中所有使用者的資訊
- user:x:123:456:xxxxx:/home/user:/bin/bash
- 使用者名稱:密碼佔位符:使用者編號: 使用者註釋資訊:使用者主目錄:shell型別
8.1.4 /etc/shadow
- 存放當前系統中所有使用者的密碼資訊
- user:xxx:::::::
- 使用者名稱:密碼:
8. 使用者操作
新增組
groupadd student 複製程式碼
修改組名稱
groupmod -n stu student 複製程式碼
修改組編號
groupmod -g 111 stu 複製程式碼
新增分組並指定編號
groupadd -g 222 teacher 複製程式碼
刪除分組
groupdel 222 複製程式碼
新增分組
groupadd teacher 複製程式碼
為使用者指定所屬組
useradd -g teacher zhangsan 複製程式碼
為使用者指定所屬組
useradd -g teacher lisi 複製程式碼
為使用者指定工作目錄
useradd -d /home/zhangsan zhangsan 複製程式碼
指定註釋
usermod -c iamateacher zhangsan 複製程式碼
修改使用者名稱
usermod -l zhangsan zhangsan2 複製程式碼
指定資料夾
usermod -d /home/zhangsan2 zhangsan2 複製程式碼
修改使用者所屬組
usermod -g stu zhangsan2 複製程式碼
刪除使用者
userdel zhangsan2 複製程式碼
刪除所屬資料夾
userdel -r lisi 複製程式碼
9. 使用者命令
顯示登入的使用者名稱
whoami 複製程式碼
顯示指定使用者資訊,包括使用者編號,使用者名稱 主要組的編號及名稱,附屬組列表
id zhangsan 複製程式碼
顯示zhangsan使用者所在的所有組
groups zhangsan 複製程式碼
顯示使用者詳細資料
finger zhangsan 複製程式碼
10. 附錄
10.1 系統啟動
10.1.1 BIOS
- 計算機通電後,第一件事就是讀取刷入ROM晶片的開機程式,這個程式叫做(Basic Input/Output System)
10.1.2 硬體自檢
- BIOS程式首先檢查,計算機硬體能否滿足執行的基本條件,這叫做"硬體自檢"(Power-On Self-Test)
- 如果硬體出現問題,主機板會發出不同含義的蜂鳴,啟動中止。如果沒有問題,螢幕就會顯示出CPU、記憶體、硬碟等資訊。
10.1.3 啟動順序
- 硬體自檢完成後,BIOS把控制權轉交給下一階段的啟動程式。
- 這時,BIOS需要知道,"下一階段的啟動程式"具體存放在哪一個裝置
- BIOS需要有一個外部儲存裝置的排序,排在前面的裝置就是優先轉交控制權的裝置。這種排序叫做"啟動順序"(Boot Sequence)
- BIOS按照"啟動順序",把控制權轉交給排在第一位的儲存裝置。
- 這時,計算機讀取該裝置的第一個扇區,也就是讀取最前面的512個位元組。如果這512個位元組的最後兩個位元組是0x55和0xAA,表明這個裝置可以用於啟動;如果不是,表明裝置不能用於啟動,控制權於是被轉交給"啟動順序"中的下一個裝置。
- 這最前面的512個位元組,就叫做"主引導記錄"(Master boot record,縮寫為MBR)
10.1.4 主引導記錄的結構
- "主引導記錄"只有512個位元組,放不了太多東西。它的主要作用是,告訴計算機到硬碟的哪一個位置去找作業系統。
- (1) 第1-446位元組:是用來記錄系統的啟動資訊的,呼叫作業系統的機器碼
- (2) 第447-510位元組(64個位元組):分割槽表(Partition table),分割槽表的作用,是將硬碟分成若干個區
- (3) 第511-512位元組:主引導記錄簽名(0x55和0xAA)
10.1.5 分割槽表
- 磁碟分割槽是使用分割槽編輯器在磁碟上劃分幾個邏輯部分
- 磁碟一旦劃分成多個分割槽,不同類的目錄與檔案可以儲存進不同的分割槽內
- "主引導記錄"因此必須知道將控制權轉交給哪個區
- 分割槽表的長度只有64個位元組,裡面又分成四項,每項16個位元組。所以,一個硬碟最多隻能分四個一級分割槽,又叫做"主分割槽"
- (1) 第1個位元組:如果為0x80,就表示該主分割槽是啟用分割槽,控制權要轉交給這個分割槽。四個主分割槽裡面只能有一個是啟用的。
- (2) 第2-4個位元組:主分割槽第一個扇區的物理位置(柱面、磁頭、扇區號等等)。
- (3) 第5個位元組:主分割槽型別,比如FAT32、NTFS等。
- (4) 第6-8個位元組:主分割槽最後一個扇區的物理位置。
- (5) 第9-12位元組:該主分割槽第一個扇區的邏輯地址。
- (6) 第13-16位元組:主分割槽的扇區總數。
10.1.6 硬碟啟動
- 計算機的控制權就要轉交給硬碟的某個分割槽了
- 四個主分割槽裡面,只有一個是啟用的。計算機會讀取啟用分割槽的第一個扇區,叫做"卷引導記錄"(Volume boot record,縮寫為VBR)
10.1.7 作業系統
- 控制權轉交給作業系統後,作業系統的核心首先被載入記憶體。
- 以Linux系統為例,先載入
/boot
目錄下面的kernel
。核心載入成功後,第一個執行的程式是/sbin/init
。它根據配置檔案(Debian系統是/etc/initab)產生init程序。這是Linux啟動後的第一個程序,pid程序編號為1,其他程序都是它的後代 - 然後,
init
執行緒載入系統的各個模組,比如視窗程式和網路程式,直至執行/bin/login
程式,跳出登入介面,等待使用者輸入使用者名稱和密碼。