linux學習
一.介紹
1.概述
linux的讀法不下10種
linux是一個開源的操作系統,操作系統包括mac、windows、安卓等
linux的開發版:Ubuntu(烏班圖)、RedHat(紅帽)、CentOS
linux的應用:linux在服務器領域的應用是最強的,其它還有嵌入式
2.linux和Unix
unix是B語言寫的
linux是在unix的基礎上用C寫的
3.安裝vmware
基本說明:學習linux需要一個環境,我們需要創建一個虛擬機,然后在虛擬機上安裝一個Centos系統來學習
vm官網:https://www.vmware.com/cn.html
安裝需要:去BIOS里修改設置開啟虛擬化設備支持(重啟然后按f2、f12、DEL、ESC等鍵)
4.安裝centos
步驟:
- 創建虛擬機
- 開始安裝系統
手動分區可以分三個:/boot(1GB)、swap(交換分區,2GB)、根分區(17GB)
5.三種網絡連接方式
①橋接模式:和外界的同一個網段的可以連接,容易造成IP沖突(網段:IP的前7位,如192.168.0)
②NAT模式(網絡地址轉換):不造成IP沖突
③主機模式:獨立的系統,不能外部連接
二、虛擬機的功能
1.虛擬機克隆
如果你已經安裝了一個linux操作系統,且想要更多的,就可以克隆虛擬機
方式一:拷貝虛擬機文件到另一地址,在用VMware創建一個虛擬機
方式二:用VMware克隆功能,使用前要關閉linux系統(創建完整克隆就是拷貝文件)
2.虛擬機快照
VMware提供了快照管理的功能(右鍵虛擬機系統可以看到),可以在系統出現問題時回到之前的狀態
實例:
- 安裝系統后,先做一個快照A
- 到系統后,創建一個文件夾,再做一個快照B
- 回到快照A
- 回到快照B
3.虛擬機的遷移與刪除
虛擬系統本質就是文件
要遷移虛擬機就只需將文件剪切或拷貝到其它地址
刪除可以先用VMware移除,再在電腦中將文件刪除就可以了,或者直接在電腦中刪掉
4.vmtools
介紹:
- vmtools安裝后,可以讓我們在windows下更好的管理vm虛擬機
- 可以設置windows和centos的共享文件夾
安裝:
- 進入centos
- 點擊vm的菜單的->install vmware tools
- centos會出現一個vm的安裝包,xx.tar.gz
- 拷貝到/opt
- 使用解壓命令tar,得到一個安裝文件(在終端中使用cd /opt進入opt目錄,使用tar -zxvf xx.tar.gz命令解壓)
- 安裝:./vmware-install.pl
- 全部使用默認設置即可
- 注意:安裝vmtools需要有gcc(gcc -v顯示gcc版本)
共享文件夾的方式:
三、linux的目錄結構
1.結構介紹
基本介紹:
- linux的文件系統是采用樹狀目錄結構的,在此結構中的最上層是根目錄"/",然后在此目錄下再創建其他的目錄
- 在linux的世界里,一切皆文件
2.目錄詳解
/bin[常用]:是binary的縮寫,這個目錄存放著最經常使用的命令
/sbin:s是Super User的意思,這里存放的是系統管理員使用的系統管理程序
/home[常用]:存放普通用戶的目錄,在linux中每個用戶都有一個自己的目錄,一般該目錄名是用戶的賬號名
/root[常用]:該目錄為系統管理員,也稱為超級權限者的用戶主目錄
/lib:系統開機所需要的最基本的動態連接共享庫,其作用類似于Windows里的DLL文件,幾乎所有的應用程序都需要用到這些共享庫
/lost+found:這個目錄一般情況下是空的,當系統非法關機后,這里就存放了一些文件
/etc[常用]:所有的系統管理所需要的配置文件和子目錄
/usr(非常重要):用戶的很多應用程序和文件都放在這個目錄下,類似于Windows的program files目錄
/boot[常用]:存放的是啟動linux時使用的一些核心文件,包括一些連接文件以及鏡像文件
/proc(不能動):這個目錄是一個虛擬的目錄,它是系統內存的映射,訪問這個目錄來獲取系信息
/srv(不能動):Service的縮寫,該目錄存放一些服務啟動之后需要提取的數據
/sys(不能動):該目錄下安裝了linux2.6內核中新出現的一個文件系統sysfs
/tmp:這個目錄是用來存放一些臨時文件的
/dev:類似于Windows的設備管理器,把所有的硬件用文件的形式存儲
/media[常用]:linux系統會自動識別一些設備,例如U盤等,識別后,linux會把識別的設備掛載到這個目錄下
/mnt[常用]:系統提供目錄是為了讓用戶臨時掛載別的文件系統的,我們可以將外部的存儲改在到/mnt/上,然后進入該目錄就可以查看里面的內容了
/opt:這是給主機額外安裝軟件的目錄
/usr/local[常用]:這是另一個給主機額外安裝軟件所安裝的目錄。一般是通過編譯源碼方式安裝的程序
/var[常用]:這個目錄中存放著在不斷擴充的東西,習慣將經常被修改的目錄放在這個目錄下
/selinux(security-enhanced linux):是一個安全字系統,它能控制系統只能訪問特定文件,有三種工作模式,可以自行設置
四.linux實操
1.遠程登錄
linux服務器是開發小組共享的,正式上線的項目是運行在公網
linux-Xshell6是最好的遠程登錄到linux操作的軟件
Xshell還是一個強大的安全終端模擬軟件
2.遠程文件傳輸
Xftp是一個基于Windows平臺的功能強大的SFTP、FTP文件傳輸軟件
Windows用戶能安全地在linux和Windows之間傳輸文件
3.vi和vim
linux系統內置vi文本編輯器
Vim具有程序編輯的能力,可以看做是vi的增強版本
vi和vim常用的三種模式
①一般模式:以vim打開一個檔案就可以進入一般模式
②插入模式:按下i,o,a,r等任何一個字母后才會進入編輯模式,一般來說按i
③命令行模式:輸入esc+":"切換到命令行模式,在這個模式中,可以提供你相關指令,完成讀取、存盤、替換、離開vim等操作
各種模式的相互切換:
4.vim快捷鍵
拷貝當前行(一般模式):輸入yy,拷貝當前行下的第五行:5yy
粘貼:p
刪除當前行:輸入dd,刪除當前行下的第五行:5dd
在文件中查找某個單詞[命令行下/關鍵字,回車查找,輸入n就是查找下一個]
打開文件的行號,關閉文件的行號:[命令行下::set nu和:set nonu]
快速到文件末尾或開頭:G和GG
撤銷動作(一般模式):u
快速定位某一行:20(行號),再輸入shift+g
5.開機重啟
命令:
shutdown -h now:立刻關機
(默認)shutdown -h 1:“hello,1分鐘后會關機了”
shutdown -r now:立刻重啟
halt:關機
reboot:重啟
sync:把內存的數據同步到磁盤上
注意事項:
- 不管是重啟系統還是關閉系統,建議先運行sync命令
- 目前的shutdown等命令均已在關機前使用sync,但是小心駛得萬年船
6.用戶登錄和注銷
基本介紹:
- 登錄時盡量少用root賬號登錄,避免操作失誤。可以用普通用戶登錄,后用su - 用戶名,來切換成系統管理員身份
- 在提示符下輸入logout即可注銷用戶
使用細節:logout在圖形運行級別無效,在運行級別3下才有效
五.用戶管理
1.添加用戶/刪除用戶
基本語法:useradd 用戶名
添加一個a用戶,a用戶的家目錄在/home/a
useradd -g 組名 用戶名:創建一個用戶并加入到指定組中
細節說明:
- 添加用戶后,會自動添加家目錄
- 也可以通過useradd -d 指定目錄 新的用戶名,給新創建的用戶指定家目錄
基本語法:userdel 用戶名(高權限才能刪除低權限)(默認保留家目錄)
刪除用戶但同時刪除家目錄(謹慎):userdel -r 用戶名
2.指定/修改密碼
基本語法:passwd 用戶名
顯示當前用戶所在目錄:pwd
3.切換用戶
基本語法:su - 用戶名
細節說明:
- 從權限高的用戶轉換到權限低的用戶,不需要輸入密碼
- 當需要返回到原來用戶時,使用exit/logout指令
4.查詢用戶信息
命令:id 用戶名(若用戶不存在,則返回無此用戶)
查詢當前用戶信息:whoami(顯示第一次登錄的用戶的信息)
5.用戶組
介紹:類似于角色,系統可以對有共性/權限的用戶進行統一的管理
命令:
- 新增組:groupadd 組名
- 刪除組:groupdel 組名
- 增加用戶時直接加上組:useradd -g 用戶組 用戶名、
- 修改用戶的組:usermod -g 用戶組 用戶名
用戶和組相關文件
/etc/passwd文件:用戶的配置文件,記錄用戶的各種信息
每行的含義:用戶名:口令:用戶標識號:組標識號:注釋性描述:主目錄:登錄shell(其中注釋性描述等不一定會有)
/etc/shadow文件:口令的配置文件
每行的含義:登錄名:加密口令:最后一次修改時間:最小時間間隔:最大時間間隔:警告時間:不活動時間:失效時間:標志
/etc/group文件:組的配置文件,記錄linux包含的組的信息
每行含義:組名:口令:組標識號:組內用戶列表
六.常用指令
1.運行級別
基本介紹:
0:關機
1:單用戶[找回丟失密碼]
2:多用戶狀態沒有網絡服務
3:多用戶狀態有網絡服務
4:系統未使用保留給用戶
5:圖形界面
6:系統重啟
常用運行級別是3和5,也可以指定默認運行級別
切換運行級別的命令:init [0123456]
查看運行級別:systemctl get-default
設置默認運行級別:systemctl set-default 運行級別
2.找回root密碼
- 重啟系統: 首先,重新啟動你的Linux系統。
- 進入引導加載程序(boot loader): 在系統啟動時,按下適當的鍵(通常是Esc、Shift或者按下某個功能鍵),進入引導加載程序的菜單。具體鍵位取決于你的系統和引導加載程序(如GRUB或LILO)。
- 編輯啟動選項: 進入引導加載程序菜單后,找到并選擇啟動Linux的選項(通常是帶有Linux版本號的選項),按下 e 鍵進入編輯模式。
- 修改內核啟動參數: 在編輯模式下,找到以 linux 開頭的行(可能是以 linux 或 kernel 開頭),并且找到 ro 或者 root= 參數。
- 修改root參數: 將 ro 修改為 rw,并在 root= 參數后面添加 init=/bin/bash 或者 init=/bin/sh,然后按下 Ctrl + X 或者相應的鍵來啟動。
- 進入單用戶模式: 系統將啟動為單用戶模式,此時你會看到一個命令行提示符(通常是 #)。這時候文件系統是以讀寫(read-write)方式加載的,你可以進行修改。
- 更改root密碼: 使用以下命令更改root用戶的密碼:passwd root,然后按照提示輸入新密碼并確認。
- 重新啟動系統: 密碼修改完成后,使用 reboot 命令重新啟動系統:reboot
- 恢復引導加載程序設置: 在系統重新啟動后,確保恢復引導加載程序的原始設置(將 ro 修改回 rw 等)。這樣可以保證系統在下次啟動時正常運行。
3.幫助指令
獲取幫助信息:man [命令或配置文件]
如:查看ls命令的幫助信息:man ls
在linux下,隱藏文件是以.開頭,選項可以組合使用:比如ls -al,比如:ls -al/root
命令:help 命令(獲得shell內置命令的幫助信息)
4.文件目錄類
pwd:顯示當前工作目錄的絕對路徑
ls [選項] [目錄或是文件]
常用選項:
-a:顯示當前目錄所有的文件和目錄,包括隱藏的
-l:以列表的方式顯示信息
cd [參數]:切換到指定目錄
如果參數是~:則回到家目錄
如果參數是…:回到當前目錄的上一級
mkdir [選項] 創建的目錄名:創建指定的目錄(默認只能創建單級目錄)
若選項是-p:則創建多級目錄
rmdir [選項] 要刪除的空目錄
如果要刪除有內容的文件夾:rm -rf 目錄,如:rm -rf /home/a
touch 文件名稱:創建一個空文件
cp [選項] 目標文件 目標目錄:拷貝文件到指定目錄
選項:-r:遞歸復制整個文件夾
強制覆蓋不提示的方法:\cp,如:\cp -r /home/bbb/ /opt/
rm [選項] 要刪除的文件或文件夾
常用選項:
-r:遞歸刪除整個文件夾
-f:強制刪除不提示
mv 舊目錄 新目錄:將文件移動
mv 舊文件名 新文件名:將文件重命名
將文件移動并改名如:mv /opt/bbb /home/ccc
cat [選項] 要查看的文件:查看文件內容
若選項為-n:則顯示行號
注意:cat只能瀏覽不能修改,比較安全,為了瀏覽方便,一般會帶上管道命令:| more
如:cat -n /etc/profile | more(進行交互)
more指令:一個基于VI編輯器的文本過濾器,more指令中內置了許多快捷鍵
less指令是用來分屏查看文件內容的,類似于more但比more更強大,支持各種顯示終端,less在顯示文件內容時,并不是一次將整個文件加載后才顯示,而是根據顯示需要加載內容,對于大型文件具有較高的效率
快捷鍵:
echo [選項] 輸出內容:echo輸出內容到控制臺
head 文件:查看文件頭10行內容
head -n 5 文件:查看文件頭5行內容
tail:類似于head
特殊:tail -f 文件:實時追蹤該文檔的所有更新
>指令和>>指令
>輸出重定向和>>追加
基本語法:
- ls -l > 文件:將列表的內容覆蓋到文件中
- ls -al >> 文件:列表的內容追加到文件的末尾
- cat 文件1 > 文件2:將文件1的內容覆蓋到文件2中
- echo “內容” >> 文件:將內容追加到文件中
ln -s 源文件或目錄 軟連接名:給原文件創建一個軟連接
軟連接是一種特殊的文件,它包含了對另一個文件或目錄的引用。與硬鏈接不同,軟連接創建了一個指向目標文件或目錄的路徑引用,而不是直接指向文件數據塊
因為是一個文件,所以刪除也可以用rm指令
注意:當我們使用pwd指令查看目錄時,仍然看到的是軟連接所在目錄
history:查看系統執行過的歷史命令
查看最近十個指令:history 10
執行歷史指令為5的指令:!5
5.時間日期類
date指令:
- date:顯示當前時間
- date +%Y:顯示當前年份
- date +%m:顯示當前月份
- date +%d:顯示當前天份
- date “+%Y-%m-%d %H:%M:%S”:顯示年-月-日 時:分:秒
- date -s 字符串時間:設置系統當前時間,如:date -s “2024-1-1 00:00:00”
注意:字母嚴格區分大小寫
cal [選項]:不加選項,顯示本月日歷
若選項為數字:則顯示年日歷
6.查找指令
find 搜索范圍 [選項]
選項說明:
案例:
- find /home -name hello.txt
- find /opt -user root | more
- find / -size +200M(+n大于,-n小于,n等于,單位有k,M,G)
locate指令可以快速定位文件路徑,locate指令利用事先建立的系統中所有文件名稱及路徑的locate數據庫實現快速定位給定的文件
語法:locate 文件
特別說明:第一次運行前,必須使用updatedb指令
which指令:可以查看某個指令在哪個目錄下
如:which ls
grep [選項] 查找內容 源文件
常用選項:

管道符號|,表示將前一個命令的處理結果輸出傳遞給后面的命令處理
如:cat /home/a.txt | grep -n “a”
7.壓縮和解壓
gzip/gunzip指令:壓縮和解壓
基本語法:
①gzip 文件:只能壓縮成.gz文件
②gunzip 文件
zip/unzip指令:壓縮和解壓
基本語法:
①zip [選項] 壓縮文件名 文件名
②unzip [選項] XXX.zip
zip常用選項:-r,遞歸壓縮,即壓縮目錄
unzip常用選項:-d <目錄>,指定解壓后文件的存放目錄,不寫就是解壓到當前文件夾
案例:
zip -r a.zip /home/:將home文件都壓縮成a.zip
unzip -d /opt/tmp /home/a.zip:將a.zip解壓到/opt/tmp目錄下
tar [選項] XXX.tar.gz 打包的內容:打包目錄,壓縮后的文件格式是.tar.gz
選項說明:
七.組管理和權限管理
1.linux組的基本介紹
在linux中每個用戶必須屬于一個組
linux中每個文件有所有者、所在組、其它組的概念:
- 所有者:指定了文件的創建者或所有者。所有者可以對文件進行讀取、寫入和執行等操作,具體權限取決于文件的權限設置
- 所在組:除了所有者之外,每個文件還可以分配一個所在組。組成員具有與組相關聯的權限,這些權限通常是與文件的所有者不同的
- 其它組:除了所有者和所在組之外的所有用戶屬于其它組。其它組成員對文件具有的權限,也是與所有者和所在組成員的權限不同的
2.所有者
一般為文件的創建者
查看文件的所有者的指令:ls -ahl
修改文件所有者:chown 用戶名 文件名
3.所在組
組的創建:groupadd 組名
查看文件所在組:查看文件的所有者的指令也會顯示文件的所在組,就跟在所有者后面
其它指令:ls -l 文件名
輸出結果比如說:-rw-r–r-- 1 owner group 0 Jun 20 12:00 文件名
修改文件所在組:chgrp 組名 文件名
4.改變用戶所在組
在添加用戶時,可以將指定的用戶添加到組中, 同樣的用root的管理權限可以改變用戶的所在組
指令:
- usermod -g 新組名 用戶名
- usermod -d 目錄名 用戶名:改變該用戶登錄的初始目錄(用戶需要有進入到新目錄的權限)
5.rwx權限
上面的輸出結果-rw-r–r-- 1 owner group 0 Jun 20 12:00 文件名:
0-9位說明:
第0位確定文件類型(d,-,l,c,b):
-:普通文件
l:鏈接文件,相當與Windows的快捷方式
d:目錄,相當于Windows的文件夾
c:字符設備文件,鼠標,鍵盤
b:塊設備,比如硬盤
第1-3位確定所有者(該文件的所有者)擁有該文件的權限
第4-6位確定所屬組(同用戶組的)擁有該文件的權限
第7-9位確定其它用戶擁有該文件的權限
rwx權限詳解
rwx作用到文件:
- r代表可以read,可以讀取和查看
- w代表可以write,可以修改,但不代表可以刪除該文件,刪除一個文件的前提是對該文件所在的目錄有寫權限,才能刪除該文件
- x代表execute,可以被執行
rwx作用到目錄:
- r:可以讀取,可以ls查看目錄內容
- w:可以修改,對目錄內創建文件+刪除文件+重命名目錄
- x:可以進入該目錄,即cd
案例說明
-rwxrw-r-- 1 root root 1213 Feb 2 09:39 abc:
這是-(普通)文件
所有者的權限是rwx
所在組的權限是rw
其它者的權限是r
1是文件數和子目錄數的總和
第一個root是用戶
第二個root是組
1213是文件大小(字節),如果是文件夾,則顯示4096
Feb 2 09:39是修改時間
abc是文件名
6.修改權限
通過chmod指令,可以修改文件或者目錄的權限
第一種方式:±=變更權限:
u:所有者,q:所有組,o:其他人,a:所有人(u、g、o的總和)
案例:
1)chmod u=rwx,g=rx,o=x 文件/目錄名
2)chmod o+w 文件/目錄名
3)chmod a-x 文件/目錄名
第二種方式:通過數字變更權限:
r=4,w=2,x=1,rwx=4+2+1=7
chmod u=rwx,g=rx,o=x 文件/目錄名相當于chmod 751 文件/目錄名
7.修改文件所有者和所在組
chown(change owner) 新所有者 文件/目錄名:改變所有者
chown 新所有者:新組 文件/目錄名:改變所有者和所在組
-R:遞歸,使其下所有子文件或目錄遞歸生效
chgrp 新組 文件/目錄:改變所在組
也有-R
八.定時任務調度
1.crond入門
概述:
任務調度:是指系統在某個時間執行的特定的命令或程序
任務調度分類:系統工作(如病毒掃描),個別用戶工作
基本語法:
crontab [選項]
常用選項:
案例:
設置任務調度文件:/etc/crontab
設置個人任務調度,執行:crontab -e
接著輸入任務到調度文件,如:* 1 * * * * ls -l /etc/ > /tmp/a.txt
意思是每分鐘執行ls -l /etc/ > /tmp/a.txt命令
5個占位符的說明:
特殊符號的說明:
特殊時間執行案例:
crontab相關指令:
- crontab -r:終止任務調度
- crontab -l:列出任務調度
- service crond restart:重啟任務調度
2.at任務調度機制
at命令時一次性定時計劃任務,at的守護進程atd會以后臺模式進行,檢查作業隊列來運行
默認情況下,atd守護進程每60秒檢查作業隊列,有作業時,會檢查作業運行時間,如果時間與當前時間匹配,則運行此作業
注意:在使用at命令的時候,要先保證atd進程的啟動
檢查atd是否啟動的命令:ps -ef | grep atd
at命令格式:at [選項] 時間
兩次輸入ctrl+D結束at命令的輸入
atq命令可以看系統中正在隊列的命令
atrm 任務編號:刪除正在隊列中的命令
常用選項:
at指定時間的方法:
案例:
2天后的下午5點執行/bin/ls指令 /home:at 5pm + 2 days然后回車輸入/bin/ls /home然后ctrl+D兩次
九.linux磁盤分區、掛載
1.磁盤分區機制
linux歸根結底就只有一個根目錄
linux采用了叫載入(mount)的處理方法,它的整個文件系統中包含了一整套的文件和目錄,且將一個分區和一個目錄聯系起來。這時要載入的一個分區將使它的存儲空間在一個命令下獲得
查看所有設備掛載情況:lsblk或lsblk -f
硬盤說明:
- linux硬盤分IDE硬盤和SCSI硬盤,目前主要是SCSI硬盤
- 對于IDE硬盤,驅動器標識符為hdx,其中hd表示分區所在設備的類型,這里是指IDE硬盤。x為盤號(a為基本盤,b為基本從屬盤,c為輔助主盤,d為輔助從屬盤),表示分區,前四個分區用數字1到4表示,它們是主分區或拓展分區,從5開始就是邏輯分區
- 對于SCSI硬盤的標識sdx~,SCSI的sd是設備類型,其余和IDE硬盤的表示方法一樣
2.增加磁盤
增加虛擬機硬盤操作:
①虛擬機添加硬盤
②分區
③格式化
④掛載
⑤設置樂意自動掛載
步驟1:
- 在虛擬機菜單中,選擇設置,然后設備列表里添加硬盤,然后一路【下一步】,中間只有選擇磁盤大小的地方需要修改,直至完成,然后重啟系統
步驟2:
- 分區命令fdisk /dev/sdb
- 進入分區后,m:顯示命令列表,p:顯示磁盤分區同fdisk -l,n:新增分區,d:刪除分區,w:寫入并退出
- 說明:輸入n,新增分區,然后選擇p,分區類型為主分區,兩次回車默認剩余全部空間。最后輸入w寫入分區并退出,若不保存退出輸入q
步驟3:
- 分區命令:mkfs -t ext4 /dev/sdb1(其中ext4是分區類型)
步驟4:
- 掛載:將一個分區和一個目錄聯系起來,mount 設備名稱 掛載目錄:建立聯系
- unmount 設備名稱 或者 掛載目錄:卸載聯系
- 注意:用命令行掛載,重啟后會失效
步驟5:
- 永久掛載:通過修改/etc/fstab實現掛載
- 添加完成后,執行mount -a立刻實現