免费的行情软件网站不下载,蚌埠网站制作公司费用,四川企业网站开发,网站开发费的税率是多少调试排错 - Java 问题排查之Linux命令 本文是JVM第十七讲#xff0c; Java 问题调试排错。Java 在线问题排查主要分两篇#xff1a;本文是第一篇#xff0c;通过linux常用命令排查。 文章目录 调试排错 - Java 问题排查之Linux命令在项目中#xff0c;日志操作的常用命令1、…调试排错 - Java 问题排查之Linux命令 本文是JVM第十七讲 Java 问题调试排错。Java 在线问题排查主要分两篇本文是第一篇通过linux常用命令排查。 文章目录 调试排错 - Java 问题排查之Linux命令在项目中日志操作的常用命令1、在终端中登录日志系统2、查看模块位置的指令3、查看错误日志 1、文本操作1.1、文本查找 - grep (常用)1.2、文本分析 - awk (不常用)1.3、文本处理 - sed (不常用) 2、文件操作2.1、文件监听 - tail (常用)2.2、文件查找 - find (常用)2.3、pgm (不常用) 3、查看网络和进程3.1、查看所有网络接口的属性 (常用)3.2、查看防火墙设置 (不常用)3.3、查看路由表 (不常用)3.4、netstat (不常用)3.5、查看所有进程 (常用)3.6、top (常用) 4、查看磁盘和内存相关4.1、查看内存使用 - free -m (常用)4.2、查看各分区使用情况 (常用)4.3、查看指定目录的大小 (常用)4.4、查看内存总量 (常用)4.5、查看空闲内存量 (常用)4.6、查看系统负载磁盘和分区 (常用)4.7、查看系统负载磁盘和分区 (常用)4.8、查看挂接的分区状态 (常用)4.9、查看所有分区 (常用)4.10、查看所有交换分区4.11、查看硬盘大小 5、查看用户和组相关5.1、查看活动用户5.2、查看指定用户信息5.3、查看用户登录日志5.4、查看系统所有用户5.5、查看系统所有组 6、查看服务模块和包相关7、查看系统设备环境信息8、tsar 在项目中日志操作的常用命令
1、在终端中登录日志系统
账号 ssh developer172.16.101.123 密码 zcy 日志中心
2、查看模块位置的指令
find -name web-item* 或 find ./ -name item-mi* (模糊搜索以web-item开头的模块)
3、查看错误日志
方式1 tail -f filenamefilename为前一个命令查到的路径方式2通过 vi filename 来查询 可以更加方便地搜索日志中的关键字
注意事项
日志操作命令仅能查看线下环境(dev-debug/test)staging和真线必须使用“日志平台”进行查看日志平台地址
常用vi命令
shiftg 查看最新日志 ?关键字 结合 n /n 关键字搜索
具体可以参考这篇文章开发工具篇第九讲菜鸟入坑指南
1、文本操作
1.1、文本查找 - grep (常用)
grep常用命令
# 基本使用
grep yoursearchkeyword file.txt #文件查找
grep KeyWord otherKeyWord file.txt cpf.txt #多文件查找, 含空格加引号
grep KeyWord /home/admin -r -n #目录下查找所有符合关键字的文件
grep keyword /home/admin -r -n -i # -i 忽略大小写
grep KeyWord /home/admin -r -n --include *.{vm,java} #指定文件后缀
grep KeyWord /home/admin -r -n --exclude *.{vm,java} #反匹配# cat grep
cat file.txt | grep -i keyword # 查找所有keyword且不分大小写
cat file.txt | grep -c KeyWord # 统计Keyword次数# seq grep
seq 10 | grep 5 -A 3 #上匹配
seq 10 | grep 5 -B 3 #下匹配
seq 10 | grep 5 -C 3 #上下匹配平时用这个就妥了Grep的参数
--colorauto显示颜色;
-i, --ignore-case忽略字符大小写;
-o, --only-matching只显示匹配到的部分;
-n, --line-number显示行号;
-v, --invert-match反向显示,显示未匹配到的行;
-E, --extended-regexp支持使用扩展的正则表达式;
-q, --quiet, --silent静默模式,即不输出任何信息;
-w, --word-regexp整行匹配整个单词;
-c, --count统计匹配到的行数; print a count of matching lines;-B, --before-contextNUMprint NUM lines of leading context 后#行
-A, --after-contextNUMprint NUM lines of trailing context 前#行
-C, --contextNUMprint NUM lines of output context 前后各#行 1.2、文本分析 - awk (不常用)
awk基本命令
# 基本使用
awk {print $4,$6} file.txt
awk {print NR,$0} file.txt cpf.txt
awk {print FNR,$0} file.txt cpf.txt
awk {print FNR,FILENAME,$0} file.txt cpf.txt
awk {print FILENAME,NRNR,FNRFNR,$NF$NF} file.txt cpf.txt
echo 1:2:3:4 | awk -F: {print $1,$2,$3,$4}# 匹配
awk /ldb/ {print} file.txt #匹配ldb
awk !/ldb/ {print} file.txt #不匹配ldb
awk /ldb/ /LISTEN/ {print} file.txt #匹配ldb和LISTEN
awk $5 ~ /ldb/ {print} file.txt #第五列匹配ldb内建变量
NR: NR表示从awk开始执行后按照记录分隔符读取的数据次数默认的记录分隔符为换行符因此默认的就是读取的数据行数NR可以理解为Number of Record的缩写。FNR: 在awk处理多个输入文件的时候在处理完第一个文件后NR并不会从1开始而是继续累加因此就出现了FNR每当处理一个新文件的时候FNR就从1开始计数FNR可以理解为File Number of Record。NF: NF表示目前的记录被分割的字段的数目NF可以理解为Number of Field。更多请参考Linux awk 命令
1.3、文本处理 - sed (不常用)
sed常用
# 文本打印
sed -n 3p file.log #只打印第三行
sed -n $p file.log #只打印最后一行
sed -n 3,9p file.log #只查看文件的第3行到第9行
sed -n -e 3,9p -e file.log #打印3-9行并显示行号
sed -n /root/p file.log #显示包含root的行
sed -n /hhh/,/omc/p file.log # 显示包含hhh的行到包含omc的行之间的行# 文本替换
sed -i s/root/world/g file.log # 用 world 替换file.log文件中的root; ssearch 查找并替换, gglobal 全部替换, -i: implace# 文本插入
sed 1,4i hahaha file.log # 在文件第一行和第四行的每行下面添加hahaha
sed -e 1i happy -e $a new year file.log #【界面显示】在文件第一行添加happy,文件结尾添加new year
sed -i -e 1i happy -e $a new year file.log #【真实写入文件】在文件第一行添加happy,文件结尾添加new year# 文本删除
sed 3,9d file.log # 删除第3到第9行,只是不显示而已
sed /hhh/,/omc/d file.log # 删除包含hhh的行到包含omc的行之间的行
sed /omc/,10d file.log # 删除包含omc的行到第十行的内容# 与find结合
find . -name *.txt |xargs sed -i s/hhhh/\hHHh/g
find . -name *.txt |xargs sed -i s#hhhh#hHHh#g
find . -name *.txt -exec sed -i s/hhhh/\hHHh/g {} \;
find . -name *.txt |xargs cat更多请参考Linux sed 命令 或者 Linux sed命令详解
2、文件操作
2.1、文件监听 - tail (常用)
最常用的 tail -f filename
# 基本使用
tail -f file.log # 循环监听文件
tail -300f file.log # 倒数300行并追踪文件
tail 20 file.log # 从第20行至文件末尾显示文件内容# tail f使用
tail f file.log #等同于tail -f -n 10 打印最后10行然后追踪文件tail -f 与tail F 与tailf三者区别
tail -f 等于--followdescriptor根据文件描述进行追踪当文件改名或删除后停止追踪。tail -F 等于 --followname retry根据文件名字进行追踪当文件改名或删除后保持重试当有新的文件和他同名时继续追踪tail f 等于tail -f -n 10tail -f或-F默认也是打印最后10行然后追踪文件与tail -f不同的是如果文件不增长它不会去访问磁盘文件所以 tailf 特别适合那些便携机上跟踪日志文件因为它减少了磁盘访问可以省电。tail的参数
-f 循环读取
-q 不显示处理信息
-v 显示详细的处理信息
-c数目 显示的字节数
-n行数 显示文件的尾部 n 行内容
--pidPID 与-f合用,表示在进程ID,PID死掉之后结束
-q, --quiet, --silent 从不输出给出文件名的首部
-s, --sleep-intervalS 与-f合用,表示在每次反复的间隔休眠S秒2.2、文件查找 - find (常用)
sudo -u admin find /home/admin /tmp /usr -name \*.log(多个目录去找)
find . -iname \*.txt(大小写都匹配)
find . -type d(当前目录下的所有子目录)
find /usr -type l(当前目录下所有的符号链接)
find /usr -type l -name z* -ls(符号链接的详细信息 eg:inode,目录)
find /home/admin -size 250000k(超过250000k的文件当然改成-就是小于了)
find /home/admin f -perm 777 -exec ls -l {} \; (按照权限查询文件)
find /home/admin -atime -1 1天内访问过的文件
find /home/admin -ctime -1 1天内状态改变过的文件
find /home/admin -mtime -1 1天内修改过的文件
find /home/admin -amin -1 1分钟内访问过的文件
find /home/admin -cmin -1 1分钟内状态改变过的文件
find /home/admin -mmin -1 1分钟内修改过的文件2.3、pgm (不常用)
批量查询 vm-shopbase 满足条件的日志
pgm -A -f vm-shopbase cat /home/admin/shopbase/logs/shopbase.log.2017-01-17|grep 20698616303、查看网络和进程
3.1、查看所有网络接口的属性 (常用)
[rootqiwenjie ~]# ifconfig
eth0: flags4163UP,BROADCAST,RUNNING,MULTICAST mtu 1500inet 172.31.165.194 netmask 255.255.240.0 broadcast 172.31.175.255ether 00:16:3e:08:c1:ea txqueuelen 1000 (Ethernet)RX packets 21213152 bytes 2812084823 (2.6 GiB)RX errors 0 dropped 0 overruns 0 frame 0TX packets 25264438 bytes 46566724676 (43.3 GiB)TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0lo: flags73UP,LOOPBACK,RUNNING mtu 65536inet 127.0.0.1 netmask 255.0.0.0loop txqueuelen 1000 (Local Loopback)RX packets 502 bytes 86350 (84.3 KiB)RX errors 0 dropped 0 overruns 0 frame 0TX packets 502 bytes 86350 (84.3 KiB)TX errors 0 dropped 0 overruns 0 carrier 0 collisions 03.2、查看防火墙设置 (不常用)
[rootqiwenjie ~]# iptables -L
Chain INPUT (policy ACCEPT)
target prot opt source destinationChain FORWARD (policy ACCEPT)
target prot opt source destinationChain OUTPUT (policy ACCEPT)
target prot opt source destination3.3、查看路由表 (不常用)
[rootqiwenjie ~]# route -n
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
0.0.0.0 172.31.175.253 0.0.0.0 UG 0 0 0 eth0
169.254.0.0 0.0.0.0 255.255.0.0 U 1002 0 0 eth0
172.31.160.0 0.0.0.0 255.255.240.0 U 0 0 0 eth03.4、netstat (不常用)
查看所有监听端口
[rootqiwenjie ~]# netstat -lntp
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 0 0 0.0.0.0:443 0.0.0.0:* LISTEN 970/nginx: master p
tcp 0 0 0.0.0.0:9999 0.0.0.0:* LISTEN 1249/java
tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN 970/nginx: master p
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 1547/sshd
tcp6 0 0 :::3306 :::* LISTEN 1894/mysqld查看所有已经建立的连接
[rootqiwenjie ~]# netstat -antp
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 0 0 0.0.0.0:443 0.0.0.0:* LISTEN 970/nginx: master p
tcp 0 0 0.0.0.0:9999 0.0.0.0:* LISTEN 1249/java
tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN 970/nginx: master p
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 1547/sshd
tcp 0 0 172.31.165.194:53874 100.100.30.25:80 ESTABLISHED 18041/AliYunDun
tcp 0 64 172.31.165.194:22 xxx.194.1.200:2649 ESTABLISHED 32516/sshd: rootpt
tcp6 0 0 :::3306 :::* LISTEN 1894/m查看当前连接
[rootqiwenjie ~]# netstat -nat|awk {print $6}|sort|uniq -c|sort -rn5 LISTEN2 ESTABLISHED1 Foreign1 established)查看网络统计信息进程
[rootqiwenjie ~]# netstat -s
Ip:21017132 total packets received0 forwarded0 incoming packets discarded21017131 incoming packets delivered25114367 requests sent out324 dropped because of missing route
Icmp:18088 ICMP messages received692 input ICMP message failed.ICMP input histogram:destination unreachable: 4241timeout in transit: 19echo requests: 13791echo replies: 4timestamp request: 3313825 ICMP messages sent0 ICMP messages failedICMP output histogram:destination unreachable: 1echo replies: 13791timestamp replies: 33
IcmpMsg:InType0: 4InType3: 4241InType8: 13791InType11: 19InType13: 33OutType0: 13791OutType3: 1OutType14: 33
Tcp:12210 active connections openings208820 passive connection openings54198 failed connection attempts9805 connection resets received
...netstat 请参考这篇文章: Linux netstat命令详解
3.5、查看所有进程 (常用)
[rootqiwenjie ~]# ps -ef | grep java
root 1249 1 0 Nov04 ? 00:58:05 java -jar /opt/tech_doc/bin/tech_arch-0.0.1-RELEASE.jar --server.port9999
root 32718 32518 0 08:36 pts/0 00:00:00 grep --colorauto java3.6、top (常用)
top除了看一些基本信息之外剩下的就是配合来查询vm的各种问题了
# top -H -p pid
top - 08:37:51 up 45 days, 18:45, 1 user, load average: 0.01, 0.03, 0.05
Threads: 28 total, 0 running, 28 sleeping, 0 stopped, 0 zombie
%Cpu(s): 0.7 us, 0.7 sy, 0.0 ni, 98.6 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st
KiB Mem : 1882088 total, 74608 free, 202228 used, 1605252 buff/cache
KiB Swap: 2097148 total, 1835392 free, 261756 used. 1502036 avail MemPID USER PR NI VIRT RES SHR S %CPU %MEM TIME COMMAND1347 root 20 0 2553808 113752 1024 S 0.3 6.0 48:46.74 VM Periodic Tas1249 root 20 0 2553808 113752 1024 S 0.0 6.0 0:00.00 java1289 root 20 0 2553808 113752 1024 S 0.0 6.0 0:03.74 java
...4、查看磁盘和内存相关
4.1、查看内存使用 - free -m (常用)
[rootqiwenjie ~]# free -mtotal used free shared buff/cache available
Mem: 1837 196 824 0 816 1469
Swap: 2047 255 17924.2、查看各分区使用情况 (常用)
[rootqiwenjie ~]# df -h
Filesystem Size Used Avail Use% Mounted on
devtmpfs 909M 0 909M 0% /dev
tmpfs 919M 0 919M 0% /dev/shm
tmpfs 919M 452K 919M 1% /run
tmpfs 919M 0 919M 0% /sys/fs/cgroup
/dev/vda1 40G 15G 23G 40% /
tmpfs 184M 0 184M 0% /run/user/04.3、查看指定目录的大小 (常用)
[rootqiwenjie ~]# du -sh
803M4.4、查看内存总量 (常用)
[rootqiwenjie ~]# grep MemTotal /proc/meminfo
MemTotal: 1882088 kB4.5、查看空闲内存量 (常用)
[rootqiwenjie ~]# grep MemFree /proc/meminfo
MemFree: 74120 kB4.6、查看系统负载磁盘和分区 (常用)
[rootqiwenjie ~]# grep MemFree /proc/meminfo
MemFree: 74120 kB4.7、查看系统负载磁盘和分区 (常用)
[rootqiwenjie ~]# cat /proc/loadavg
0.01 0.04 0.05 2/174 327514.8、查看挂接的分区状态 (常用)
[rootqiwenjie ~]# mount | column -t
sysfs on /sys type sysfs (rw,nosuid,nodev,noexec,relatime)
proc on /proc type proc (rw,nosuid,nodev,noexec,relatime)
devtmpfs on /dev type devtmpfs (rw,nosuid,size930732k,nr_inodes232683,mode755)
securityfs on /sys/kernel/security type securityfs (rw,nosuid,nodev,noexec,relatime)
...4.9、查看所有分区 (常用)
[rootqiwenjie ~]# fdisk -lDisk /dev/vda: 42.9 GB, 42949672960 bytes, 83886080 sectors
Units sectors of 1 * 512 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk label type: dos
Disk identifier: 0x0008d73aDevice Boot Start End Blocks Id System
/dev/vda1 * 2048 83884031 41940992 83 Linux4.10、查看所有交换分区
[rootqiwenjie ~]# swapon -s
Filename Type Size Used Priority
/etc/swap file 2097148 261756 -24.11、查看硬盘大小
[rootqiwenjie ~]# fdisk -l |grep Disk
Disk /dev/vda: 42.9 GB, 42949672960 bytes, 83886080 sectors
Disk label type: dos
Disk identifier: 0x0008d73a5、查看用户和组相关
5.1、查看活动用户
[rootqiwenjie ~]# w08:47:20 up 45 days, 18:54, 1 user, load average: 0.01, 0.03, 0.05
USER TTY FROM LOGIN IDLE JCPU PCPU WHAT
root pts/0 xxx.194.1.200 08:32 0.00s 0.32s 0.32s -bash5.2、查看指定用户信息
[rootqiwenjie ~]# id
uid0(root) gid0(root) groups0(root)5.3、查看用户登录日志
[rootqiwenjie ~]# last
root pts/0 xxx.194.1.200 Fri Dec 20 08:32 still logged in
root pts/0 xxx.73.164.60 Thu Dec 19 21:47 - 00:28 (02:41)
root pts/0 xxx.106.236.255 Thu Dec 19 16:00 - 18:24 (02:23)
root pts/1 xxx.194.3.173 Tue Dec 17 13:35 - 17:37 (04:01)
root pts/0 xxx.194.3.173 Tue Dec 17 13:35 - 17:37 (04:02)
...5.4、查看系统所有用户
[rootqiwenjie ~]# cut -d: -f1 /etc/passwd
root
bin
daemon
adm
...5.5、查看系统所有组
cut -d: -f1 /etc/group6、查看服务模块和包相关
# 查看当前用户的计划任务服务
crontab -l # 列出所有系统服务
chkconfig –list # 列出所有启动的系统服务程序
chkconfig –list | grep on # 查看所有安装的软件包
rpm -qa # 列出加载的内核模块
lsmod 7、查看系统设备环境信息
# 常用
env # 查看环境变量资源
uptime # 查看系统运行时间、用户数、负载
lsusb -tv # 列出所有USB设备的linux系统信息命令
lspci -tv # 列出所有PCI设备
head -n 1 /etc/issue # 查看操作系统版本是数字1不是字母L
uname -a # 查看内核/操作系统/CPU信息的linux系统信息命令# /proc/
cat /proc/cpuinfo 查看CPU相关参数的linux系统命令
cat /proc/partitions 查看linux硬盘和分区信息的系统信息命令
cat /proc/meminfo 查看linux系统内存信息的linux系统命令
cat /proc/version 查看版本类似uname -r
cat /proc/ioports 查看设备io端口
cat /proc/interrupts 查看中断
cat /proc/pci 查看pci设备的信息
cat /proc/swaps 查看所有swap分区的信息
cat /proc/cpuinfo |grep model name cat /proc/cpuinfo |grep physical id8、tsar
tsar是淘宝开源的的采集工具。很好用, 将历史收集到的数据持久化在磁盘上所以我们快速来查询历史的系统数据。当然实时的应用情况也是可以查询的啦。大部分机器上都有安装。
tsar ##可以查看最近一天的各项指标
tsar --live ##可以查看实时指标默认五秒一刷
tsar -d 20161218 ##指定查看某天的数据貌似最多只能看四个月的数据
tsar --mem
tsar --load
tsar --cpu ##当然这个也可以和-d参数配合来查询某天的单个指标的情况 具体可以看这篇文章linux 淘宝开源监控工具tsar