历年总结的常用脚本命令--java开发值得收藏

这篇博客汇总了对Java开发者非常有用的Linux命令,包括查看请求访问量、监控页面性能、curl和wget的用法、磁盘和网络性能测试、进程和线程管理、JVM相关工具如jmap、jstat、jstack等,以及脚本命令的使用。通过这些命令,可以帮助开发者更好地理解和调试服务器及应用性能。
摘要由CSDN通过智能技术生成

3

iotop

查看磁盘IO读写(yum install iotop安装)

4

iotop -o

直接查看比较高的磁盘读写程序

1、请求访问量
    cat access.log | cut -f1 -d " " |sort | uniq -c | sort -k 1 -n -r | head -10

2、查看最耗时的页面
    cat access.log | sort -k 2 -n -r | head -10

3、curl 来抓取网页和web的服务器监控
    -x:表示通过代理网络去访问后面的地址
    -XGET:表示get请求
    -X POST表示post请求
    curl localhost:9999/api/daizhige/article -X POST -H "Content-Type:application/json" -d '"title":"comewords","content":"articleContent"'
    curl -x xz.proxy.cnsuning.com:8080 -I http://hermespre-test.hualife.cc:8080/api/suningInsurance?sign=123323123
    --即设置代理又是post请求方式
    curl -x xz.proxy.cnsuning.com:8080  http://hermespre-test.hualife.cc:8080/api/suningInsurance?sign=123323123 -POST -d "213"
    也可以自定义设置请求头header
    -H:curl -H 'Host:10.12.11.10' -H 'Accept-Language:es' -H 'Cookie:ID=1234' -v http://www.baidu.com  注:-H 可以多次使用
        可以使用简单的options来简化常用的请求头,如下:
        -A (or --user-agent): 设置 "User-Agent" 字段.
        -b (or --cookie): 设置 "Cookie" 字段.
        -e (or --referer): 设置 "Referer" 字段.
    
    wget 用于下载一些资源以及模拟请求
    ①、--header 的使用:$>wget -d --header="User-Agent: Mozilla/5.0 (Windows NT 6.0) AppleWebKit/537.11 (KHTML, like Gecko) Chrome/23.0.1271.97 Safari/537.11" --header="Referer: http://xmodulo.com/" --header="Accept-Encoding: compress, gzip" http://www.google.com/
    二、也可以通过代理去下载

4、利用time和dd命令来测试磁盘的写入性能
    sync;/usr/bin/time -p bash -c "(dd if=/dev/zero of=test.dd  bs=1M count=20000)"

5、利用hdparm命令来测试磁盘的读性能
    hdparm -tT /dev/设备号
6、利用fdisk来查看磁盘详情
    fdisk -l

7、使用iostat 来查看磁盘的IO读写性能情况
   iostat -p (加设备)
   iostat 3 表示每3秒执行

8、数据包捕获功能【抓包】
    1、登陆后台服务器,确定实际使用的网卡;
    2、执行 tcpdump -i eth0 -c 2000 -w eth0.cap

    例如我截取本机(192.168.31.147)和主机114.114.114.114之间的数据
    tcpdump -n -i eth0 host 192.168.31.147 and 114.114.114.114

    还有截取全部进入服务器的数据可以使用以下的格式
    tcpdump -n -i eth0 dst 192.168.31.147

    或者服务器有多个IP 可以使用参数
    tcpdump -n -i eth0 dst 192.168.31.147  or  192.168.31.157
        
    指定ip和端口
    tcpdump -i eth0 -nn net 192.100.4.116 and port 1521
    默认:tcpdump -i eth0 -nn
    netstat -n | awk '/^tcp/' 连接数
    导出tcpdump:tcpdump -i eth0 host 192.100.4.118 -w /tcpdump.cap
9、查看TCP连接数
    netstat -n | awk '/^tcp/ {++S[$NF]} END {for(a in S) print a, S[a]}'
    查看端口被谁占用
    netstat -antp | fgrep 2181

10、查看线程的状态统计
    grep java.lang.Thread.State 11.txt |awk '{print $2$3$4$5}' |sort |uniq -c
    查看java进程下的所有线程
    top -p 2208   并且输入‘H’即可查看线程统计情况

11、使用jmap来查询jvm堆的信息
   a。查询jvm内存中的经过GC后还存活的对象:jmap -histo:live 23484|head -10  (head -10 排序查看,不加也行)
   b。查询jvm的信息,以及新生代已使用百分比,以及老生代的已使用:jmap -heap pid
   c。jmap -dump:live,format=b,file=heap.hprof 23484   来生成内存对象的head文件 用eclipse的MAT插件来查看
12、使用jstat 来实时查看jvm内存的使用情况,以及monior gc的次数以及full gc的次数和时间,由此也能看出gc是否频繁
    jstat -gc 23484 5000:每5秒执行打印情况,展示的字节
    jstat -gcutil 23484 5000:展示的是百分比
13、使用jstack 来查看线程的执行情况,多用于造成cpu飙高的情况下
    printf %x\n 子线程   将10进制转为16进制
    printf %d\n 子线程   将16进制转为10进制
    jstack -l pid > 11.txt
13-1、使用jinfo可以在一个正在运行的JVM中动态的开启GC日志功能
    jinfo -flag +PrintGCDetails 12278
    jinfo -flag +PrintGC 12278
    关闭如下:
    jinfo -flag -PrintGCDetails 12278
    jinfo -flag -PrintGC 12278

14、ab用于压力测试
 ab -c 10 -n 200 url    c表示10个并发。n表示200个请求

15、性能排查工具:pidstat -p 22367 1 3 -u -t
 -u:代表对cpu使用率的监控
 参数1 3:表示每秒采样一次,一共三次
 -t:将监控级别细化到线程 
 1、PID - 被监控的任务的进程号
 2、%usr - 当在用户层执行(应用程序)时这个任务的cpu使用率,和 nice 优先级无关。注意这个字段计算的cpu时间不包括在虚拟处理器中花去的时间。
 3、%system - 这个任务在系统层使用时的cpu使用率。
 4、%guest - 任务花费在虚拟机上的cpu使用率(运行在虚拟处理器)。
 5、%CPU - 任务总的cpu使用率。在SMP环境(多处理器)中,如果在命令行中输入-I参数的话,cpu使用率会除以你的cpu数量。
 6、CPU - 正在运行这个任务的处理器编号。
 7、Command - 这个任务的命令名称。

16、检查之前先查看NFS文件服务和rpcbind服务是否已在运行,service nfs status/service rpcbind status
    安装之后,修改/etc/export文件,添加需要挂载的路径
        检查可以挂载的文件系统:showmount -e 192.168.102.91系统会列出可以挂载的文件
    mount -t nfs 192.168.102.91:/usr/local/apache-activemq-5.7.0/data/kahadb /data/activemq 
    就将91上目录/usr/local/apache-activemq-5.7.0/data/kahadb挂载到本机目录/data/activemq上
    最后将该目录自动挂载,避免系统重启后需手动挂载。自动挂载即修改配置文件/etc/fstab
17、基本脚本
系统

# uname -a               # 查看内核/操作系统/CPU信息
 # head -n 1 /etc/issue   # 查看操作系统版本 
# cat /proc/cpuinfo      # 查看CPU信息
 # hostname               # 查看计算机名 
# lspci -tv              # 列出所有PCI设备
 # lsusb -tv              # 列出所有USB设备 
# lsmod                  # 列出加载的内核模块
 # env                    # 查看环境变量
资源

# free -m/h               # 查看内存使用量和交换区使用量 
# df -h                  # 查看各分区使用情况 
# du -sh <目录名>        # 查看指定目录的大小 
# grep MemTotal /proc/meminfo   # 查看内存总量
 # grep MemFree /proc/meminfo    # 查看空闲内存量
# uptime                 # 查看系统运行时间、用户数、负载 
# cat /proc/loadavg      # 查看系统负载
磁盘和分区

# mount | column -t      # 查看挂接的分区状态 
# fdisk -l               # 查看所有分区 
# swapon -s              # 查看所有交换分区
 # hdparm -i /dev/hda    # 查看磁盘参数(仅适用于IDE设备) 
# dmesg | grep IDE       # 查看启动时IDE设备检测状况

grep管道命令详解:还有个与之类似的是zgrep命令 当时zgrep可以直接查.gz的压缩文件
$>grep -5 'parttern' inputfile //打印匹配行的前后5行
$>grep -C 5 'parttern' inputfile //打印匹配行的前后5行
$>grep -A 5 'parttern' inputfile //打印匹配行的后5行
$>grep -B 5 'parttern' inputfile //打印匹配行的前5行
$>grep -H 'ccc' inputfile         //为每一匹配项打印文件名
$>zgrep '检索内容' /目录 /文件 .gz  或者.log (当日)
$>zgrep 内容1 /opt/logs/ios/ios_system-20200520.*.log | zgrep '内容2' |grep '内容3'     //多个条件筛选日志

网络
# traceroute               # 路由跟踪
# ifconfig               # 查看所有网络接口的属性
# iptables -L            # 查看防火墙设置 
# route -n               # 查看路由表 
# netstat -rn              # 查看主机路由表
# netstat -lntp          # 查看所有监听端口 
# netstat -antp          # 查看所有已经建立的连接
# netstat -s             # 查看网络统计信息
#tracert www.google.com    路由跟踪命令 traceroute/tracert  显示路由到目的地址所经过的路由器,可以诊断网络阻塞
netstat -anlp|grep ESTABLISHED |grep tcp|awk '{print $5}'|awk -F: '{print $1}'|sort|uniq -c|sort -nr|head -n 10 查看ESTABLISHED Top10
查询TCP连接数
netstat -ant|awk '/^tcp/ {++S[$NF]} END {for(a in S) print (a,S[a])}'

进程
ps aux|grep java         # 查看所有进程
# ps -ef                 # 查看所有进程 
# top                    # 实时显示进程状态
用户
# cat /etc/passwd          # 查看所有用户信息
 username:password:User ID:Group ID:comment:home directory:shell
 用户名:密码:用户id:用户所在组id:备注:用户家目录:shell命令所在目录
 cat /etc/passwd|grep 用户名   #用于查找某个用户

# w                      # 查看活动用户 
# id <用户名>            # 查看指定用户信息 
# last                   # 查看用户登录日志 
# cut -d: -f1 /etc/passwd   # 查看系统所有用户 
# cut -d: -f1 /etc/group    # 查看系统所有组 
# crontab -l             # 查看当前用户的计划任务
服务

# chkconfig --list       # 列出所有系统服

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值