Linux學習
1.Linux目錄結構
- linux的目錄結構:

目錄結構具體介紹:
- /bin 是Binary的縮寫,存放着最經常使用的命令
- /home 存放着普通用戶的主目錄,Linux中每個用戶都有一個自己的目錄,一般是以用戶的賬號命名的
- /root 該目錄為系統管理員,
- /boot 啟動Linux時使用的一些核心文件,包括一些連接文件以及鏡像文件
- /tmp 用來存放一些臨時文件
- /media 自動識別一些設備
- /usr/local 這是利一個給主機額外安裝軟件所安裝的目錄,一般是通過編譯源碼方式安裝的目錄
- /var 這個目錄存放着不斷擴充的東西
2.vi和vim編輯器
- 所有的linux系統都會內建vi文本編輯器
- vim可以看成是vi的增強版本
- vi和vim三種模式的相互轉化圖

3.開機,重啟,和用戶登入注銷
a關機&重啟命令
- 基本操作:
shutdown
shotdown -h now:表示立即關機
shutdown -h 1:表示一分鍾后關機
shotdown -r now:立即重啟
halt
就是直接使用,等價於關機
reboot
重啟系統
syn
把內存的數據同步到磁盤
用戶登入和注銷
- 登入是盡量少用root賬號登入,可以用普通用戶登錄,后再用"su- 用戶名"切換成管理員身份
- 在提示符下輸入logout即可注銷用戶
用戶管理:
- linux操作系統示意圖
- linux的用戶需要至少屬於一個組

- 添加用戶
useradd [選項] 用戶名
例如:useradd xiaoming
- 給用戶指定或修改密碼
基本語法:
passwd 用戶名
例如: passwd xiaoming
- 刪除用戶
基本語法:
userdel 用戶名
1)刪除用戶xiaoming,但要保留家目錄:
userdel xiaoming
2)刪除用戶xiaoming以及用戶主目錄:
userdel -r xiaoming
- 查詢用戶信息
基本語法:
id 用戶名
例如:
id root
uid=0(root) gid=0(root) 組=0(root):分別為用戶id號,所在組的id號,組名
注:當用戶不存在時,返回“無此用戶”
- 切換用戶:
基本語法:
su - 切換用戶名
由權限高的用戶切換到權限低的用戶不需要密碼,反之需要
但需返回到原來用戶時,使用exit指令
- 用戶組:
1.增加組:
groupadd 組名
2.刪除組:
groupdel 組名
3.增加用戶時直接加上組
useradd -g 用戶組 用戶名
4.修改用戶的組
usermod -g 用戶組 用戶名
- 配置文件
1. /etc/passwd
用戶的配置文件,記錄用戶的各種信息
2. /etc/shadow
口令的配置文件
3. /etc/group
組的配置文件:記錄Linux包含的組的信息
實用指令
1.運行級別說明

- 0:關機
- 1:單用戶
- 2:多用戶狀態沒有網絡服務
- 3:多用戶狀態由網絡服務
- 4:系統未使用保留給用戶
- 5: 圖形界面
- 6:系統重啟
2.切換到指定級別的指令
- 基本語法:
init[012356]
- 面試題:如何找回root密碼,如果不小心忘記了root密碼,怎么找回
思路:進入到單用戶模式,然后修改root密碼
因為進入單用戶模式。root不需要密碼就可以登入
3.幫助指令:
- man 獲得幫助信息
基本語法:
man [命令或配置文件]
- help指令
基本語法:
help 命令
4.文件目錄類:
- pwd指令
基本語法:顯示當前工作目錄的絕對路徑
pwd
- ls指令
基本語法:
ls [選項] [目錄或文件]
常用選項:
-a : 顯示當前所有的文件和目錄,包括隱含的
-l : 以列表的形式顯示信息
- cd指令
基本語法:
cd [參數] (功能描述:切換到指定目錄)
切換到家目錄: cd 或者 cd ~
- mkdir指令:用於創建目錄
基本語法
mkdir [選項] 要創建的目錄
常用選項
-p : 創建多級目錄
- rmdir指令:刪除空目錄
基本語法:
mkdir [選項] 要刪除的空目錄
提示:如果需要刪除非空目錄,需要使用rm -rf 要刪除的目錄
- touch指令
基本語法:
touch 文件名稱
- cp指令[重要]
基本語法:
cp[選項] source dest
常用選項
-r : 遞歸復制整個文件夾
- rm指令
基本語法:
rm [選項] 要刪除的文件或目錄
常用選項
-r : 遞歸刪除整個文件夾
-f : 強制刪除不提示
- mv指令:移動文件於目錄或重命名
基本語法:
mv oldNameFile newNameFile(移動文件)
mv /temp/movefiel/targetFolder(功能描述:移動文件)
- cat指令
基本語法:
cat [選項] 要查看的文件
常用選項:
-n:顯示行號
使用細節
cat只能瀏覽文件不能修改文件,為了瀏覽方便一般會帶上管道 | more
cat 文件名 | more(分頁瀏覽)
- more指令
基本語法:
more 要查看的文件
應用實例:
more /etc/profile
- more快捷鍵

- less指令
基本語法
less 要查看的文件
- '> 指令和 >>指令'
> 輸出重定向:會將原來的文件內容覆蓋
>> 追加:追加到文件的尾部
基本語法:
1) ls-l>文件(功能描述:列表中內容寫入到a.txt中)
2) ls-al>>文件(功能描述:列表中內容追加到a.txt中)
3) cat 文件1>文件2(功能描述:將文件1的內容覆蓋到文件2)
4) echo "內容" >> 文件
- echo指令
基本語法:
echo [選項] [輸出內容]
應用案例
使用enho輸出環境變量 echo $PATH
- head指令
基本語法
head 文件 (功能描述: 查看文件頭10行)
head -n 5 文件 (功能描述: 查看文件頭5行)
- tail指令
基本語法:
1) tail 文件 (功能描述:查看文件后10行)
2) tail --n 5 文件 (功能描述:查看文件后5行)
3) tail -f 文件 (功能描述:實時追蹤該文檔的所有更新。工作中經常使用)
- ln指令
基本語法:
ln -s [原文件或目錄][軟連接名] (功能描述:給原文件按創建一個軟連接)
- history指令
基本語法:
history (功能描述:查看已經執行過的歷史命令)
案例:history 10(查看最近使用過的10個指令)
時間日期類:
- date指令-顯示當前日期
基本語法:
1)date (功能描述:顯示當前時間)
1)date+%Y (功能描述:顯示當前年份)
1)date+%m (功能描述:顯示當前月份)
1)date+%d (功能描述:顯示當前是哪一天)
1)date "+%Y-%m-%d %H:%M:%S"(功能描述:顯示當前年月日時分秒)
- date指令-設置日期
基本語法:
date -s 字符串時間
案例:
date -s "2018-10-10 11:22:22"
- cal指令
基本語法:
cal[選項] (功能描述:不加選項,顯示本月日歷)
搜索查找類
- find指令
基本語法:
find [搜索范圍] [選項]
選項說明:
-name<> 按照指定的文件名查找模式查找文件
-user<用戶名> 查找屬於指定用戶名所有文件
-size<文件大小> 按照指定的文件大小查找文件
案例:
find /home -name hello.txt
find /opt -user nobody
find / -size +20M(-20M 20M)
- locate指令
基本語法:
locate 搜索文件
注意:
第一次運行前,必須updatedb指令創建locate數據庫
案例:
使用locate快速定位hello.txt:locate hello.txt
- grep指令和管道符號|
- grep過濾查找,管道符|表示將前一個命令的處理結果輸出傳遞給后面的命令處理
基本語法:
grep[選項] 查找內容 源文件
常用選項
-n 顯示匹配行及行號
-i 忽略字母大小寫
案例:
cat hello.txt | grep -n haha
cat hello.txt | grep -ni haha
壓縮和解壓
- gzip/gunzip 指令
基本語法:
gzip 文件 (功能描述:壓縮文件,只能將文件壓縮為*.gz文件)
gunzip 文件.gz (功能描述:解壓縮文件命令)
- zip/unzip指令
- zip用於壓縮文件,unzip用於解壓的。這個在項目打包發布中很有用
基本語法:
zip [選項] XXX.zip 將要壓縮的內容(功能描述:壓縮文件和目錄)
unzip [選項] XXX.zip(功能描述:解壓縮文件)
zip常用選項
-r:遞歸壓縮,及壓縮目錄
unzip常用選項
-d<目錄>:指定解壓后文件的存放目錄
案例:
zip -r mypackage.zip /home/
unzip -d /opt/tmp/ mypackage.zip
- tar指令
- tar指令時打包指令,最后打包后的文件時.tar.gz的文件。
基本語法:
tar [選項] XXX.tar.gz 打包的內容 (功能描述:打包目錄。解壓后的文件格式.tar.gz)
選項說明
-c 產生.tar打包文件
-v 顯示詳細信息
-f 指定壓縮后的文件名
-z 打包同時壓縮
-x 解包.tar文件
案例:
tar -zcvf a.tar.gz a1.txt a2.txt(打包后的文件名 對那些文件打包)
tar -zcvf myhome.tar.gz /home/ (將/home的文件夾壓縮成myhome.tar.gz)
tar -zxvf z.tar.gz (將z.tar.gz解壓到當前目錄)
組管理和權限管理
Linux組基本介紹
- 在Linux中每個用戶必須屬於一個組,不能獨立於組外
- 所有者
- 所在組
- 其他組
- 改變用戶所在的組

- 修改文件所有者
基本語法:
chown 用戶名 文件名
案例:
chown tom apple.txt (將apple.txt所有者變為tom)
- 修改文件所在組
- 單某個用戶創建一個文件后,默認這個文件所在組就是改用戶所在組
基本語法:
chgrp 組名 文件名
案例:
chgrp police orange.txt
- 其他組
- 除文件的所有者和所在組的用戶外,系統的其他用戶都是文件的其他組
- 改變用戶所在組
基本語法:
usermod -g 組名 用戶名
usermod -d 目錄名 用戶名 改變該用戶登入的初始目錄
權限基本介紹
ls -l 中顯示的內容如下:
-rwxrw-r-- 1 root root 1213 Feb 2 09:39 abc
0-9位說明:
1) 第0位確定文件類型(d,-,l,c,b)
2) 第1-3位確定所有者(該文件所有者)擁有該文件的權限 --User
3) 第4-6位確定所屬組(同用戶組的)擁有該文件的權限 --Group
4) 第7-9位確定其他用戶擁有該文件的權限 --Other

- rwx作用到文件
1) [r]代表可讀(read):可以讀取,查看
2) [w]代表可寫(write):可以修改,但是不能刪除改文件,刪除一個文件的前提條件是對該文件的所在目錄有寫權限,才能刪除該文件
3)[x]代表可執行(execute):可以被執行
- rwx作用到目錄
1)[r]代表可讀(read):可以讀取,ls查看目錄內容
2)[w]代表可寫(write):可以修改,目錄內創建+刪除+重命名目錄
3)[x]代表可執行(execute):可以進入該目錄
- 數字表示
可用數字表示為:r=4 w=2 x=1 因此rwx=4+2+1=7
- 修改權限-chmod
- 通過chmod指令,可以修改文件或者目錄的權限
- 第一種方式:+,-,=變更權限
u:所有者 g:所有組 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
rwx = 4+2+1=7
r-x = 4+1 = 5
- 修改文件所有者
基本語法:
chown newowner file 改變文件的所有者
chown newowner:newgroup file 改變用戶的所有者和所有組
-R 如果時目錄 則使其下所有子文件或目錄遞歸生效
- 修改文件所在組-chgrp
基本語法:
chgrp newgroup file 改變文件的所有組
案例:
chgrp -R bandit /home/kkk(將/home/kkk目錄下所有的文件和目錄所在組都修改成bandit)
crond任務調度
- 原理示意圖

- 任務調度:是指系統在某個時間執行的特定的命令或程序
基本語法:
crontab[選項]
常用選項
-e 編輯crontab定時任務
-l 查詢crontab任務
-r 刪除當前用戶所有的crontab任務
設置任務調度文件:/etc/crontab
設置個人任務調度。執行crontab -e命令
接着輸入任務到調度文件
如:*/1 * * * * ls -l /etc/>/tmp/to.txt
意思是說每小時的每分鍾執行ls-l/etc/>>/tmp/to.txt
cron -e
*/1 * * * * ls-l/etc>tmp/to.txt
保存退出
在每一分鍾就會自動的調用ls-l/etc>>/tmp/to.txt
- 五個占位符的說明
項目 含義 范圍
第一個* 一個小時中的第幾分鍾 0-59
第二個* 一天當中的第幾小時 0-23
第三個* 一個月中的第幾天 1-31
第四個* 一年中的第幾個月 1-12
第五個* 一周當中的星期幾 0-7(0和7都代表星期日)
- 特殊符號說明
* 代表任何時間
, 代表不連續的時間
- 代表連續的時間范圍
*/n 代表每隔多久執行一次
- 特定時間執行任務案例
時間 含義
45 22 * * * 在22點45分執行命令
0 17 * * 1 在每周1的17點0分執行命令
0 5 1,15 * * 每月的1號和15號的凌晨5點0分執行命令
40 4 * * 1-5 每周一到周五的凌晨4點40分執行命令
*/10 4 * * * 每天的凌晨4點,每隔10分鍾執行一次命令
0 0 1,5 * 1 每月1號和15號,每周一的0點0分都會執行命令
Linux磁盤分區,掛載
分區基礎知識
- mbr分區
1. 最多至此四個主分區
2. 系統只能安裝在主分區
3. 擴展分區要占一個主分區
4. MBR最大只支持2TB但擁有最好的兼容性
- gtp分區
1. 支持無限多個主分區
2. 最大支持18EB的大容量
3. windows7 64位以后支持gtp
- 使用lsblk(老師不離開)指令查看當前系統的分區情況
- 如何增加一塊硬盤
1. 虛擬機添加硬盤
2. 分區 fdisk/dev/sdb
3. 格式化 mkfs -t ext4 /dev/sdb1
4. 掛載 先創建一個/home/newdisk 掛載mount /dev/sdb1 /home/newdisk
5. 設置可以自動掛載
vim /etc/fstab
/dev/sdb1 /home/newdisk ext4 defaults
- 查詢系統整體磁盤使用情況
基本語法:
df -h
案例
df -lh
- 查詢指定目錄的磁盤占用情況
基本語法:
du -h /目錄
# 查詢指定目錄的磁盤占用情況,默認為當前目錄
-s 指定目錄占用大小匯總
-h 帶計量單位
-a 含文件
--max-depth=1 子目錄深度
-c 列出目錄的同時,增加匯總值
案例:查詢/opt目錄的磁盤占用情況,深度為1
du -ach --max-depth=1 /opt
- 磁盤情況-工作使用指令
1. 統計/home文件夾下文件的個數
ls -l /home | grep "^d" wc -l
2. 統計/home文件夾下目錄的個數
ls -l /home | grep "^d" | wc -l
3. 統計/home文件夾下文件的個數,包括子文件夾里的
ls - lR /home | grep "^-" | wc -l
4. 統計文件夾下目錄的個數。包括子文件夾里面的
ls - lR /home | grep "^d" | wc -l
5. 以樹狀顯示目錄結構
tree
網絡配置
進程管理
顯示系統執行的進程
- 查看進行使用的指令是ps,一般來說使用的參數是ps -aux
ps 顯示的信息選項
字段 說明
PID 進程標識號
TTY 終端機號
TIME 此進程所消耗CPU時間
CMD 正在執行的命令或進程名
ps -a: 顯示當前終端的所有進程信息
ps -u: 以用戶的格式顯示進程信息
ps -x: 顯示后台進程的參數
終止進程kill和killall
基本語法:
kill [選項] 進程號 (功能描述:通過進程號殺死進程)
killall 進程名字 (功能描述:通過進程名稱殺死進程,也支持通配符)
常用選項:
-9:表示強迫進程立即停止
查看進程樹pstree
基本語法:
pstree[選項]: 可以更加直觀的來看進程信息
常用選項:
-p: 顯示進程的PID
-u:顯示進程的所屬用戶
服務(Service)管理
service管理指令
swevice 服務名 [start | stop | restart | reload | status]
動態監控進程
- top與ps最大的不同之處,在於top在執行一段時間可以更新正在運行的進程
基本語法:
top[選項]
選項說明:
選項 功能
-d 秒數 指定top命令每隔幾秒更新
-i 使top不顯示任何閑置或者僵屍進程
-p 通過指定監控進程id來監控某個進程狀態
交互操作說明:
操作 功能
P 以CPU使用率排序(默認就是此項)
M 以內存使用率排序
N 以PID排序
q 退出top
查看系統網絡情況netstat(重要)
基本語法:
netstat[選項]
netstat -anp
選項說明
-an 按一定順序排列輸出
-p 顯示那個進程在調用
Python: apt軟件管理和遠程登入
sudo apt-get update 更新源***
sudo apt-get install package 安裝包***
sudo apt-get remove package 刪除包***
sudo apt-cache search package 搜索軟件包
sudo apt-cache show package 獲取包的相關信息:說明 大小 版本等***
sudo apt-get install package --reinstall 重新安裝包
sudo apt-get -f install 修復安裝
sudo apt-get remove package --purge 刪除包,包括配置文件等
sudo apt-get build-dep package 安裝相關的編譯環境
sudo apt-get upgrade 更新已安裝的包***
sudo apt-get dist-upgrade 升級系統
sudo apt-chche depends packages 了解使用該包依賴那些包
sudo apt-chche rdepends package 查看該包被那些包依賴
sudo apt-get source package 下載該包的源代碼
Linux知識補充(更新時間: 2021-7-22 20:12)

tail命令
從文件尾部向上查看最后n行的內容
使用方式:tail -n[行數] 文件名
如果沒有指定行數,默認顯示最后10行內容
*****
一個比較重要的應用:顯示日志 : tail -f test.log
一個終端tail -f test.log , 另一個終端: echo “hello world” >>test.log
*****
軟鏈接 -- 源文件要使用絕對路徑
* 軟連接類似於windows下的快捷方式
* 如何創建軟連接:
ln -s 文件名 快捷方式的名字
例如:ln -s aa aa.soft
目錄也可以創建軟連接
例如:ln -s tmp tmp.link
*****
創建軟鏈接應注意事項:
ln創建軟連接要用絕對路徑,因為如果不使用絕對路徑,一旦這個連接文件發生位置變動,就不能找到那個文件了。(如果使用相對路徑軟連接或者原文件移動位置都找不到了)
軟連接文件的大小是: 路徑+文件名的總字節數
硬鏈接
* ln 文件名 硬鏈接的名字
* ln test.log test.log.hard
* 使用硬鏈接應注意事項
* 硬鏈接不能建在目錄上 目錄不能建立硬鏈接
* 硬連接對絕對路徑沒有要求
* 硬連接不能跨文件系統
硬鏈接文件和源文件的inode是相同的,文件系統的inode要求唯一,跨文件系統可能會使inode不同, 所以硬鏈接不能跨文件系統
* 硬鏈接的本質
* 硬連接的本質是不同的文件名所在的inode節點是相同的,相同的inode節點指向了相同的數據塊,所以他們的文件內容是一樣的,文件內容會同步。
軟件的安裝和卸載
11.1 在線安裝 -- 建議安裝前update下
軟件安裝:sudo apt-get install 軟件名
軟件卸載:sudo apt-get remove 軟件名
更新軟件列表:sudo apt-get update
清理安裝包:sudo apt-get clean
清理的是緩存路徑:/var/cache/apt/archives
11.2 軟件包安裝
在Ubuntu系統下必須有deb格式的安裝包
軟件安裝
sudo dpkg -i xxx.deb
軟件卸載
sudo dpkg -r 軟件名
-------------2021-7-26更新
linux查看cuda版本
cuda一般安裝在 /usr/local/cuda/ 路徑下,該路徑下有一個version.txt文檔,里面記錄了cuda的版本信息
cat /usr/local/cuda/version.txt
---------------2021-9-26更新
- wget命令下載文件
https://www.cnblogs.com/sx66/p/11887022.html
- linux之間復制文件和目錄命令scp
https://www.runoob.com/linux/linux-comm-scp.html