0.日常命令
- cd 目錄路徑: 跳轉到指定目錄
- mkdir 目錄名稱:新增目錄
- pwd: 獲取當前路徑
- su: 切換用戶
- ll: 查看當前目錄俠的檔案和目錄
- rm -rf 目錄: 遞回洗掉指定目錄下的所有檔案
- vi 檔案:修改檔案
- mv 源檔案夾名 新檔案夾名:移動檔案夾到指定目錄
- grep:查找想要的資訊
- cp -r 源目錄名 新目錄名:拷貝指定目錄中的檔案到新目錄中
- touch 檔案名:創建檔案
- find -name 檔案名:查找檔案
- ls -ahl:查看檔案的所有者
- chkconfig --add xxx: 將xxx腳本加入到開機啟動項里面
- chkconfig --list:查看添加是否成功
- shutdown -h now:指定現在立即關機;
- shutdown +5 "System will shutdown after 5 minutes":指定5分鐘后關機,同時送出警告資訊給登入用戶
- reboot: 重開機
- reboot -w:做個重開機的模擬(只有紀錄并不會真的重開機)
1. 幫助命令:man,help, info
- help xxx #顯示內置命令幫助資訊;
xxx --help #顯示外置命令幫助資訊; - man xxx #無內外置之分,顯示的內容比help更詳細;
- info xxx #得到的內容比man更詳細;
2.查看活動行程的命令:ps,top, pidstat
-
- ps 用于顯示系統內的所有行程
- ps-elf 查看所有行程;
- ps -ef | grep java 查看和java有關的所有行程;
- top 用于查看活動行程的CPU和記憶體資訊,能夠實時顯示系統中各個行程的資源占用情況,
可以按照CPU、記憶體的使用情況和執行時間對行程進行排序, - pidstat 用于監控全部或指定的行程占用系統資源的情況,包括CPU、記憶體、磁盤I/O、執行緒切換、執行緒數等資料,
pidstat -u/-r/-d -p 行程號 --解釋:(-u CPU, -r 記憶體,-d 磁盤I/O
3.查看日志常用命令:tail,head,cat,more,less,sed
- tail:對檔案進行動態監控
tail -fn 200 test.log 實時監控200行日志
tail -n 10 test.log 查詢最后10行日志
tail -n +10 test.log 查詢10行之后的所有日志 - head -n 10 test.log 查看頭10行日志
head -n -10 test.log 查看除最后10行的其他日志 - cat -n test.log | grep "run" 在test.log中查詢包含run的行
cat test.log 顯示test.log中的所有內容 - sed -n '/2019-11-17 16:17:20/,/2019-12-17 16:17:36/p' test.log 查找指定日期范圍內的日志
sed -n '1,3p' test.log 顯示第1到3行日志 - more可以顯示百分比,回車可以向下一行, 空格可以向下一頁,q可以退出查看
more -4 test.log 每屏顯示4行日志
more +/run test.log 從日志中查找第一個出現"run"字串的行,并從該處前兩行開始顯示輸出
cat test.log | more -5 得到test.log中的全部內容并且每次顯示5行
more 僅能向前移動,卻不能向后移動 - less test.log test1.log 瀏覽多個檔案
ps -ef | less -N ps查看行程資訊并通過less分頁顯示同時顯示行號
ps aux|grep redis:查看包括redis字串的行程
pgrep redis -a:查看包括redis字串的行程 - history 查看所有的歷史記錄
history | grep xxx 查看歷史記錄中包含某些指令的記錄
history | more 分頁查看記錄
history -c 清空所有的歷史記錄
打開超大檔案:
1. head -10000 slowquery.log > temp.log 將slowquery.log的前10000行日志寫入到temp.log中
2. tail -10000 slowquery.log > temp.log 將slowquery.log的后10000行日志寫入到temp.log中
3. sed -n '10,10000p' slowquery.log > temp.log 把slowquery.log第10到10000行的資料寫入到temp.log中
4. cat catalina.log | grep '2017-09-06 15:15:42' > test.log 根據查詢條件匯出
4.壓縮檔案命令
- tar -zxvf xxxx.gz: 解壓檔案到當前目錄下
tar -zxvf xxxx.gz -C /usr/local 解壓檔案到指定位置 - tar -zcvf abc.gz a.txt b.txt c.txt 將這三個檔案壓縮成abc.gz壓縮包
tar -zcvf abc.gz /abc/ 將指定目錄壓縮成壓縮包
5.殺死一個行程的操作
方法一:把ps的查詢結果通過管道給grep查找包含特定字串的行程, 管道符“|”用來隔開兩個命令,管道符左邊命令的輸出會作為管道符右邊命令的輸入,
例如: ps -ef | grep firefox 找到firefox行程的行程號
然后:kill -s 9 6496 殺死行程
方法二: 使用pgrep查詢某個行程的行程號
例如:pgrep firefox
然后:kill -s 9 6496
方法三: 使用pkill, pkill無須 “s”,終止信號等級直接跟在 “-“ 后面
例如:pkill -9 firefox
6.權限命令
作業系統中每個檔案都擁有特定的權限、所屬用戶和所屬組,Linux中權限一般分為讀(readable)、寫(writable)和執行(excutable),分為三組,分別對應檔案的屬主(owner),屬組(group)和其他用戶(other),通過 ls -l 命令我們可以 查看某個目錄下的檔案或目錄的權限
檔案的型別:
- d: 代表目錄
- -: 代表檔案
- l: 代表軟鏈接(可以認為是window中的快捷方式)
Linux中權限分為以下幾種:
- r:代表權限是可讀,可以用數字4表示
- w:代表權限是可寫,可以用數字2表示
- x:代表權限是可執行,可以用數字1表示
對檔案和目錄而言,讀寫執行表示不同的意義,對于檔案:
| 權限名稱 | 可執行操作 |
|---|---|
| r | 可以使用cat查看檔案的內容 |
| w | 可以修改檔案的內容 |
| x | 可以將其運行為二進制檔案 |
對于目錄:
| 權限名稱 | 可執行操作 |
|---|---|
| r | 可以查看目錄下串列 |
| w | 可以創建和洗掉目錄下檔案 |
| x | 可以使用cd進入目錄 |
超級用戶可以無視普通用戶的權限,即使檔案目錄權限是000,依舊可以訪問, 在linux中的每個用戶必須屬于一個組,不能獨立于組外
修改檔案/目錄的權限的命令:chmod
示例:
修改/test下的aaa.txt的權限為屬主有全部權限,屬主所在的組有讀寫權限, 其他用戶只有讀的權限:
chmod u=rwx,g=rw,o=r aaa.txt
上述示例還可以使用數字表示:chmod 764 aaa.txt
更多請看這里
7.查看磁盤情況的命令:free,vmstat,du,df
顯示系統使用和空閑的記憶體情況,包括物理記憶體、互動區記憶體(swap)和內核緩沖區記憶體
- free:
- [ ] -b 以Byte為單位顯示記憶體使用情況,
- [ ] -k 以KB為單位顯示記憶體使用情況,
- [ ] -m 以MB為單位顯示記憶體使用情況,
- [ ] -g 以GB為單位顯示記憶體使用情況,
- [ ] -o 不顯示緩沖區調節列,
- [ ] -s<間隔秒數> 持續觀察記憶體使用狀況,
- [ ] -t 顯示記憶體總和列,
- [ ] -V 顯示版本資訊,
例:free -s 10 每隔10秒查看記憶體的使用情況
- cat /proc/meminfo等價于free命令
- vmstat: 動態的了解系統資源運行情況
- du: 顯示每個檔案和目錄的磁盤使用空間以及檔案的大小,
例: du -h tomcat8.5/ 表示顯示tomcat8.5檔案夾下每個檔案、目錄的占用空間 - df: 顯示磁盤磁區上可以使用的磁盤空間
例:
df -a 表示查看全部檔案系統,單位默認KB
df -h 表示以KB、MB、GB的單位來顯示,可讀性高
更多內容參考這里
8.檔案傳輸命令:ftp,scp,rsync,rz,sz
-
ftp:先忽略
-
scp:
scp -p ./files/yum.log 192.168.214.187:/tmp/demo/ :表示將當前系統的files目錄下的yum日志檔案復制到IP為192.168.214.18的機器的/tmp/demo目錄下 -
sz:
sz test.log: 下載test.log日志檔案到windows下 -
rz:
檔案上傳,出現彈出框,選中要上傳的檔案,確定之后即可上傳檔案 -
rsync:
rsync是可以實作增量備份的工具,配合任務計劃,rsync能實作定時或間隔同步,配合inotify或sersync,可以實作觸發式的實時同步,rsync可以實作scp的遠程拷貝,cp的本地拷貝、rm洗掉和"ls -l"顯示檔案串列等功能
9.網路配置相關命令:netstat、ifconfig、ss、tcpdump、traceroute、ping、nslookup、dig、nmap
-
ifconfig:查看當前系統的網卡資訊. 和ip addr命令類似
-
ping:查看與某臺機器的連接情況
-
netstat:用于顯示各種網路相關資訊,如網路連接,路由表,介面狀態,masquerade 連接,多播成員等,
查看當前系統的埠使用:netstat -an
列出所有埠: netstat -a
列出所有tcp埠: netstat -at
列出所有udp埠: netstat -au
只顯示監聽埠: netstat -l
只列出所有監聽tcp埠: netstat -lt
只列出所有監聽udp埠: netstat -lu
只列出所有監聽UNIX埠: netstat -lx
顯示所有埠的統計資訊: netstat -s
netstat 將每隔2秒輸出網路資訊:netstat -t -c 2
顯示核心路由資訊:netstat -rn
找出程式運行的埠:netstat -apn | grep ssh
找出運行在指定埠的行程:netstat -an | grep ':22'
查看6379埠占用情況: netstat -ntlp | grep 6379 -
ss:可以用來獲取socket統計資訊,可以顯示和netstat類似的內容,優勢在于它能夠顯示更多更詳細的有關TCP和連接狀態的資訊,而且比netstat更快速更高效,
例:ss -l 顯示本地打開的所有埠
ss -pl 顯示每個行程具體打開的socket
ss -t -a 顯示所有tcp socket
ss -u -a 顯示所有的UDP Socekt
ss -o state established '( dport = :smtp or sport = :smtp )' 顯示所有已建立的SMTP連接
ss -o state established '( dport = :http or sport = :http )' 顯示所有已建立的HTTP連接
ss -x src /tmp/.X11-unix/* 找出所有連接X服務器的行程
ss -s 列出當前socket詳細資訊
ss 與 netstat對比:
ss命令是iproute工具集(CentOS 最小化安裝帶有);netstat命令是net-tools工具集;
當服務器的socket連接數量變得非常大時,無論是使用netstat命令還是直接cat /proc/net/tcp,執行速度都會很慢;
ss快的秘訣在于,它利用到了TCP協議堆疊中tcp_diag,tcp_diag是一個用于分析統計的模塊,可以獲得Linux 內核中第一手的資訊,這就確保了ss的快捷高效,
- tcpdump:用于傾倒網路傳輸資料,執行tcpdump指令可列出經過指定網路界面的資料包檔案頭
例: tcpdump 顯示TCP包資訊
tcpdump -c 20:顯示指定數量包
tcpdump -c 10 -q:精簡模式顯示 10個包
tcpdump -ddd:轉換成十進制格式 - traceroute:可以知道資訊從你的計算機到互聯網另一端的主機是走的什么路徑
例如:
- traceroute -n -m 5 -q 4 -w 3 www.baidu.com
說明: -n 顯示IP地址,不查主機名, -m 設定跳數 -q 4每個網關發送4個資料包 -w 把對外發探測包的等待回應時間設定為3秒 - traceroute -p 6888 www.baidu.com 探測包使用的基本UDP埠設定6888
- traceroute -r www.baidu.com 繞過正常的路由表,直接發送到網路相連的主機
- nslookup:用于查詢DNS的記錄,查詢域名決議是否正常,在網路故障時用來診斷網路問題,
例:nslookup www.baidu.com 表示使用本機默認DNS來決議百度地址
nslookup www.baidu.com 8.8.8.8 表示指定DNS服務器來決議百度地址
nslookup -d www.baidu.com 表示只要在查詢的時候,加上-d引數,即可查詢域名的快取 - nmap
tcp埠掃描:-sT、-sP
TCP SYN埠掃描:-sS
nmap -sS 192.168.137.10 -255 -p 20,21,53-110,30000 --v
UDP埠掃描:-sU
TCP ACK掃描:-sA - dig 命令主要用來從 DNS 域名服務器查詢主機地址資訊
dig baidu.com 查詢單個主機的資訊
注意點:
linux連接超時,處理方案:
1. 測驗網路是否通:ping 遠程IP
2. 如果能ping通則表示與服務器網路連接是正常,接下來測驗埠:telnet 遠程ip 埠
3.如果telnet不上,要考慮服務器是否有防火墻攔截:
(1)CentOS7查看防火墻是否運行: firewall-cmd --state
(2) CentOS6查看防火墻是否運行:/sbin/service iptables status
4. 如果防火墻被攔截,需要放行埠,如果防火墻沒有攔截,則要考慮服務內部是否配置限定IP訪問,MySQL、MongoDB、Redis都有bind選項,用來限定客戶端IP
5. 再檢查服務內部是否有其它權限設定,例如MySQL有遠程訪問配置,Redis有protected-mode改為no
面試題:Linux查看cpu占用率高的行程(阿里面試題)
面試題:查看占用某埠的行程(阿里面試題)
面試題:查看某行程監聽的埠(阿里面試題)
面試題:查看系統負載(今日頭條面試題)
面試題:查看行程中執行緒的狀態(蘑菇街面試題)
第一題:
可以使用以下命令查使用記憶體最多的K個行程:ps -aux | sort -k4nr | head -K
ps -aux中(a指代all——所有的行程,u指代userid——執行該行程的用戶id,x指代顯示所有程式,不以終端機來區分)
或者直接用命令:top
第一題:
可以使用以下命令查使用CPU最多的K個行程:ps -aux | sort -k3nr | head -K
第二題:
查看占用某埠的行程:
lsof -i:埠號
netstat -tunlp | grep 埠號
第三題:
查看某行程監聽的埠:ps -aux | grep tomcat
第四題:
查看系統負載:
top命令查看linux負載:top
輸入top,會輸出top - 01:18:39 up 2 days, 18:54, 1 user, load average: 0.04, 0.03, 0.05
//01:18:39:系統當前時間
//up 2 days, 18:54 :系統開機到現在經過了2天
//1 users:當前1用戶在線
//load average:0.04, 0.03, 0.05:系統1分鐘、5分鐘、15分鐘的CPU負載資訊.
第五題:
查看行程中執行緒的狀態:top -H
查指定行程的狀態:top -H -p <pid>
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/162661.html
標籤:Linux
