Linux是目前應(yīng)用最廣泛的服務(wù)器操作系統(tǒng)干奢,基于Unix快耿,開源免費另患,由于系統(tǒng)的穩(wěn)定性和安全性纽乱,市場占有率很高,幾乎成為程序代碼運(yùn)行的最佳系統(tǒng)環(huán)境昆箕。linux不僅可以長時間的運(yùn)行我們編寫的程序代碼鸦列,還可以安裝在各種計算機(jī)硬件設(shè)備中,如手機(jī)鹏倘、路由器等薯嗤,Android程序最底層就是運(yùn)行在linux系統(tǒng)上的。
一.文件和目錄
1. cd命令纤泵,用于切換當(dāng)前目錄骆姐,它的參數(shù)是要切換到的目錄的路徑,可以是絕對路徑捏题,也可以是相對路徑玻褪。
cd /home 進(jìn)入 '/ home' 目錄
cd .. 返回上一級目錄
cd ../.. 返回上兩級目錄
cd 進(jìn)入個人的主目錄
cd ~user1 進(jìn)入個人的主目錄
cd - 返回上次所在的目錄
2. pwd命令,顯示工作路徑
[root@mailvip ~]# pwd
/root
3. ls命令公荧,查看文件與目錄的命令带射,list之意
ls 查看目錄中的文件
ls -l 顯示文件和目錄的詳細(xì)資料
ls -a 列出全部文件,包含隱藏文件
ls -R 連同子目錄的內(nèi)容一起列出(遞歸列出)循狰,等于該目錄下的所有文件都會顯示出來
ls [0-9] 顯示包含數(shù)字的文件名和目錄名
4. cp命令窟社,用于復(fù)制文件,copy之意绪钥,它還可以把多個文件一次性地復(fù)制到一個目錄下
-a :將文件的特性一起復(fù)制
-p :連同文件的屬性一起復(fù)制灿里,而非使用默認(rèn)方式,與-a相似昧识,常用于備份
-i :若目標(biāo)文件已經(jīng)存在時钠四,在覆蓋時會先詢問操作的進(jìn)行
-r :遞歸持續(xù)復(fù)制盗扒,用于目錄的復(fù)制行為 //經(jīng)常使用遞歸復(fù)制
-u :目標(biāo)文件與源文件有差異時才會復(fù)制
5. mv命令跪楞,用于移動文件缀去、目錄或更名,move之意
-f :force強(qiáng)制的意思甸祭,如果目標(biāo)文件已經(jīng)存在缕碎,不會詢問而直接覆蓋
-i :若目標(biāo)文件已經(jīng)存在,就會詢問是否覆蓋
-u :若目標(biāo)文件已經(jīng)存在池户,且比目標(biāo)文件新咏雌,才會更新
6. rm命令,用于刪除文件或目錄校焦,remove之意
-f :就是force的意思赊抖,忽略不存在的文件,不會出現(xiàn)警告消息
-i :互動模式寨典,在刪除前會詢問用戶是否操作
-r :遞歸刪除氛雪,最常用于目錄刪除,它是一個非常危險的參數(shù)
二耸成、查看文件內(nèi)容
7. cat命令报亩,用于查看文本文件的內(nèi)容,后接要查看的文件名井氢,通诚易罚可用管道與more和less一起使用
cat file1 從第一個字節(jié)開始正向查看文件的內(nèi)容
tac file1 從最后一行開始反向查看一個文件的內(nèi)容
cat -n file1 標(biāo)示文件的行數(shù)
more file1 查看一個長文件的內(nèi)容
head -n 2 file1 查看一個文件的前兩行
tail -n 2 file1 查看一個文件的最后兩行
tail -n +1000 file1 從1000行開始顯示,顯示1000行以后的
cat filename | head -n 3000 | tail -n +1000 顯示1000行到3000行
cat filename | tail -n +3000 | head -n 1000 從第3000行開始花竞,顯示1000(即顯示3000~3999行)
三.文件搜索
8. find命令劲件,用來查找系統(tǒng)的
find / -name file1 從 '/' 開始進(jìn)入根文件系統(tǒng)搜索文件和目錄
find / -user user1 搜索屬于用戶 'user1' 的文件和目錄
find /usr/bin -type f -atime +100 搜索在過去100天內(nèi)未被使用過的執(zhí)行文件
find /usr/bin -type f -mtime -10 搜索在10天內(nèi)被創(chuàng)建或者修改過的文件
whereis halt 顯示一個二進(jìn)制文件、源碼或man的位置
which halt 顯示一個二進(jìn)制文件或可執(zhí)行文件的完整路徑
刪除大于50M的文件:
find /var/mail/ -size +50M -exec rm {} \;
四.文件的權(quán)限 - 使用 "+" 設(shè)置權(quán)限约急,使用 "-" 用于取消
9. chmod命令寇仓,改變文件/文件夾權(quán)限
ls -lh 顯示權(quán)限
chmod ugo+rwx directory1 設(shè)置目錄的所有人(u)、群組(g)以及其他人(o)以讀(r烤宙,4 )遍烦、寫(w,2)和執(zhí)行(x躺枕,1)的權(quán)限
chmod go-rwx directory1 刪除群組(g)與其他人(o)對目錄的讀寫執(zhí)行權(quán)限
10. chown命令服猪,改變文件的所有者
chown user1 file1 改變一個文件的所有人屬性
chown -R user1 directory1 改變一個目錄的所有人屬性并同時改變改目錄下所有文件的屬性
chown user1:group1 file1 改變一個文件的所有人和群組屬性
11.chgrp命令,改變文件所屬用戶組
chgrp group1 file1 改變文件的群組
五.文本處理
12. grep命令拐云,分析一行的信息罢猪,若當(dāng)中有我們所需要的信息,就將該行顯示出來叉瘩,該命令通常與管道命令一起使用膳帕,用于對一些命令的輸出進(jìn)行篩選加工等等
grep Aug /var/log/messages 在文件 '/var/log/messages'中查找關(guān)鍵詞"Aug"
grep ^Aug /var/log/messages 在文件 '/var/log/messages'中查找以"Aug"開始的詞匯
grep [0-9] /var/log/messages 選擇 '/var/log/messages' 文件中所有包含數(shù)字的行
grep Aug -R /var/log/* 在目錄 '/var/log' 及隨后的目錄中搜索字符串"Aug"
sed 's/stringa1/stringa2/g' example.txt 將example.txt文件中的 "string1" 替換成 "string2"
sed '/^$/d' example.txt 從example.txt文件中刪除所有空白行
13. paste命令
paste file1 file2 合并兩個文件或兩欄的內(nèi)容
paste -d '+' file1 file2 合并兩個文件或兩欄的內(nèi)容,中間用"+"區(qū)分
14. sort命令
sort file1 file2 排序兩個文件的內(nèi)容
sort file1 file2 | uniq 取出兩個文件的并集(重復(fù)的行只保留一份)
sort file1 file2 | uniq -u 刪除交集,留下其他的行
sort file1 file2 | uniq -d 取出兩個文件的交集(只留下同時存在于兩個文件中的文件)
15. comm命令
comm -1 file1 file2 比較兩個文件的內(nèi)容只刪除 'file1' 所包含的內(nèi)容
comm -2 file1 file2 比較兩個文件的內(nèi)容只刪除 'file2' 所包含的內(nèi)容
comm -3 file1 file2 比較兩個文件的內(nèi)容只刪除兩個文件共有的部分
六危彩、打包和壓縮文件
16. tar命令攒磨,對文件進(jìn)行打包,默認(rèn)情況并不會壓縮汤徽,如果指定了相應(yīng)的參數(shù)娩缰,它還會調(diào)用相應(yīng)的壓縮程序(如gzip和bzip等)進(jìn)行壓縮和解壓
-c :新建打包文件
-t :查看打包文件的內(nèi)容含有哪些文件名
-x :解打包或解壓縮的功能,可以搭配-C(大寫)指定解壓的目錄谒府,注意-c,-t,-x不能同時出現(xiàn)在同一條命令中
-j :通過bzip2的支持進(jìn)行壓縮/解壓縮
-z :通過gzip的支持進(jìn)行壓縮/解壓縮
-v :在壓縮/解壓縮過程中拼坎,將正在處理的文件名顯示出來
-f filename :filename為要處理的文件
-C dir :指定壓縮/解壓縮的目錄dir
壓縮:tar -jcv -f filename.tar.bz2 要被處理的文件或目錄名稱
查詢:tar -jtv -f filename.tar.bz2
解壓:tar -jxv -f filename.tar.bz2 -C 欲解壓縮的目錄
bunzip2 file1.bz2 解壓一個叫做 'file1.bz2'的文件
bzip2 file1 壓縮一個叫做 'file1' 的文件
gunzip file1.gz 解壓一個叫做 'file1.gz'的文件
gzip file1 壓縮一個叫做 'file1'的文件
gzip -9 file1 最大程度壓縮
rar a file1.rar test_file 創(chuàng)建一個叫做 'file1.rar' 的包
rar a file1.rar file1 file2 dir1 同時壓縮 'file1', 'file2' 以及目錄 'dir1'
rar x file1.rar 解壓rar包
zip file1.zip file1 創(chuàng)建一個zip格式的壓縮包
unzip file1.zip 解壓一個zip格式壓縮包
zip -r file1.zip file1 file2 dir1 將幾個文件和目錄同時壓縮成一個zip格式的壓縮包
七.系統(tǒng)和關(guān)機(jī)(關(guān)機(jī)、重啟和登出)
shutdown -h now 關(guān)閉系統(tǒng)(1)
init 0 關(guān)閉系統(tǒng)(2)
telinit 0 關(guān)閉系統(tǒng)(3)
shutdown -h hours:minutes & 按預(yù)定時間關(guān)閉系統(tǒng)
shutdown -c 取消按預(yù)定時間關(guān)閉系統(tǒng)
shutdown -r now 重啟(1)
reboot 重啟(2)
logout 注銷
time 測算一個命令(即程序)的執(zhí)行時間
八完疫、進(jìn)程相關(guān)的命令
17. jps命令泰鸡,顯示當(dāng)前系統(tǒng)的java進(jìn)程情況,及其id號
jps(Java Virtual Machine Process Status Tool)是JDK 1.5提供的一個顯示當(dāng)前所有java進(jìn)程pid的命令壳鹤,簡單實用鸟顺,非常適合在linux/unix平臺上簡單察看當(dāng)前java進(jìn)程的一些簡單情況。
18. ps命令器虾,用于將某個時間點的進(jìn)程運(yùn)行情況選取下來并輸出讯嫂,process之意
-A :所有的進(jìn)程均顯示出來
-a :不與terminal有關(guān)的所有進(jìn)程
-u :有效用戶的相關(guān)進(jìn)程
-x :一般與a參數(shù)一起使用,可列出較完整的信息
-l :較長兆沙,較詳細(xì)地將PID的信息列出
ps aux # 查看系統(tǒng)所有的進(jìn)程數(shù)據(jù)
ps ax # 查看不與terminal有關(guān)的所有進(jìn)程
ps -lA # 查看系統(tǒng)所有的進(jìn)程數(shù)據(jù)
ps axjf # 查看連同一部分進(jìn)程樹狀態(tài)
19. kill命令,用于向某個工作(%jobnumber)或者是某個PID(數(shù)字)傳送一個信號欧芽,它通常與ps和jobs命令一起使用
命令格式 : kill[命令參數(shù)][進(jìn)程id]
命令參數(shù):
-l 信號,若果不加信號的編號參數(shù)葛圃,則使用“-l”參數(shù)會列出全部的信號名稱
-a 當(dāng)處理當(dāng)前進(jìn)程時千扔,不限制命令名和進(jìn)程號的對應(yīng)關(guān)系
-p 指定kill 命令只打印相關(guān)進(jìn)程的進(jìn)程號,而不發(fā)送任何信號
-s 指定發(fā)送信號
-u 指定用戶
實例1:列出所有信號名稱
命令:kill -l
輸出:
[root@localhost test6]# kill -l
1) SIGHUP 2) SIGINT 3) SIGQUIT 4) SIGILL
5) SIGTRAP 6) SIGABRT 7) SIGBUS 8) SIGFPE
9) SIGKILL 10) SIGUSR1 11) SIGSEGV 12) SIGUSR2
13) SIGPIPE 14) SIGALRM 15) SIGTERM 16) SIGSTKFLT
17) SIGCHLD 18) SIGCONT 19) SIGSTOP 20) SIGTSTP
21) SIGTTIN 22) SIGTTOU 23) SIGURG 24) SIGXCPU
25) SIGXFSZ 26) SIGVTALRM 27) SIGPROF 28) SIGWINCH
29) SIGIO 30) SIGPWR 31) SIGSYS 34) SIGRTMIN
35) SIGRTMIN+1 36) SIGRTMIN+2 37) SIGRTMIN+3 38) SIGRTMIN+4
39) SIGRTMIN+5 40) SIGRTMIN+6 41) SIGRTMIN+7 42) SIGRTMIN+8
43) SIGRTMIN+9 44) SIGRTMIN+10 45) SIGRTMIN+11 46) SIGRTMIN+12
47) SIGRTMIN+13 48) SIGRTMIN+14 49) SIGRTMIN+15 50) SIGRTMAX-14
51) SIGRTMAX-13 52) SIGRTMAX-12 53) SIGRTMAX-11 54) SIGRTMAX-10
55) SIGRTMAX-9 56) SIGRTMAX-8 57) SIGRTMAX-7 58) SIGRTMAX-6
59) SIGRTMAX-5 60) SIGRTMAX-4 61) SIGRTMAX-3 62) SIGRTMAX-2
63) SIGRTMAX-1 64) SIGRTMAX
說明:
只有第9種信號(SIGKILL)才可以無條件終止進(jìn)程库正,其他信號進(jìn)程都有權(quán)利忽略曲楚。 下面是常用的信號:
HUP 1 終端斷線
INT 2 中斷(同 Ctrl + C)
QUIT 3 退出(同 Ctrl + \)
TERM 15 終止
KILL 9 強(qiáng)制終止
CONT 18 繼續(xù)(與STOP相反, fg/bg命令)
STOP 19 暫停(同 Ctrl + Z)
實例2:得到指定信號的數(shù)值
[root@localhost test6]# kill -l KILL
[root@localhost test6]# kill -l SIGKILL
[root@localhost test6]# kill -l TERM
[root@localhost test6]# kill -l SIGTERM
[root@localhost test6]#
實例3:先用ps查找進(jìn)程褥符,然后用kill殺掉
命令:kill 3268
[root@localhost test6]# ps -ef|grep vim
root 3268 2884 0 16:21 pts/1 00:00:00 vim install.log
root 3370 2822 0 16:21 pts/0 00:00:00 grep vim
[root@localhost test6]# kill 3268
實例4:徹底殺死進(jìn)程
命令:kill –9 3268 // -9 強(qiáng)制殺掉進(jìn)程
20. killall命令龙誊,向一個命令啟動的進(jìn)程發(fā)送一個信號,用于殺死指定名字的進(jìn)程
命令格式 : killall[命令參數(shù)][進(jìn)程名]
命令參數(shù):
-Z 只殺死擁有scontext 的進(jìn)程
-e 要求匹配進(jìn)程名稱
-I 忽略小寫
-g 殺死進(jìn)程組而不是進(jìn)程
-i 交互模式喷楣,殺死進(jìn)程前先詢問用戶
-l 列出所有的已知信號名稱
-q 不輸出警告信息
-s 發(fā)送指定的信號
-v 報告信號是否成功發(fā)送
-w 等待進(jìn)程死亡
--help 顯示幫助信息
--version 顯示版本顯示
示例
1:殺死所有同名進(jìn)程
killall nginx
killall -9 bash
2.向進(jìn)程發(fā)送指定信號
killall -TERM ngixn 或者 killall -KILL nginx
21. top命令趟大,是Linux下常用的性能分析工具,能夠?qū)崟r顯示系統(tǒng)中各個進(jìn)程的資源占用狀況铣焊,類似于Windows的任務(wù)管理器逊朽。
如何殺死進(jìn)程:
(1)圖形化界面的方式
(2)kill -9 pid (-9表示強(qiáng)制關(guān)閉)
(3)killall -9 程序的名字
(4)pkill 程序的名字
查看進(jìn)程端口號:
netstat -tunlp|grep 端口號