會這 30 個(gè)日志命令 !運(yùn)維功力牛批
在不斷迭代的IT運(yùn)維中,面對分散、海量的日志文件,問題定位費(fèi)時(shí)、監(jiān)控效率低、異常檢測難點(diǎn)頻現(xiàn)。如何高效提取關(guān)鍵信息?

一、日志文件的收集與定位
1. find
功能:按文件名、類型、大小或時(shí)間戳遞歸查找日志文件。
示例代碼:
find /var/log -name "*.log" -mtime -1輸出:
/var/log/syslog
/var/log/auth.log
/var/log/nginx/access.log2. locate
功能:使用預(yù)建數(shù)據(jù)庫查找日志文件路徑。
示例代碼:
locate access.log輸出:
/var/log/nginx/access.log
/home/user/temp/access.log3. which
功能:顯示指定命令的絕對路徑,確認(rèn)工具的安裝位置。
示例代碼:
which grep輸出:
/usr/bin/grep4. whereis
功能:顯示命令的二進(jìn)制文件位置、源碼文件及相關(guān)手冊頁。
示例代碼:
whereis awk輸出:
awk: /usr/bin/awk /usr/share/man/man1/awk.1.gz5. stat
功能:顯示文件的詳細(xì)信息,包括訪問時(shí)間、大小和權(quán)限。
示例代碼:
stat /var/log/syslog輸出:
File: /var/log/syslog
Size: 20480 Blocks: 48 IO Block: 4096 regular file
Device: 802h/2050d Inode: 394857 Links: 1
Access: 2024-01-01 10:00:00.000000000 +0000
Modify: 2024-01-01 09:59:00.000000000 +0000
Change: 2024-01-01 09:59:01.000000000 +0000二、日志文件的基礎(chǔ)查看
6. cat
功能:輸出文件的全部內(nèi)容。
示例代碼:
cat /var/log/messages輸出:
Jan 1 10:00:01 server1 systemd: Starting Cleanup of Temporary Directories...
Jan 1 10:00:01 server1 systemd: Finished Cleanup of Temporary Directories.7. tac
功能:逆序輸出文件內(nèi)容,適用于查看最新的日志。
示例代碼:
tac /var/log/syslog | head -5輸出:
Jan 1 11:10:05 server1 sshd[2003]: Connection accepted.
Jan 1 11:10:03 server1 systemd: Started User Service.
Jan 1 11:10:02 server1 sshd[2002]: New login session started.8. head
功能:輸出文件的開頭部分內(nèi)容。
示例代碼:
head -n 3 /var/log/nginx/access.log輸出:
- 192.168.1.10 - - [01/Jan/2024:10:00:00 +0000] "GET /index.html HTTP/1.1" 200 512
- 192.168.1.11 - - [01/Jan/2024:10:00:01 +0000] "POST /api/login HTTP/1.1" 403 1024
- 192.168.1.12 - - [01/Jan/2024:10:00:02 +0000] "GET /favicon.ico HTTP/1.1" 404 2569. tail
功能:輸出文件的末尾部分內(nèi)容,可實(shí)時(shí)跟蹤新增內(nèi)容。
示例代碼:
tail -f /var/log/nginx/error.log輸出:
- 2024/01/01 11:20:00 [error] 20201#0: *10 open() "/var/www/html/favicon.ico" failed (2: No such file or directory)
- 2024/01/01 11:21:03 [error] 20201#0: *11 file not found
10. less功能:分頁瀏覽文件,可搜索關(guān)鍵詞。
示例代碼:
less /var/log/dmesg輸出:
[ 0.000000] Initializing cgroup subsys cpuset
[ 0.000000] Initializing cgroup subsys cpu
[ 0.000000] Initializing cgroup subsys cpuacct11. more
功能:簡單的分頁查看工具。
示例代碼:
more /var/log/auth.log輸出:
Jan 1 10:00:10 server1 sshd[1000]: Accepted password for user from 192.168.1.100 port 12345 ssh2
--More--12. nl
功能:為文件的輸出內(nèi)容添加行號。
示例代碼:
nl /var/log/nginx/access.log | head輸出:
1 192.168.1.10 - - [01/Jan/2024:10:00:00] "GET /index.html HTTP/1.1" 200
2 192.168.1.11 - - [01/Jan/2024:10:00:01] "POST /api/login HTTP/1.1" 403
3 192.168.1.12 - - [01/Jan/2024:10:00:02] "GET /favicon.ico HTTP/1.1" 404三、日志的核心文本解析與過濾
13. grep
功能:通過正則表達(dá)式過濾日志內(nèi)容。
示例代碼:
grep -i "error" /var/log/nginx/error.log輸出:
- 2024/01/01 10:00:00 [error] 20201#0: file not found
- 2024/01/01 10:01:00 [error] 20201#0: connection timed out14. awk
功能:按字段處理文本內(nèi)容,適合格式化提取或統(tǒng)計(jì)。
示例代碼:
awk '{print $1, $4}' /var/log/nginx/access.log輸出:
- 192.168.1.10 "GET
- 192.168.1.11 "POST
- 192.168.1.12 "GET15. sed
功能:支持插入、刪除和替換功能的流式編輯器。
示例代碼:
sed 's/404/NOT FOUND/' /var/log/nginx/access.log輸出:
- 192.168.1.12 - - [01/Jan/2024:10:00:02 +0000] "GET /favicon.ico HTTP/1.1" NOT FOUND 25616. cut
功能:按字段提取文本。
示例代碼:
cut -d' ' -f1,3 /var/log/nginx/access.log輸出:
- 192.168.1.10 01/Jan/2024:10:00:00
- 192.168.1.11 01/Jan/2024:10:00:01
- 192.168.1.12 01/Jan/2024:10:00:0217. uniq
功能:對重復(fù)行進(jìn)行去重或統(tǒng)計(jì)。
示例代碼:
sort /var/log/nginx/access.log | uniq -c輸出:
- 1 192.168.1.10 - "GET /index.html"
- 2 192.168.1.11 - "POST /api/login"四、統(tǒng)計(jì)與匯總
18. wc
功能:統(tǒng)計(jì)文件的行數(shù)、單詞數(shù)及字節(jié)數(shù)。
示例代碼:
wc -l /var/log/nginx/access.log輸出:
- 50 /var/log/nginx/access.log接下來的命令將在以上分類完成補(bǔ)充。繼續(xù)提煉組合復(fù)雜操作工具,確保滿足 30 條命令目標(biāo),涵蓋所有運(yùn)維場景需求。以下是補(bǔ)充完整并整理的 30 個(gè)命令,包括模擬輸出,為日志運(yùn)維場景提供一站式參考:
四、統(tǒng)計(jì)與匯總
19. sort
功能:對文本內(nèi)容按升序或降序排序。常用參數(shù):
- -n:按數(shù)值排序。
- -r:降序排序。
- -k:指定排序字段。
示例代碼:
sort -k 1 access.log | head -5輸出:
- 192.168.1.10 - GET /index.html 200
- 192.168.1.11 - POST /api/login 403
- 192.168.1.12 - GET /favicon.ico 404
- 192.168.1.13 - GET /about 200
- 192.168.1.14 - GET /contact 20020. tr
功能:字符轉(zhuǎn)換和刪除工具。
示例代碼:
cat access.log | tr '[a-z]' '[A-Z]'輸出:
- 192.168.1.10 - - [01/JAN/2024:10:00:00 +0000] "GET /INDEX.HTML HTTP/1.1" 200 1024
- 192.168.1.11 - - [01/JAN/2024:10:00:01 +0000] "POST /API/LOGIN HTTP/1.1" 403 51221. paste
功能:水平合并多個(gè)文件內(nèi)容。
示例代碼:
paste file1.log file2.log輸出:
Line 1 from file1 Line 1 from file2
Line 2 from file1 Line 2 from file222. diff
功能:比較兩個(gè)文件的差異,適合日志版本比對。
示例代碼:
diff log_v1.log log_v2.log輸出:
- 1c1
< Original Line
> Updated Line23. uniq
功能:統(tǒng)計(jì)重復(fù)行。
示例代碼:
sort access.log | uniq -c輸出:
- 10 192.168.1.10 - GET /index.html 200
- 15 192.168.1.11 - POST /api/login 403
- 5 192.168.1.12 - GET /favicon.ico 404五、實(shí)時(shí)監(jiān)控
24. tail -f
功能:實(shí)時(shí)追蹤文件新增內(nèi)容,監(jiān)控日志動態(tài)更新。
示例代碼:
tail -f /var/log/nginx/error.log輸出:
- 2024/01/01 12:10:05 [error] 2001#0: file not found
- 2024/01/01 12:12:00 [error] 2002#0: connection timeout25. less +F
功能:在 less 中實(shí)時(shí)跟蹤文件更新(類似 tail -f)。
示例代碼:
less +F /var/log/syslog輸出:
Jan 1 12:01:00 server1 sshd[1020]: new session opened
Jan 1 12:02:00 server1 kernel: CPU temperature high26. watch
功能:周期性運(yùn)行命令,適合實(shí)時(shí)監(jiān)控。
示例代碼:
watch -n 2 "tail -n 5 /var/log/kern.log"輸出:
Every 2.0s: tail -n 5 /var/log/kern.log
Jan 1 12:14:00 server1 kernel: CPU load high
Jan 1 12:16:00 server1 kernel: Disk I/O error27. journalctl
功能:查看由 systemd 管理的日志。
示例代碼:
journalctl -u nginx --since "2024-01-01 00:00:00"輸出:
-- Logs begin at Tue 2024-01-01 00:00:00 --
Jan 01 12:00:10 nginx[1200]: Starting nginx server...
Jan 01 12:01:00 nginx[1200]: Listening on port 8028. dmesg
功能:查看系統(tǒng)啟動信息及內(nèi)核日志,適合硬件問題診斷。
示例代碼:
dmesg | tail -n 5輸出:
[ 500.254768] CPU1: Core temperature above threshold
[ 500.254778] CPU1: Device throttled29. multitail
功能:在一個(gè)窗口里同時(shí)監(jiān)控多個(gè)日志文件,支持高亮。
示例代碼:
multitail -i /var/log/nginx/access.log -i /var/log/nginx/error.log輸出:
==> /var/log/nginx/access.log <==
- 192.168.1.10 - GET /index.html 200
==> /var/log/nginx/error.log <==
[error] 2002#0: connection timeout30. iotop
功能:監(jiān)控系統(tǒng)磁盤 I/O,適合定位高 I/O 負(fù)載進(jìn)程(需權(quán)限)。
示例代碼:
sudo iotop輸出:
312 user 2.00 M/s 1.20 M/s apache2
317 mysql 1.50 M/s 0.30 M/s mysqld掌握日志分析命令,是提高運(yùn)維效率的關(guān)鍵。本文精選的30個(gè)命令,能幫你高效收集日志、精準(zhǔn)分析異常、實(shí)時(shí)監(jiān)控系統(tǒng)狀態(tài)。在實(shí)踐中熟悉和組合運(yùn)用這些工具,將讓你從容應(yīng)對復(fù)雜的日志場景。
































