Linux常用命令:
練習3遍以上,命令有點多,建議慢慢查看
一、命令基本格式
1.命令格式:
[root(管理員)@localhost(主機名)~]#(超級用戶提示符,普通用戶提示符是$) adminis
/root一級目錄用pwd print working directory(打印工作目錄)查看
/home/user1/二級目錄
[root@localhost ~]# cd /usr/local/src/ 切換當前目錄
[root@localhost src]#
命令[選項] [參數] 中括號表示可選
注意:個別命令使用時不遵循此歌詩,當有多個選項時,可以寫在一起簡化選項和完整選項
-a 等於--all
2.查詢目錄中內容:ls [選項] [文件或目錄]
選項:
-a all,顯示所有文件,包括隱藏文件,隱藏文件以點"."開頭,.bashrc,隱藏是防止誤操作
-l 顯示詳細信息 longlist長顯示
-d 查看目錄屬性direct
-h 人性化顯示文件大小human
-i 顯示inode 即i節點
權限:默認10位 - rw- r-- r--
-文件類型(最主要的三種:-文件 d目錄 |軟鏈接文件)
另外四種文件類型:塊設備文件,字符設備文件,套接字文件和管道pipe文件
rw- r-- r--
user所有者 g所屬組 o其他人
-rw-r--r--. l root root 1207 1月 14 18:18 anaconda-ks.cfg
解釋:
-rw-r--r--:權限分佈
.:點.可能代表ACL權限
l:引用次數 ,被調用計數
1207:字符大小,一般是字節 # ls -lh:顯示字符後單位,方便閱讀h,human人性化
第一個root:所有組,主人
第二個root:所屬組,用戶組
1月14 18:18:最後一次修改的時間
記憶:r讀read,w寫write,x執行execute
二、文件處理命令
1.目錄處理命令
目錄同樣是文件,目錄用於保存文件
(1).建立目錄:mkdir make directories
mkdir -p [目錄名]
-p 遞歸創建,先創建上級目錄,再創建第二級目錄
[root@localhost ~]# mkdir -p japan/cangls
[root@localhost ~]# ls
anaconda-ks.cfg bols install.log install.log.syslog japan
[root@localhost ~]# cd japan/
[root@localhost japan]# ls
cangls
(2).切換所在目錄:cd change directory切換目錄
簡化操作:
cd ~ 進入當前用戶的家目錄
cd 進入當前用戶的家目錄 /Ctrl+L xshell清除屏幕
cd -進入上次目錄
cd .. 進入上一級目錄
cd . 進入當前目錄
[root@localhost japan]# cd /root/
[root@localhost ~]# ls
[root@localhost cangle]# pwd
/root/japan/cangls
[root@localhost cangls]# cd~
[root@localhost ~]# cd japan/cangls
[root@localhost cangls]# cd
[root@localhost ~]# cd -
/root/japan/cangls
[root@localhost cangls]# cd -
root
[root@localhost ~]# cd ..
[root@localhost /]# root目錄
.相對路徑:參照當前所在目錄,進行查找
如:[root@imooc ~]# cd ../usr/local/src/
[root@localhost /]# cd
[root@localhost ~]# pwd
/root
[root@localhost ~]#cd ../usr/local/src/ 相對路徑發生改變
[root@localhost src]# pwd
/usr/local/src
[root@localhost src]# cd ../usr/local/src/ 路徑已經改變,,所以提示錯誤無法確認到src中的usr目錄
-bash : cd: ../usr/local/src/:沒有那個文件或目錄
[root@localhost src]#
.絕對路徑:從根目錄開始指定,一級一級遞歸查找。在任何目錄下,都能進入指定位置,更加可靠
如:[root@localhost src]# cd /etc/
[root@localhost src]# cd /etc/
[root@localhost etc]# cd /etc/
[root@localhost etc]# cd /etc/
[root@localhost etc]# cd /etc/
[root@localhost etc]#
命令在任何目錄下都可以運行,畢竟是從根目錄開始的
如果不記得的目標目錄,
[root@localhost src]# cd /(按兩下tab)使用tab可以補全命令或者目錄
(3).查詢所在目錄位置:pwd
.pwd :print working directory打印工作目錄,顯示當前目錄
(4).刪除空目錄:rmdir
.rmdir [目錄名]:remove empty directories 刪除空目錄
[root@localhost ~]# ls
anaconda-ks.cfg bols install.log install.log.syslog japan
[root@localhost ~]# rmdir bols/
[root@localhost ~]# ls
anaconda-ks.cfg install.log install.log.syslog japan
[root@localhost ~]# rmdir japan/
rmdir:刪除 "japan/"失敗:目錄非空
因爲japan裏面有文件夾cangls,所以非空無法刪除
(5).刪除文件或目錄:rm
.rm -rf [文件或目錄]
命令英文願意:remove
選項:
-r 刪除目錄,刪除目錄時不可缺少
-f 強制
[root@localhost ~]# rm -rf / 刪除根目錄99%的文件,幾乎等於格式化,自殺式命令
(6).複製命令:cp
cp [選項] [原文件或目錄] [目標目錄]
命令英文願意:copy
選項:
-r 複製目錄
-p 連帶文件屬性複製
-d 若源文件是鏈接文件,則複製鏈接屬性
-a 相當於-pdr
[root@localhost ~]# cpanaconda-ks.cfg /tmp/ana(添加這個名字說明覆制過去會更改文件名,不填寫則複製過去仍是源文件名)
[root@localhost ~]# ls
anaconda-ks.cfg install.log install.log.syslog japan
[root@localhost ~]# cp japan/ /tmp/ 注意空格一下隔開japan/和/tmp/
cp:略過目錄"japan/" 需要添加-r
[root@localhost ~]# cp -r japan/ /tmp/
[root@localhost ~]# ls /tmp/
ana japan yum.log
可以使用ll查看我文件屬性和權限分佈
[root@localhost ~]# ll 或者寫成ls -l
總用量 48
- rw-------. 1 root root 1207 1月 14 20:38 ana
普通複製出來的文件時間新舊文件時間不一致
[root@localhost ~]# cp -pdr
複製出來的文件和源文件屬性等全部一致
(7)剪切或改名命令:mv
mv [原文件或目錄][目標目錄]
英文原意:move
剪切不區分文件和目錄,不加-r
[root@localhost ~]# mv japan/ /tmp/japan1 不在同一個目錄下是剪切
[root@localhost ~]# ls
anaconda-ks.cfg install.log install.log.syslog
[root@localhost ~]# cd /tmp/
[root@localhost tmp]# ls
ana anaconda-ks.cfg japan japan1 yum.log
改名:
[root@localhost tmp]# mv anaconda-ks.cfg longls 在同一個目錄下就變成改名了
[root@localhost tmp]# ls
ana japan japan1 longls yum.log
常用一級目錄的作用:
/根目錄
/bin 命令保存目錄(普通用戶就可以讀取的命令)
根目錄/下的bin和sbin,usr目錄下的bin和sbin四個目錄都是用來保存系統命令的,sbin只有root才能使用,普通用戶不行sbin,super bin
/boot 啓動目錄,啓動相關文件
/dev 設備配置文件保存目錄
/etc 配置文件保存目錄
/root 超級用戶的家目錄
/home 普通用戶的家目錄
/lib 系統庫保存目錄,常用函數庫
/mnt 系統掛載文件,cd-rom掛載光盤,usb掛載U盤
/media 掛載目錄
/misc 空目錄,最後三個是用掛載目錄
使用規範,約定俗成的目錄名
/proc/直接寫入內存
/sys/
proc和sys目錄是不能直接操作的,用來保存內存的過載點
不能用來存放數據,首先內存不能永久保存,而且存放會使系統變慢
/var 系統相關文檔的內容
/tmp 存放臨時文件
總結:可以在家目錄root或home,以及tmp目錄下隨便放內容
根目錄只存放必要的文件
(8).鏈接命令:ln
ln -s [原文件][目標文件]
命令英文原意:link
功能描述:生成鏈接文件
選項: -s 創建軟鏈接 soft
.硬鏈接特徵:
1、擁有相同的i節點和存儲block塊(一般4KB一個block),可以看做是同一個文件
相當於一個存儲文件的不同的獲取入口,鏡像一樣存儲double份
2、可以通過i節點識別
3、不能跨分區
4、不能針對目錄使用
[root@localhost ~]# ls
anacondalks.cfg cangls install.log install.log.syslog
[root@localhost ~]# ln /root/anaconda-ks.cfg /tmp/ana.hard
[root@localhost ~]# ll
總用量 44
-w--------. 2 root root 1207 1月 14 18:18 anaconda-ks.cfg
...
[root@localhost ~]# ll /tmp/
總用量 12
-w--------. 2 root root 1207 1月 14 18:18 ana.hard,引用計數都加1
通過任意方式打開修改後,通過另外一個仍可以查看文件,權限一致,其實就是同一個文件
缺陷:不能跨分區,不能針對目錄
.軟鏈接特徵:
1、類似windows快捷方式,方便打開
2、軟鏈接擁有自己的i節點和block塊,但是數據塊中保存原文件的文件名和i節點號,並沒有實際的文件數據,是原文件的i節點和block塊
3、lrwxrwxrwx |軟鏈接
軟鏈接文件權限都爲rwxrwxrwx,查看軟鏈接文件的權限,區別於原文件
4、修改任意文件,另一個都改變
5、刪除原文件,軟鏈接不能使用
限制少,而且靈活
[root@localhost ~]# ls
anacondalks.cfg cangls install.log install.log.syslog
[root@localhost ~]# ln -s /root/anaconda-ks.cfg /tmp/cangls.soft
[root@localhost ~]# ln /root/cangls /tmp/cangls.hard
[root@localhost ~]# ll
總用量 40
-rw-r--r--. 2 root root 1207 1月 14 22:00 cangls
...
[root@localhost ~]# ll -i
262419 -rw-r--r--. 2 root root 0 1月 14 22:00 cangls
262147 -rw-r--r--. 1 root root 24772 1月 14 18:17 install.log
...
[root@localhost ~]# ll -i /tmp/
262418 -rw--------. 1 root root 1216 1月 14 22:36 ana.hard
932110 -rw-r--r---. 1 root root 0 1月 14 22:00 cangls
262419 -rw-r--r--. 2 root root 0 1月 14 22:00 cangls.hard
932061 lrwxrwxrwx. 1 root root 12 1月 14 22:46 cangls.soft -> /root/cangls
其中rwx是指訪問軟鏈接的權限,不是原文件的權限,主要分析inode,權限變化,引用計數
...
使用[root@localhost ~]# cat /tmp/cangls.hard
[root@localhost ~]# cat /tmp/cangls.soft
查看文件
做軟鏈接需要使用絕對目標,否則會難以查找,或者在同一目錄下修改
三、文件搜索命令:
1.文件搜索命令locate
速度快,但只能按照文件名搜索
格式:locate 文件名,只能通過文件名來搜索
在後臺數據庫中按文件名搜索,搜索速度快
[root@localhost ~]# locate install,log
/root/install.log
/root/install.log.syslog
是否可以搜索新建文件?
[root@localhost ~]# touch cangls
[root@localhost ~]# locate cangls
[root@localhost ~]# 搜索不到,因爲數據庫未更新,每天更新一次
/var/lib/mlocate
#locate命令所搜索的後臺數據庫
[root@localhost ~]# updatedb
[root@localhost ~]# locate cangls
/root/cangls
updatedb
更新數據庫
但是,
[root@localhost ~]# touch /tmp/cangls
[root@localhost ~]# updatedb
[root@localhost ~]# locate cangls
/root/cangls
沒有出現/tmp/cangls
原因:locate搜索是按照/etc.updatedb.conf配置文件來進行搜索的
而 PRUNEPATHS = tmp,即tmp不再搜索路徑
詳情:
PRUNE_BIND_MOUNTS="yes"
#開啓搜索限制,限制全部生效,當是“no”時不搜索
PRUNEFS =
#搜索時,不搜索的文件系統
PRUNENAMES =
#搜索時,不搜索的文件類型
PRUNEPATHS =
#搜索時,不搜索的路徑
2.命令搜索命令whereis與which,用來搜索系統命令
(1).whereis 命令名,只能查系統文件命令
#搜索命令所在路徑及幫助文檔所在位置
選項:
-b :只查找可執行文件
-m :只查找幫助文件
[root@localhost ~]# whereis ls
ls:/bin/ls /usr/share/man/man1/ls.l.gz .usr/share/man/manlp/ls.lp.gz
後面的是幫助文檔的位置
[root@localhost ~]# whoami 查看我是誰
root
[root@localhost ~]# whatis ls 查詢這條命令的作用*
ls (l) - list directory contents顯示目錄
ls (lp) - list directory contents
[root@localhost ~]# whereis -b ls只看可執行文件位置
ls: /bin/ls
[root@localhost ~]# whereis -m ls只查看幫助文檔位置
ls: /usr/share/man/man1/ls.l.gz /usr/share/man/manlp/ls/lp/gz
(2).which 命令名,除了查看位置,還能查看到別名
#搜索命令所在路徑及別名
[root@localhost ~]# which ls
alias ls='ls --color=auto'顏色顯示
/bin/ls
[root@localhost ~]# whereis cd #cd屬於shell內置命令
cd: /usr/share/man/manl/cd.l.gz /usr/share/man/manlp/cd/lp/gz
[root@localhost ~]# which cd
/usr/bin/which:no cd in()
whereis和which的搜索路徑都依賴PATH所定義的路徑
補充:
要想直接執行執行腳本或者執行命令,就應該使用絕對路徑
PATH環境變量
PATH環境變量:定義的是系統搜索命令的路徑
[root@localhost ~]# echo $PATH
/usr/lib/qt-3.3/bin:
/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin
用冒號分割的不同命令,說明在這些目錄裏搜索需要的命令,搜索到後執行,如果搜索完之後都沒有找到,就會提示錯誤
執行個人腳本時,應當記住絕對路徑或者存放到PATH所要求的路徑之中
3.文件搜索命令find
耗費資源,全部遍歷
find [搜索範圍][搜索條件]
#搜索文件
(1).find / -name install.log
#避免大範圍搜索,這會耗費系統資源
#find是在系統當中搜索符合條件的文件名,使用通配符匹配,通配符是完全匹配的
[root@localhost ~]# ls
abc abd install.log install.log.syslog
[root@localhost ~]# find / -name install.log
/root/install.log
你會發現沒有install.log.syslog,其實find默認是精確搜索,如果要模糊搜索需要使用到通配符
(2).Linux中的通配符:
* 匹配任意內容
? 匹配任意一個字符
[] 匹配人一箇中括號內的字符,像python的range(),從裏面選通配符
[root@localhost ~]# ls
abc abd install.log install.log.syslog
[root@localhost ~]# find / -name "install.log*"
/root/install.log
/root/install.log.syslog
[root@localhost ~]# ls
abc abd install.log install.log.syslog
[root@localhost ~]# find /root -name "ab[cd]"
abc
abd
如果沒有ab只是[cd]說明只是搜索c或者d的文件,可以使用*[cd]查找結尾包含c或d的所有文件
(3).另外:
find /root -iname install.log
#不區分大小寫
find /root -user root
#按照所有者搜索
[root@localhost ~]# find /root -user root
/root
...
find /root -nouser
#查找沒有所有者的文件
[root@localhost ~]# find /root -nouser
沒有所有者的文件是垃圾文件,但是有一些特殊文件:
1).系統內核自己產生的沒有所有者,如果是在sys,proc中產生
2).外來數據,光盤,u盤,移動數據
a)find /var/log/ -mtime +10
#查找10天前修改的文件
詳細分爲三種:
find /var/log/ -mtime -10 10天內修改的文件
find /var/log/ -mtime 10 10天當天修改的文件
find /var/log/ -mtime +10 10天前修改的文件
atime 文件訪問時間 access time訪問時間
ctime 改變文件屬性 change time修改時間
mtime 修改文件內容 modify time修改時間
b)find -size 25k
#查找文件大小是25kB的文件
詳細情況也分爲三種:
-25k 小於25kB的文件
25K 等於25kB的文件
+25K 大於25kB的文件
注意:k是小寫,M是大寫,不然報錯
find:無效的 -size 類型 "m","K"
不寫單位也不行,大小是以塊爲單位的,一般大小是4kB,如果沒單位如25是表示25個扇區(默認是512kB)的容量大小
d)find -inum 262421
#查找i節點是262421的文件
[root@localhost ~]# ls -i
262242 abc 262421 abd
[root@localhost ~]# find -inum 262421
/root/abd
e)find /etc -size +20k -a -size -50k
#查找/etc/目錄下,大於20kB且小於50kB的文件
-a and 邏輯與,兩個條件都需要滿足
-o or 邏輯或,兩個條件只需要滿足一個即可
find /etc -size +20k -a -size -50k -exec ls -lh{}\;
#find命令執行結果通過-exec讓第二個命令ls -lh進行處理
#查找/etc/目錄下,大於20kB並且小於50kB的文件,並顯示詳細信息
#-exec/-ok命令{}\;對搜索結果執行操作
4.字符串搜索命令grep
grep [選項]字符串 文件名
#在文件當中匹配符合條件的字符串
選項:
-i 忽略大小寫 ignore忽略
-v 排除指定字符串 即搜索不包含字符串的
[root@localhost ~]# ls
anaconda-ks.cfg install.log install.log.syslog
[root@localhost ~]# grep "size" anaconda-ks.cfg
#part /boot --fatype=ext4 --size=200
#part /boot --fatype=ext4 --size=2000
#part swap --size=512
#part / --fstype=ext4 --grow --size=200
可以用cat查看文件
5.find命令與grep命令的區別
find命令:在系統當中搜索符合條件的文件名,如果需要匹配,則使用通配符匹配,通配符是完全匹配,就是搜索的結果和條件一模一樣
grep命令:在文件當中搜索符合條件的字符串,如果需要匹配,使用正則表達式進行匹配,正則表達式是包含匹配,結果只需要包含搜索條件就可以
四、幫助命令
1.幫助命令man;manual,文檔的縮寫
man 命令
#獲取指定命令的幫助
man ls
#查看ls的幫助
LS(1(命令級別)) User Commands
NAME 命名
ls -list directory contents
SYNOPSIS格式
ls [OPTION]...[FILE]....
可以直接使用/-d查看ls -d的幫助內容,按n往下依次瀏覽,按Shift+n往上瀏覽
man的級別:命令級別
1: 查看命令的幫助
2: 查看可悲內核調用的函數的幫助
3: 查看函數和函數庫的幫助
4: 查看特殊文件的幫助
5: 查看配置文件的幫助
6: 查看遊戲的幫助
7: 查看其他雜項的幫助
8: 查看系統管理員root可用命令的幫助
9: 查看內核相關文件的幫助
[root@localhost ~]# man -f passwd
passwd (1) - update user's authentication token
passwd (5) - password file
passwd [sslpasswd] (lssl) -compute password hashes
[root@localhost ~]# whereis passwd
passwd: /usr/bin/passwd(命令位置) /etc/passwd(配置文件位置) /usr/share/man/manl/passwd.1.gz(1等級的幫助文件位置) /usr/share/man5/passwd.5.gz(5等級的幫助文件位置)
man -f 命令
#查看命令所擁有的那個級別的幫助信息
相當於
whatis 命令
舉例:
man -5 passwd
man -4 null
man -8 ifconfig
[root@localhost ~]# whatis ls
(1) - list directory contents
(1p) - list directory contents
[root@localhost ~]# man -f null
(4) - data sink
[root@localhost ~]# man 4 null
有多個等級號就要指定等級號,不然就會從等級號最小的幫助文檔開始打開
man -k 命令
#查看和命令相關的所有幫助文檔
相當於
apropos命令
例如:
apropos passwd
2.其他幫助命令
(1).選項幫助命令:
命令 --help 即man ,--help有部分翻譯成中文了
#獲取命令選項的幫助
例如:
ls --help
(2).shell內部命令幫助,shell殼,內核編譯器,用戶和系統交互的接口
help shell內部命令
#獲取shell內部命令的幫助
例如:
whereis cd
#確定是否是shell內部命令,可以用whereis查看命令位置,如果只有幫助文檔,說明是系統內核自帶,如果顯示出了執行文件,那麼說明是後面添加的命令程序
help cd
#獲取內部命令幫助,man cd是無法獲取內部,然而help無法獲得外部命令幫助
(3).詳細命令幫助info
info 命令
-回車: 進入子幫助界面(帶有*的標記纔可以回車)
-u : 進入上層界面,up
-n : 進入下一個幫助小節
-p : 進入上一個幫助小節
-q : 退出quit
五、壓縮命令
常用壓縮格式: .zip .gz .bz2 .tar.gz .tar.bz2
.rar壓縮率高
(1).zip格式壓縮
.zip壓縮文件名 源文件
#壓縮文件
.zip -r 壓縮文件名 源目錄
#壓縮目錄
[root@localhost ~]# ls
anaconda-ks.cfg install.log install.log.syslog longzls
[root@localhost ~]# zip longzls.zip longzls(空文件,所以壓縮0%)
adding: longzls (stored 0%)
[root@localhost ~]# ls
anaconda-ks.cfg install.log install.log.syslog longzls longzls.zip
[root@localhost ~]#
注意:後綴不能缺少,不是因爲系統原因,畢竟linux不區分後綴名,但是爲了方便管理員管理不應該缺少
壓縮文件是有個壓縮格式的存儲,如果源文件比較小,會發現壓縮後文件反而更大,但是當你的壓縮文件很大的時候,就會有比較好的效果
[root@localhost ~]# mkdir jp
[root@localhost ~]# ls
anaconda-ks.cfg install.log install.log.syslog jp longzls longzls.zip
[root@localhost ~]# touch jp/cangls
[root@localhost ~]# touch jp/longls
[root@localhost ~]# touch jp/bols
[root@localhost ~]# zip -r jp.zip jp
(2).zip格式解壓縮
unzip壓縮文件
#解壓縮.zip文件
[root@localhost ~]# unzip jp.zip
(3).gz格式壓縮
1).gzip 源文件
#壓縮爲.gz格式的壓縮文件,源文件會消失
[root@localhost ~]# ls
anaconda-ks.cfg install.log install.log.syslog jp longzls
[root@localhost ~]# gzip longzls
[root@localhost ~]# ls
anaconda-ks.cfg install.log install.log.syslog jp longzls.gz
2).gzip -c 源文件 > 壓縮文件
#-c是將文件內容輸出,通過>指向輸出位置,實現壓縮,原文件也沒有消失,如果沒有目標,那麼將直接輸出到屏幕上
#壓縮爲.gz格式,原文件保留
例如:
gzip -c cangls > cangls.gz
3). gzip -r 目錄
#壓縮目錄下所有的子文件,但是不能壓縮目錄
補充:.gz可以在windows中解壓縮,但是.rar在linux不可以解壓縮
[root@localhost ~]# gzip -r jp
[root@localhost ~]# ls
abc abc.gz anaconda-ks.cfg install.log install.long.syslog jp longzls.gz
[root@localhost ~]# cd jp/
[root@localhost jp]# ls
bols.gz cangls.gz longls.gz
壓縮了目錄下的子文件,但是沒有壓縮目錄
(4).gz格式解壓縮
gzip -d 壓縮文件
#解壓縮文件
gunzip 壓縮文件
#解壓縮文件
解壓縮後,壓縮文件會消失,源文件出現,而且解壓縮目錄時候同樣不能缺少-r,即
gunzip -r 壓縮文件
(5).bz2格式壓縮
bzip2 源文件
#壓縮爲.bz2格式,不保留源文件
bzip2 -k 源文件 keep保留
#壓縮之後保留源文件
注意:bzip2命令不能壓縮目錄
(6).bz2格式解壓縮
bzip2 -d 壓縮文件
#解壓縮,-k保留壓縮文件
bunzip2 壓縮文件
#解壓縮,-k保留壓縮文件
注意:bunzip2同樣不能解壓縮目錄
(7).tar.gz,tar.bz2壓縮格式
tar打包,先打包,再壓縮
tar -cvf 打包文件名 源文件
選項:
-c:打包
-v:顯示過程
-f:指定打包後的文件名
-t: test測試,不解壓只查看
例如:
tar -cvf longzls.tar longzls
[root@localhost ~]# tar -cvf jp.tar jp
jp/
jp/bols
jp/longls
jp/cangls
[root@localhost ~]# gzip jp.tar
[root@localhost ~]# ls
abc abc.gz anaconda-ks.cfg install.log install.long.syslog jp jp.tar.gz
通過tar和gzip實現目錄的壓縮
tar.gz壓縮格式:
其實.tar.gz格式是先打包爲.tar格式,再壓縮爲.gz格式
tar -zcvf 壓縮包名 .tar.gz 源文件
選項:
-z:壓縮爲.tar.gz格式
tar -zxvf 壓縮包名 .tar.gz
選項:
-x: 解壓縮.tar.gz格式
tar.bz2壓縮格式:
同樣.tar.bz2格式也是先打包爲.tar格式,再壓縮爲.bz2格式
tar -jcvf 壓縮包名 .tar.bz2 源文件
選項:
-j:壓縮爲.tar.bz2格式
tar -jxvf 壓縮包名 .tar.bz2
選項:
-x: 解壓縮.tar.bz2格式
注意前後壓縮解壓縮的格式一致性,不然會出錯
(8).tar.gz,tar.bz2解壓縮命令
tar -xvf
選項:
-x:解包
-v:顯示過程
-f:指定打包後的文件
-t: test測試,不解壓只查看
六、關機重啓命令
1.shutdown命令
[root@localhost ~]# shutdown [選項]時間
選項:
-c:取消前一個關機命令 console取消
-h:關機
-r:重啓 一般遠程重啓,很少會遠程關機,那麼開機要親自去開機
2.其他關機命令:
[root@localhost ~]# halt
[root@localhost ~]# poweroff
[root@localhost ~]# init 0
都不安全,不會保存當前情況
[root@localhost ~]# reboot 相對安全
[root@localhost ~]# init 6
init 0和init 6數字的意思:系統運行級別
0 關機 不允許設置爲系統默認級別
1 單用戶
2 不完全多用戶,不含NFS服務,NFS文件共享符
3 完全多用戶 支持NFS
4 未分配
5 圖形界面#需要提前安裝Xll,大寫X表示圖形界面
6 重啓 不允許設置爲系統默認級別
[root@localhost ~]# cat /etc/inittab
#修改系統默認運行級別
id:3:initdefault:
[root@localhost ~]# runlevel
#查詢系統當前運行級別
N 3
N,Null,進入3級別之前是空級別,現在是3級別
[root@localhost ~]# logout
#推出登陸命令
允許同時登陸的用戶是有數量要求,所以關機時應該先退出登錄
七、掛載命令
掛載相當於windows分配盤符,而盤符在linux稱爲掛載點
U盤,光盤,移動硬盤重啓後都需要重新分配盤符,其他固定盤分配後都會自動掛載
1、查詢與自動掛載
[root@localhost ~ ]# mount
#查詢系統中已經掛載的設備
[root@localhost ~ ]# mount
/dev/sda5 on / type ext4 (rw) #第一個分區
proc on /proc type proc (rw)
...
dev:所有特殊設備
sda5中的sd:SCSI硬盤接口200MB/s(服務器接口)、SATA硬盤接口SATA3<500MB/s(串口硬盤)
5:第5個分區
補充:
系統分區:
(1)磁盤分區:磁盤分區是使用分區編輯器(partition editor)分幾個邏輯部分。碟片一旦劃分成數個分區(partition),不同類的目錄和文件可以存儲近不同的分區(邏輯上)
分區規則:主分區:最多四個(硬盤結構,每個扇區512字節,446字節記錄存儲信息,64個字節用於分區表示,每16個字節表示一個分區)
擴展分區:最多一個
主分區和擴展分區最多四個
不能寫入數據,只能包含邏輯分區
主分區加擴展分區只能有四個
邏輯分區
(2)分區設備名與掛載:
給每個分區起一個分區名才能使用,以便於之後爲分區分配盤符,分區->格式化->起名->分配盤符
windows:分區->格式化->分配盤符
常見硬件設備文件名:
/:根目錄dev硬件文件/描述字符(硬件自行檢測)[接口編號]
IDE硬盤: /dev/hd[a-d]如/dev/hda1
SCSi/SATA/USB硬盤:/dev/sd[a-p]如/dev/sda1
光驅:/dev/cdrom或/dev/hdc
軟盤:/dev/fd[0-1]
打印機(25針):/dev/lp[0-2]
打印機(USB):/dev/usb/lp[0-15]
鼠標:/dev/mouse
/dev/hda1(IDE硬盤接口<133M/s)CPU32—64位,8*8b
/dev/sda1(SCSI硬盤接口200MB/s、SATA硬盤接口SATA3<500MB/s)
a)分區表示:
注:1,2,3,4編號只能給主分區或者擴展分區使用,5開始才能給邏輯分區使用
b)掛載(給分區分配盤符的過程(盤符連接分區的過程)):
拿目錄做盤符(盤符是windows概念,用CDEF表示,但是在linux用掛載點表示)
注:必須分區:
/根分區
swap分區(交換分區,內存兩倍,不超過2GB)同windows虛擬內存
真實機小於4G,SWAP分兩倍;SWAP大於4G時,分區使用相同內存就可以
推薦分區:
/boot(啓動分區,200M)
根目錄和子目錄依舊分開分區,相互不影響
ext4:文件系統
rw:權限是讀寫
proc:直接寫入內存
proc和sys目錄是不能直接操作的,用來保存內存的過載點,系統自動掛載
[root@localhost ~]# mount -a
#依據配置文件/etc/fstab的內容,自動掛載
[root@localhost ~]# vi /etc/fstab
#自動掛載的分區,將相關的文件寫入了ext4,swap目錄下了
UUID ... / ext4 defaults 1 1
UUID ... /boot ext4 defaults 1 2
UUID ... /home ext4 defaults 1 2
UUID ... swap ext4 defaults 0 0
注意:光盤,U盤,移動盤載入後設置成了自動掛載,如果取出了的話,系統無法掛載,系統就會出現錯誤
2、掛載命令格式
[root@localhost ~]# mount [-t 文件系統][-o 特殊選項] 設備 文件名 掛載點
選項:
-t 文件系統:假如文件系統類型來制定掛載的類型,可以是ext3,ext4,iso9660等文件系統
-o 特殊選項:可以指定掛載的額外選項
特殊選項:
[root@localhost ~]# mount -o remount,noexec/home
#重新掛載/boot分區,並使用noexec權限
[root@localhost sh]# cd /home
[root@localhost boot]# vi hello.sh
[root@localhost boot]# chmod 755 hello.sh
[root@localhost boot]# ./hello.sh
[root@localhost boot]# mount -o remount,exec /home
#記得改回來,要不然會影響系統啓動的
[root@localhost ~]# cd home
[root@localhost home]# ls
lost+found user1
[root@localhost home]# vi hello.sh 回車寫一段腳本文件
#!/bin/bash 必須帶有,表明之後的都是這段腳本,如果不寫標記,嵌套時會出現錯誤
echo."hello,linux!!!"
:wq
保存
[root@localhost home]# chmod 755 hello.sh
[root@localhost home]# ll
-rwxr-xr-x. 1 root root 36 10月 9 22:31 hello.sh
[root@localhost home]# ./hello.sh ./代表當前目錄下
hello,linux!!!
[root@localhost home]# /home/hello.sh
hello,linux!!!
[root@localhost home]#
[root@localhost home]# mount -o remount,noexec /home/
[root@localhost home]# ./hello.sh
-bash: ./hello.sh: 權限不夠
[root@localhost home]# ll
-rwxr-xr-x. 1 root root 36 10月 9 22:31 hello.sh
具有執行權限,而且我還是系統管理員,但是仍無法執行文件,原因是因爲remount重新掛載後特殊選項選了noexec,不允許執行
[root@localhost home]# whoami
root
[root@localhost home]# mount -o remount,exec /home/
[root@localhost home]# ./hello.sh
hello,linux!!!
[root@localhost home]#
上面所掛載的home分區並沒有按照這個格式:
[root@localhost ~]# mount [-t 文件系統][-o 特殊選項] 設備 文件名 掛載點
進行掛載,是不是應該加上去呢,其實nome分區默認是掛載好了的,本系統默認掛載在sda2
/dev/sda1 on /boot type ext4 (rw)
/dev/sda2 on /home type ext4 (rw)
可以省略,但是掛載光盤之類的都一致要加上去
3、掛載光盤
[root@localhost ~]# mkdir /mnt/cdrom/
#建立掛載點,掛載點只要是空目錄就可以
[root@localhost ~]# mount -t iso9660 /dev/cdrom/mnt/cdrom/
#掛載光盤
[root@localhost ~]# mount -t iso9660 /dev/sr0 /mnt/cdrom/
#執行掛載命令
[root@localhost ~]# cd /home
[root@localhost home]# ls /
bin cgroup etc lib media mnt opt root selinux sys usr
boot dev home lost+found misc net proc sbin srv tmp var
[root@localhost home]# mkdir /mnt/cdrom
[root@localhost home]# ll /dev/cdrom
lrwxrwxrwx. 1 root root 3 10月 9 18:43 /dev/cdrom -> sr0
#發現其實/dev/cdrom和sr0是軟鏈接,軟鏈接有的需要完全啓動後纔有效
[root@localhost home]# mount -t(可省略-t) iso9660 /dev/sr0 /mnt/cdrom/
mount:block device /dev/sr0 is write-protected,mounting read-only
[root@localhost home]# cd /mnt/cdrom/
[root@localhost cdrom]# ls
windows可以直接彈出光盤,但是Linux不行,如果要彈出光盤,需要卸載
4、卸載命令
[root@localhost cdrom]# umount /mnt/cdrom/
umount: /mnt/cdrom: device is busy
[root@localhost cdrom]# ls
[root@localhost cdrom]# pwd
/mnt/cdrom
#因爲你在光盤當前目錄下,所以你正在使用到cdrom,is busy
[root@localhost cdrom]# cd
[root@localhost ~]# umount /mnt/cdrom/
[root@localhost ~]# cd /mnt/cdrom/
[root@localhost ~]# ls
[root@localhost ~]#
#裏面的數據就空了
[root@localhost ~]# umount 設備文件名或掛載點
[root@localhost ~]# umount /mnt/cdrom
必須卸載後才能拿出
5、掛載U盤
[root@localhost ~]# cd cdrom
[root@localhost cdrom]# fdisk -l
Device Boot Start
...
[root@localhost ~]# fdisk -l
#查看U盤設備文件名
[root@localhost ~]# mount -t vfat /dev/sdb1 /mnt/usb/
注意:Linux默認是不支持NTFS文件系統的,需要把NTFS驅動重新加載
我們可以安裝NTFS-3g,但是都是隻讀的
vfat:fat32,只能不支持4個G的存儲
八、用戶登錄查看命令
1、查看登錄用戶信息
(1).w 用戶名
命令輸出:
USER:登陸的用戶名;
TTY:登陸終端;
FROM:從哪個IP地址登錄;
LOGIN@:登陸時間;
IDLE:用戶閒置時間
JCPU:指的是和該終端連接的所有進程佔用的時間。這個時間裏並不包括過去的後臺作業時間,但卻包括當前正在運行的後臺作業所佔用的時間
PCPU:是指當前進程所佔用的時間
WHAT:當前正在運行的命令
[root@localhost ~]# w
23:57:52 up 4:22, 2users, load average: 0.00, 0.00, 0.00
USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT
root tty1 - 18:47 58:15 0.17s 0.17s -bash
root pts/0 192.168.0.155 22:10 0,00s 0.13s 0.04s w
2users:兩個用戶
三個0.00:系統在1分鐘,5分鐘,15分鐘下系統平均負載,值越高,系統負載越大
tty1:本機終端
pts/0:第一個遠程終端
192.168.0.155:遠程終端的IP
IDLE,JCPU,PCPU越大說明耗費資源越多
[root@localhost ~]#
(2).who 用戶名
命令輸出:
- 用戶名
- 登陸終端
- 登陸時間(登陸來源IP地址)
[root@localhost ~]# who
root pts/0 2015-07-27 22:10 (192.168.0.155)
(3).last
last命令默認是讀取/var/log/wtmp文件數據
命令輸出:
- 用戶名
- 登陸終端
- 登錄IP
- 登陸時間
- 退出時間(在線時間)
可以看到用戶所有的登錄信息和重啓信息,判斷所有用戶的登錄信息,如果是使用vi命令打開/var/log/wtmp,只能看到亂碼,是爲了防止被修改。