Linux 中查询日志的常用命令
1. 基本日志查看命令
cat
- 查看完整日志文件
cat /var/log/syslog
less
- 分页查看日志(推荐)
less /var/log/syslog
- 使用
空格
向下翻页 b
向上翻页/关键词
搜索q
退出
tail
- 查看日志尾部(实时监控)
# 查看最后10行
tail /var/log/syslog
# 查看最后100行
tail -n 100 /var/log/syslog
# 实时查看新增日志(常用)
tail -f /var/log/syslog
2. 日志过滤命令
grep
- 关键词过滤
# 查找包含"error"的日志行
grep "error" /var/log/syslog
# 不区分大小写搜索
grep -i "error" /var/log/syslog
# 显示匹配行及前后5行
grep -A 5 -B 5 "error" /var/log/syslog
awk
- 更复杂的过滤
# 提取特定列(如第5列)
awk '{print $5}' /var/log/syslog
# 统计错误出现次数
awk '/error/{count++} END{print count}' /var/log/syslog
3. 按时间查询日志
查看特定时间段的日志
# 查看今天到现在的日志
journalctl --since today
# 查看过去1小时的日志
journalctl --since "1 hour ago"
# 查看特定时间范围的日志
journalctl --since "2023-01-01 00:00:00" --until "2023-01-02 00:00:00"
使用 sed
按时间范围过滤
# 提取9:00到10:00的日志
sed -n '/Jan 10 09:00/,/Jan 10 10:00/p' /var/log/syslog
4. 查看控制台日志(直接运行jar包)
如果你使用java -jar
命令运行Spring Boot应用:
tail -f app.log
小技巧
实时过滤错误日志
tail -f your-app.log | grep -i "error"
查看最近100行并高亮关键词:
tail -n 100 your-app.log | grep --color -E 'ERROR|WARN|^'
按日期分割查看日志
grep "2023-01-01" your-app.log
Linux 中检查端口监听状态的几种方法
1. 使用 netstat
命令(传统方法)
# 查看所有监听端口
netstat -tulnp
# 检查特定端口(如8080)是否在监听
netstat -tulnp | grep ':8080'
选项说明:
-t
:TCP 端口-u
:UDP 端口-l
:仅显示监听状态的端口-n
:以数字形式显示地址和端口-p
:显示进程信息(需要 root 权限)
2. 使用 ss
命令(推荐,更现代的工具)
# 查看所有监听端口
ss -tulnp
# 检查特定端口(如8080)是否在监听
ss -tulnp | grep ':8080'
ss
是 netstat
的替代品,速度更快,语法相似。
查看Java进程
ps -ef | grep java
# 或
jps -l
查看服务器内存使用情况
free -h
# 或
top
# 或
htop
查看Java进程的CPU和内存占用
top -p $(pgrep -d, java)
# 或
jstat -gcutil <pid> 1000
测试远程服务的端口是否可达
telnet hostname port
# 或
nc -zv hostname port
让Java应用在后台运行
nohup java -jar application.jar > app.log 2>&1 &
# 或使用systemd管理
统计Java进程的线程数
jstack <pid> | grep 'java.lang.Thread.State' | wc -l
排查服务器CPU 100%的问题
1. top -c 查看占用CPU高的进程
2. top -Hp <pid> 查看进程中的线程
3. printf "%x\n" <thread_id> 将线程ID转为16进制
4. jstack <pid> | grep -A 20 <thread_id_hex> 查看线程堆栈