4.linux檔案管理使用者管理磁碟管理命令及感悟
檔案管理
Cd:切換目錄,例:cd /home/webuser;
Pwd:顯示當前目錄;
Ls:顯示指定目錄下的內容,預設為當前目錄,-a引數顯示所有檔案(包括隱藏檔案),-l引數顯示檔案的詳細資訊;
Alias:起別名,例:alias ll='ls -l --color=auto';
Cat、more、less、tail都是檢視文字類檔案內容:
cat 會一次輸出所有內容到標準輸出上,常和重定向結合使用,Cat還有合併檔案的功能,例:cat file1 file2 > file;
more一屏顯示不完成時會暫停等待使用者操作,按空格下翻一屏,按回車向下一行,直到文字結束或者按q鍵結束;
Less和more相似,不同的是less可以向後翻頁;
Tail 顯示檔案的末尾行,預設顯示最後10行,-n引數可以設定顯示的行數,-f引數當檔案內容發生增加時自動顯示。
Split:分割檔案
例:split -b 2000m centos.iso centos.iso_part_ 會把centos.iso按每個2G分割成多個檔案,centos.iso檔案不會消失,會產生centos.iso_part_aa、centos.iso_part_ab之內的檔案。
Cut:用來從標準輸入或文字檔案中剪下列或域。-c引數指定剪下的字元,-f指定剪下的域,-d指定分隔符。
vi:功能強大的文字編輯器,分編輯模式、命令模式和末行模式。編輯模式按ESC鍵切換到命令模式。命令模式下i鍵光標籤插入,a鍵游標後插入,o游標下一下新建一行,G到文章末,1G到文章頭。非編輯模式下按冒號進入模式,常用操作有 w儲存,wq儲存並退出,q退出,q!強制退出,set nu顯示行號等等。
Grep:強大的文字搜尋工具,支援正則表示式。和其他語言類似:^開頭,$結尾,*零個或者多個,+一個或者多個,|多個匹配,[ ]範圍匹配等等。例:ps -ef|grep java。
Sed:常用於替換文字內容。
Awk:能完成grep和sed完成的所有功能。
Wc:統計位元組、字元、行。-c引數統計位元組,-w統計字元,-l統計行。
例:ps -A|grep java|wc -l 統計當前系統中運行了幾個java程式。
Touch: 從英文字面意思可以理解這個命令。常用的場合:當檔案存在的時候更新檔案的日期和時間,當檔案不存在的時候建立檔案。另外-d引數可使用指定的日期或時間。
Mv:剪下或重新命名。
Cp:複製。常用引數-i 有同名檔案時互動式提示使用者,-r拷貝目錄時遞迴下面的子目錄,-f同名檔案時不提示直接覆蓋(和-i相反),-p拷貝時將許可權和修改時間連帶拷走(很常用,因為linux下許可權控制比較嚴格)。有時候在部署web應用的時候需要覆蓋大量的檔案,加了-f引數還是會提示確實(一個個按y是很惱火的),這是因為我們用的cp命令不是原生態的,在主目錄下有個.bashrc檔案中給它起了別名。
Rm:刪除。-r和-f引數cp。
Echo:回顯。可以結合特殊符號$、``等使用。
例:xxx=123; echo $xxx 將會打印出123;
Echo `env` 將會打印出系統的環境變數。
Ln:建立硬連結。-s引數建立軟連結。
Tar:可用於備份或打包壓縮。常用引數:c 壓縮,x解壓縮,r追加檔案到已存在的檔案檔案末尾,z 呼叫gzip來壓縮/解壓歸檔檔案,v顯示處理詳細資訊,p保留檔案原來的許可權,f使用檔名(後立即接檔名),j呼叫bzip2壓縮/解壓檔案。
Zip:常用系統通用的壓縮格式。常用引數:r 包含所有子目錄和檔案,q安靜模式(不現實詳細過程)。例:zip -q -r tomcat.zip tomcat/ 。
Unzip:解壓縮zip格式歸檔包。常用引數:l檢視壓縮包中內容。
例:unzip -l tomcat.zip 列印tomcat.zip中的內容;
unzip tomcat.zip 解壓縮tomcat.zip到當前目錄。
Rpm:相當於windows下的新增/刪除程式,是用來管理軟體包的。增刪改查:i 安裝(install)、q 查詢(query)、e 刪除(erase)、U升級(upgrade);通用引數:v 列印詳細資訊,h列印hash值與引數v一起使用;
例:rpm -ivh vsftpd* 安裝ftp
Which:從環境變數$PATH中搜索可執行檔案。
Whereis:搜尋在資料庫裡的資料。引數:-b 二進位制(binary)格式,-s原始檔等。
Locate:也是從資料庫中搜索,但可以通過“部分檔名“搜尋,也就是名稱記不全的時候很方便。依賴的DB是/var/lib/mlocate/mlocate.db,由於系統的更新頻率不一致,有可能新增的查不到。
Find:最強大的搜尋命令,但也最耗硬碟資源,可以配合各種萬用字元使用。
例:find / -name tomcat* 查詢所有以tomcat打頭的檔案;
find . -type d -mtime +10 查詢當前目錄下10天前的目錄;
find ! -name run.sh 查詢當前目錄和子目錄下名字不是run.sh的檔案。
Ldd:和其他命令不一樣,它實際是個shell指令碼。是用來檢視程式執行所需的共享庫,常用來解決程式因缺少某個庫檔案而不能執行的一些問題。
Make:編譯程式的命令,原始碼安裝時會用到。常用形式:make 編譯,make clean 刪除由make產生的檔案,make check測試剛編譯的軟體(有可能不支援),make distclean刪除./configure產生的檔案,make install 安裝已編譯的程式並複製檔案到prefix指定的目錄中,make installcheck檢測安裝的程式和庫檔案(有可能不支援)。
Gcc:編譯程式碼,其中會有預處理、彙編、編譯並連結形成可執行檔案這些步驟。例:
gcc test.c -o test ,將test.c變成可執行檔案test,多個檔案一起編譯用空格分隔。
Source:點(.)命令,使剛修改的初始化檔案不用重新登陸shell就生效,還有一個用途是把檔案內容當做shell來執行(編譯核心)。
Ulimit:設定shell啟動程序的資源限制。常用引數: -a 顯示當前所有限制,-n設定開啟的檔案描述符的,-s設定stack的大小(段錯誤segmentation fault)。
Inode: i節點是指對檔案的索引。如一個系統,所有檔案是放在磁碟或flash上,就要編個目錄來說明每個檔案在什麼地方,有什麼屬性,及大小等。就像書本的目 錄一樣,便於查詢和管理。這目錄是作業系統需要的,用來找檔案或叫管理檔案。許多作業系統都用到這個概念,如linux, 某些嵌入式檔案系統等。當然,對某個系統來說,有許多i節點。所以對i節點本身也是要進行管理的。
檔案描述符:在linux中,核心通過inode來找到每個檔案,但一個檔案可以被許多使用者同時開啟或一個使用者同時開啟多次。這就有一個問題,如何管理檔案的當前位移 量,因為可能每個使用者開啟檔案後進行的操作都不一樣,這樣檔案位移量也不同,當然還有其他的一些問題。所以linux又搞了一個檔案描述符(file descriptor)這個東西,來分別為每一個使用者服務。每個使用者每次開啟一個檔案,就產生一個檔案描述符,多次開啟就產生多個檔案描述符,一一對應, 不管是同一個使用者,還是多個使用者。該檔案描述符就記錄了當前開啟的檔案的偏移量等資料。所以一個i節點可以有0個或
使用者管理
檢視所有使用者
cut -d : -f 1 /etc/passwd
新增使用者
useradd 命令可以建立一個新的使用者帳號,其最基本用法為:
useradd 使用者名稱
如輸入以下命令:
adduser newuser
useradd newuser
系統將建立一個新使用者 newuser,該使用者的Home 目錄為/home/newuser。
useradd 命令的引數較多,常用的組合為:
useradd 使用者名稱 -g 組名–G 組名-d Home 目錄名-p 密碼
其中:-g 指定該使用者的首要組
-G 指定該使用者的次要組
-d 指定該使用者的Home 目錄
-p 指定該使用者的密碼
如輸入以下命令:
useradd oracle –g oinstall –G dba –d /home/oracle –p ora123
系統將建立一個使用者 oracle oracle 使用者的首要組為oinstall ,次要組為dba,Home 目錄為/home/oracle ,密碼為ora123。
刪除使用者
userdel 命令用於刪除一個已存在的帳號,其用法為:
userdel 使用者名稱
新增分組
groupadd 命令可以建立一個新的使用者組,其最基本用法為:
groupadd 組名
如輸入以下命令:
groupadd newgroup
系統將建立一個新的使用者組 newgroup。
刪除分組
groupdel 命令用於刪除一個已存在的使用者組,其用法為:
groupdel 組名
修改密碼
出於系統安全考慮, Linux 系統中的每一個使用者除了有其使用者名稱外還有其對應的使用者口令,使用者可以隨時用passwd 命令改變自己的口令。該命令的一般格式為:
passwd
輸入該命令後, 按系統提示依次輸入密碼和密碼確認後,即可完成使用者密碼的修改。
此外, 超級使用者還可以修改其他使用者的口令,命令如下:
passwd 使用者名稱
例如:
passwd username
Changing password for user test.
New password: 這裡輸入密碼
Retype new password: 再次輸入密碼
passwd: all authentication tokens updated successfully.
su切換使用者
su 命令這個命令非常重要,它可以讓一個普通使用者擁有超級使用者或其他使用者的許可權,
也可以讓超級使用者以普通使用者的身份做一些事情。普通使用者使用這個命令時必須有超級使用者或其他使用者的口令。
如要離開當前使用者的身份,可以鍵入exit 命令,su 命令的一般形式為:
su – 使用者名稱
chmod修改訪問許可權
chmod 命令是非常重要的,用於改變檔案或目錄的訪問許可權。該命令有兩種用法:一種是包含字母和操作符表示式的文字設定法,另一種是包含數字的數字設定法。
由於數字設定法不太直觀 ,本文不做介紹。文字設定法的用法如下:
chmod [who] [+ | - | =] [mode] 檔名
命令中各選項的含義為:
1 、操作物件who 可以是下述字母中的任一個或者它們的組合:
u 表示使用者(user) ,即檔案或目錄的所有者
g 表示同組(group)使用者,即與檔案屬主有相同組ID 的所有使用者
o 表示其他(others)使用者
a 表示所有(all)使用者,它是系統預設值。
2 、操作符號可以是:
+ 新增某個許可權
- 取消某個許可權
= 賦予給定許可權,並取消其他所有許可權
3 mode 表示許可權常用的引數有
r 可讀
w 可寫
x 可執行
舉例:
1 、將檔案 script 的許可權設為可執行。命令如下:
chmod =rx text
執行成功後 ,用ls -l script 命令檢視檔案屬性的結果如下:
-r-xr-xr-x 1 user group 0 Feb 10 09:42 script
2 、將檔案 text 的許可權設為:檔案屬主可讀、可寫、可執行,與檔案屬主同組的使用者可讀,其他使用者不可讀。命令如下:
chmod u=rwx,g=r,o= text (注意,後無空格o=後有空格)
執行成功後 ,用ls –l text 命令檢視檔案屬性的結果如下:
-rwxr—– 1 user group 0 Feb 10 09:42 text
8. chown
chown 用於更改某個檔案或目錄的屬主和屬組,這個命令也很常用。例如root 使用者把自己的一個檔案拷貝給使用者oracle ,為了讓使用者oracle 能夠存取這個檔案,root 使用者應該把這個檔案的屬主設為oracle ,否則使用者oracle無法存取這個檔案。chown 的基本用法為:
chown [使用者:組] 檔案
舉例:
chown oracle:dba text
該命令將 text 檔案的屬主和屬組分別改為oracle 和dba。
磁碟管理
多個檔案描述符。多個檔案描述符可以對 應一個i節點。
日程磁碟管理中,我們最常用的有檢視當前磁碟使用情況,檢視當前目錄所佔大小,以及打包壓縮與解壓縮;
檢視磁碟空間
檢視磁碟空間利用大小
df -h
-h: human縮寫,以人類易讀方式顯示結果(既帶單位:比如M/G,如果不加這個引數,顯示的數字以B為單位)
$df -h
/opt/app/todeav/config#df -h
Filesystem Size Used Avail Use% Mounted on
/dev/mapper/VolGroup00-LogVol00
2.0G 711M 1.2G 38% /
/dev/mapper/vg1-lv2 20G 3.8G 15G 21% /opt/applog
/dev/mapper/vg1-lv1 20G 13G 5.6G 70% /opt/app檢視當前目錄所佔空間大小
du -sh
-h 人性化顯示
-s 遞迴整個目錄的大小
$du -sh
653M檢視當前目錄下所有子資料夾排序後的大小
for i in `ls`; do du -sh $i; done | sort
或者:
du -sh `ls` | sort打包/ 壓縮
打包
在linux中打包和壓縮和分兩步來實現的;打包是將多個檔案歸併到一個檔案;壓縮命令實現大小;
tar -cvf etc.tar /etc
==僅打包,不壓縮!
-c :打包選項
-v :顯示打包進度
-f :使用檔案檔案
注:有的系統中指定引數時不需要在前面加上-,直接使用tar xvf
壓縮
$gzip demo.txt
生成
demo.txt.gz
解包/解壓縮
解包
tar -xvf demo.tar
-x 解包選項
解壓字尾為 .tar.gz的檔案
先解壓縮,生成**.tar
$gunzip demo.tar.gz2.
解包:
$tar -xvf demo.tar
$bzip2 -d demo.tar.bz2bz2
解壓
tar jxvf demo.tar.bz2
如果tar 不支援j,則同樣需要分兩步來解包解壓縮,使用bzip2來解壓,再使用tar解包;
bzip2 -d demo.tar.bz2
tar -xvf demo.tar
-d decompose
解壓縮
tar解壓引數說明:
-z 解壓gz檔案
-j 解壓bz2檔案
-J 解壓xz檔案