常用Linux命令,讓你的工作事半功倍
作為運(yùn)維人員,這些常用命令不得不會(huì),掌握這些命令,工作上會(huì)事半功倍,提高工作效率。
一.文件和目錄
1. cd命令,用于切換當(dāng)前目錄,它的參數(shù)是要切換到的目錄的路徑,可以是絕對(duì)路徑,也可以是相對(duì)路徑。
- cd /home 進(jìn)入 '/ home' 目錄
- cd .. 返回上一級(jí)目錄
- cd ../.. 返回上兩級(jí)目錄
- cd 進(jìn)入個(gè)人的主目錄
- cd ~user1 進(jìn)入個(gè)人的主目錄
- cd - 返回上次所在的目錄
2. pwd命令,顯示工作路徑
- [root@mailvip ~]# pwd
- /root
3. ls命令,查看文件與目錄的命令,list之意
- ls 查看目錄中的文件
- ls -l 顯示文件和目錄的詳細(xì)資料
- ls -a 列出全部文件,包含隱藏文件
- ls -R 連同子目錄的內(nèi)容一起列出(遞歸列出),等于該目錄下的所有文件都會(huì)顯示出來(lái)
- ls [0-9] 顯示包含數(shù)字的文件名和目錄名
4. cp命令,用于復(fù)制文件,copy之意,它還可以把多個(gè)文件一次性地復(fù)制到一個(gè)目錄下
- -a :將文件的特性一起復(fù)制
- -p :連同文件的屬性一起復(fù)制,而非使用默認(rèn)方式,與-a相似,常用于備份
- -i :若目標(biāo)文件已經(jīng)存在時(shí),在覆蓋時(shí)會(huì)先詢問(wèn)操作的進(jìn)行
- -r :遞歸持續(xù)復(fù)制,用于目錄的復(fù)制行為 //經(jīng)常使用遞歸復(fù)制
- -u :目標(biāo)文件與源文件有差異時(shí)才會(huì)復(fù)制
5. mv命令,用于移動(dòng)文件、目錄或更名,move之意
- -f :force強(qiáng)制的意思,如果目標(biāo)文件已經(jīng)存在,不會(huì)詢問(wèn)而直接覆蓋
- -i :若目標(biāo)文件已經(jīng)存在,就會(huì)詢問(wèn)是否覆蓋
- -u :若目標(biāo)文件已經(jīng)存在,且比目標(biāo)文件新,才會(huì)更新
6. rm命令,用于刪除文件或目錄,remove之意
- -f :就是force的意思,忽略不存在的文件,不會(huì)出現(xiàn)警告消息
- -i :互動(dòng)模式,在刪除前會(huì)詢問(wèn)用戶是否操作
- -r :遞歸刪除,最常用于目錄刪除,它是一個(gè)非常危險(xiǎn)的參數(shù)
二、查看文件內(nèi)容
7. cat命令,用于查看文本文件的內(nèi)容,后接要查看的文件名,通??捎霉艿琅cmore和less一起使用
- cat file1 從第一個(gè)字節(jié)開(kāi)始正向查看文件的內(nèi)容
- tac file1 從最后一行開(kāi)始反向查看一個(gè)文件的內(nèi)容
- cat -n file1 標(biāo)示文件的行數(shù)
- more file1 查看一個(gè)長(zhǎng)文件的內(nèi)容
- head -n 2 file1 查看一個(gè)文件的前兩行
- tail -n 2 file1 查看一個(gè)文件的最后兩行
- tail -n +1000 file1 從1000行開(kāi)始顯示,顯示1000行以后的
- cat filename | head -n 3000 | tail -n +1000 顯示1000行到3000行
- cat filename | tail -n +3000 | head -n 1000 從第3000行開(kāi)始,顯示1000(即顯示3000~3999行)
三.文件搜索
8. find命令,用來(lái)查找系統(tǒng)的
- find / -name file1 從 '/' 開(kāi)始進(jìn)入根文件系統(tǒng)搜索文件和目錄
- find / -user user1 搜索屬于用戶 'user1' 的文件和目錄
- find /usr/bin -type f -atime +100 搜索在過(guò)去100天內(nèi)未被使用過(guò)的執(zhí)行文件
- find /usr/bin -type f -mtime -10 搜索在10天內(nèi)被創(chuàng)建或者修改過(guò)的文件
- whereis halt 顯示一個(gè)二進(jìn)制文件、源碼或man的位置
- which halt 顯示一個(gè)二進(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)對(duì)目錄的讀寫執(zhí)行權(quán)限
10. chown命令,改變文件的所有者
- chown user1 file1 改變一個(gè)文件的所有人屬性
- chown -R user1 directory1 改變一個(gè)目錄的所有人屬性并同時(shí)改變改目錄下所有文件的屬性
- chown user1:group1 file1 改變一個(gè)文件的所有人和群組屬性
11.chgrp命令,改變文件所屬用戶組
- chgrp group1 file1 改變文件的群組
五.文本處理
12. grep命令,分析一行的信息,若當(dāng)中有我們所需要的信息,就將該行顯示出來(lái),該命令通常與管道命令一起使用,用于對(duì)一些命令的輸出進(jìn)行篩選加工等等
- grep Aug /var/log/messages 在文件 '/var/log/messages'中查找關(guān)鍵詞"Aug"
- grep ^Aug /var/log/messages 在文件 '/var/log/messages'中查找以"Aug"開(kāi)始的詞匯
- 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 合并兩個(gè)文件或兩欄的內(nèi)容
- paste -d '+' file1 file2 合并兩個(gè)文件或兩欄的內(nèi)容,中間用"+"區(qū)分
14. sort命令
- sort file1 file2 排序兩個(gè)文件的內(nèi)容
- sort file1 file2 | uniq 取出兩個(gè)文件的并集(重復(fù)的行只保留一份)
- sort file1 file2 | uniq -u 刪除交集,留下其他的行
- sort file1 file2 | uniq -d 取出兩個(gè)文件的交集(只留下同時(shí)存在于兩個(gè)文件中的文件)
15. comm命令
- comm -1 file1 file2 比較兩個(gè)文件的內(nèi)容只刪除 'file1' 所包含的內(nèi)容
- comm -2 file1 file2 比較兩個(gè)文件的內(nèi)容只刪除 'file2' 所包含的內(nèi)容
- comm -3 file1 file2 比較兩個(gè)文件的內(nèi)容只刪除兩個(gè)文件共有的部分
六、打包和壓縮文件
16. tar命令,對(duì)文件進(jìn)行打包,默認(rèn)情況并不會(huì)壓縮,如果指定了相應(yīng)的參數(shù),它還會(huì)調(diào)用相應(yīng)的壓縮程序(如gzip和bzip等)進(jìn)行壓縮和解壓
- -c :新建打包文件
- -t :查看打包文件的內(nèi)容含有哪些文件名
- -x :解打包或解壓縮的功能,可以搭配-C(大寫)指定解壓的目錄,注意-c,-t,-x不能同時(shí)出現(xiàn)在同一條命令中
- -j :通過(guò)bzip2的支持進(jìn)行壓縮/解壓縮
- -z :通過(guò)gzip的支持進(jìn)行壓縮/解壓縮
- -v :在壓縮/解壓縮過(guò)程中,將正在處理的文件名顯示出來(lái)
- -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 解壓一個(gè)叫做 'file1.bz2'的文件
- bzip2 file1 壓縮一個(gè)叫做 'file1' 的文件
- gunzip file1.gz 解壓一個(gè)叫做 'file1.gz'的文件
- gzip file1 壓縮一個(gè)叫做 'file1'的文件
- gzip -9 file1 最大程度壓縮
- rar a file1.rar test_file 創(chuàng)建一個(gè)叫做 'file1.rar' 的包
- rar a file1.rar file1 file2 dir1 同時(shí)壓縮 'file1', 'file2' 以及目錄 'dir1'
- rar x file1.rar 解壓rar包
- zip file1.zip file1 創(chuàng)建一個(gè)zip格式的壓縮包
- unzip file1.zip 解壓一個(gè)zip格式壓縮包
- zip -r file1.zip file1 file2 dir1 將幾個(gè)文件和目錄同時(shí)壓縮成一個(gè)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ù)定時(shí)間關(guān)閉系統(tǒng)
- shutdown -c 取消按預(yù)定時(shí)間關(guān)閉系統(tǒng)
- shutdown -r now 重啟(1)
- reboot 重啟(2)
- logout 注銷
- time 測(cè)算一個(gè)命令(即程序)的執(zhí)行時(shí)間
八、進(jìn)程相關(guān)的命令
17. jps命令,顯示當(dāng)前系統(tǒng)的java進(jìn)程情況,及其id號(hào)
jps(Java Virtual Machine Process Status Tool)是JDK 1.5提供的一個(gè)顯示當(dāng)前所有java進(jìn)程pid的命令,簡(jiǎn)單實(shí)用,非常適合在linux/unix平臺(tái)上簡(jiǎn)單察看當(dāng)前java進(jìn)程的一些簡(jiǎn)單情況。
18. ps命令,用于將某個(gè)時(shí)間點(diǎn)的進(jìn)程運(yùn)行情況選取下來(lái)并輸出,process之意
- -A :所有的進(jìn)程均顯示出來(lái)
- -a :不與terminal有關(guān)的所有進(jìn)程
- -u :有效用戶的相關(guān)進(jìn)程
- -x :一般與a參數(shù)一起使用,可列出較完整的信息
- -l :較長(zhǎng),較詳細(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命令,用于向某個(gè)工作(%jobnumber)或者是某個(gè)PID(數(shù)字)傳送一個(gè)信號(hào),它通常與ps和jobs命令一起使用
命令格式 : kill[命令參數(shù)][進(jìn)程id]
命令參數(shù):
- -l 信號(hào),若果不加信號(hào)的編號(hào)參數(shù),則使用“-l”參數(shù)會(huì)列出全部的信號(hào)名稱
- -a 當(dāng)處理當(dāng)前進(jìn)程時(shí),不限制命令名和進(jìn)程號(hào)的對(duì)應(yīng)關(guān)系
- -p 指定kill 命令只打印相關(guān)進(jìn)程的進(jìn)程號(hào),而不發(fā)送任何信號(hào)
- -s 指定發(fā)送信號(hào)
- -u 指定用戶
實(shí)例1:列出所有信號(hào)名稱 命令: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
說(shuō)明:
只有第9種信號(hào)(SIGKILL)才可以無(wú)條件終止進(jìn)程,其他信號(hào)進(jìn)程都有權(quán)利忽略。 下面是常用的信號(hào):
- 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)
實(shí)例2:得到指定信號(hào)的數(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]#
實(shí)例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
實(shí)例4:徹底殺死進(jìn)程
- 命令:kill –9 3268 // -9 強(qiáng)制殺掉進(jìn)程
20. killall命令,向一個(gè)命令啟動(dòng)的進(jìn)程發(fā)送一個(gè)信號(hào),用于殺死指定名字的進(jìn)程
命令格式 : killall[命令參數(shù)][進(jìn)程名]
- 命令參數(shù):
- -Z 只殺死擁有scontext 的進(jìn)程
- -e 要求匹配進(jìn)程名稱
- -I 忽略小寫
- -g 殺死進(jìn)程組而不是進(jìn)程
- -i 交互模式,殺死進(jìn)程前先詢問(wèn)用戶
- -l 列出所有的已知信號(hào)名稱
- -q 不輸出警告信息
- -s 發(fā)送指定的信號(hào)
- -v 報(bào)告信號(hào)是否成功發(fā)送
- -w 等待進(jìn)程死亡
- --help 顯示幫助信息
- --version 顯示版本顯示
示例
- 1:殺死所有同名進(jìn)程
- killall nginx
- killall -9 bash
- 2.向進(jìn)程發(fā)送指定信號(hào)
- killall -TERM ngixn 或者 killall -KILL nginx
21. top命令,是Linux下常用的性能分析工具,能夠?qū)崟r(shí)顯示系統(tǒng)中各個(gè)進(jìn)程的資源占用狀況,類似于Windows的任務(wù)管理器。
如何殺死進(jìn)程:
- (1)圖形化界面的方式
- (2)kill -9 pid (-9表示強(qiáng)制關(guān)閉)
- (3)killall -9 程序的名字
- (4)pkill 程序的名字
查看進(jìn)程端口號(hào):
- netstat -tunlp|grep 端口號(hào)