1、 随便写一个awk的命令、用awk统计文本行数

(1)最近登录的5个帐号

last -n 5 | awk -F ':'(指定域分割符号)  '{print $1}'

读入有'\n'换行符分割的一条记录,然后将记录按指定的域分隔符划分域,填充域,$0则表示所有域,$1表示第一个域,$n表示第n个域。默认域分隔符是"空白键" 或 "[tab]键",所以$1表示登录用户,$3表示登录用户ip,以此类推。

(2)用awk统计文本行数

awk '{count++} END{print "user count is ", count}' /etc/passwd

awk 'END{print "user count is " NR}' filename

2、编写一个简单的Shell脚本

查找/root/目录下是否存在该文件

#/bin/bash  // 以bash shell来解释
echo "enter a file name:"
read a      // 读取用户输入的信息并向右侧变量分配用户输入的值
if test  -e /root/$a   //  test检查文件和比较值,注意变量引用时用$
then echo "the file is exist!"
else echo "the file is not exist!"
fi

if/else条件的格式如下:

if[表达式] 
 then
     命令语句块
else
     命令语句块
fi

3、Linux系统监控命令

(1)top命令:Linux命令。可以查看实时的CPU使用情况。也可以查看最近一段时间的CPU使用情况。

(2)ps命令:Linux命令。强大的进程状态监控命令。可以查看进程以及进程中线程的当前CPU使用情况。属于当前状态的采样数据。

(3)jstack:Java提供的命令。可以查看某个进程的当前线程栈运行情况。根据这个命令的输出可以定位某个进程的所有线程的当前运行状态、运行代码,以及是否死锁等等。

(4)pstack:Linux命令。可以查看某个进程的当前线程栈运行情况。

(5)磁盘使用情况:iostat

具体可以参看文章:https://i.cnblogs.com/EditPosts.aspx?postid=5702288&update=1

4、线上CPU100%,如何定位和排查问题

(1)

1.jps 获取Java进程的PID

2.jstack pid >> java.txt 导出CPU占用高进程的线程栈

3.top -H -p PID 查看对应进程的哪个线程占用CPU过高

4.echo “obase=16; PID” | bc 将线程的PID转换为16进制,大写转换为小写

5.在第二步导出的Java.txt中查找转换成为16进制的线程PID。找到对应的线程栈,分析负载高的线程栈都是什么业务操作。优化程序并处理问题。

(2)

1.使用top 定位到占用CPU高的进程PID,并查看进程具体信息

top  // 命令获取进程相关的信息,并找到占用CPU高的线程
ps aux | grep PID // 得到PID进程的具体信息,比如是个Tomcat服务进程

2、获取线程相关信息

ps -mp pid -o THREAD,tid,time | sort -rn

ps命令的几个参数:

-m显示所有的线程

-p pid进程使用cpu的时间

-o 用户自定义格式

tid 线程id

sort命令的两个参数:

-n  依照数值的大小排序
-r  以相反的顺序来排序

3.将需要的线程ID转换为16进制格式

printf "%x\n" tid

4.打印线程的堆栈信息

jstack pid |grep tid -A 30

-A 30 匹配行的后30行内容

参考文章:

(1)http://www.cnblogs.com/dragonflyyi/p/4343778.html

(2)http://www.cnblogs.com/pangguoping/p/5715848.html

  

  

最新文章

  1. 架构师养成记--12.Concurrent工具类CyclicBarrier和CountDownLatch
  2. Android五岁了
  3. 关于 矩阵在ACM中的应用
  4. 使用Xcode6创建EmptyProject
  5. linux配置oracle11G监听及本地网络服务 及 数据库建库
  6. Web工程与RMI工程进行联调
  7. Android布局_布局概述和LinearLayout布局
  8. goldengate 12c对oracle DB的改进
  9. #define使用方法
  10. Nginx开发从入门到精通
  11. OAuth2集成——《跟我学Shiro》
  12. c语言之sizeof总结
  13. linux获取CPU温度
  14. 做好织梦dedecms安全防护全部方法
  15. OS X EI Capitan 10.11.4中sudo无法起作用的解决方法
  16. VS2010中查询替换使用
  17. 基于 Koa平台Node.js开发的KoaHub.js的模板引擎代码
  18. 通俗易懂的Java序列化原理
  19. ajax交互数据简单拼装,数组成字符串
  20. 【Python】解析Python中的条件语句和循环语句

热门文章

  1. return_url和notify_url的区别
  2. .md即markdown文件的基本常用编写语法(图文并茂)
  3. 转载:深入探讨 Java 类加载器
  4. 消息队列NetMQ 原理分析2-IO线程和完成端口
  5. js之Math对象
  6. Codeforce 712A Memory and Crow
  7. 内功心法 -- java.util.ArrayList<E> (1)
  8. Android实现先横向横线展现在纵向拉开图片
  9. ArcGIS Desktop 10.5 安装实录
  10. 地图学与GIS制图的基础理论(一)