Java面试12|Linux及Shell脚本
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
Java面试12|Linux及Shell脚本的更多相关文章
- Linux/Unix shell 脚本中调用SQL,RMAN脚本
Linux/Unix shell脚本中调用或执行SQL,RMAN 等为自动化作业以及多次反复执行提供了极大的便利,因此通过Linux/Unix shell来完成Oracle的相关工作,也是DBA必不可 ...
- 详解Linux交互式shell脚本中创建对话框实例教程_linux服务器
本教程我们通过实现来讲讲Linux交互式shell脚本中创建各种各样对话框,对话框在Linux中可以友好的提示操作者,感兴趣的朋友可以参考学习一下. 当你在终端环境下安装新的软件时,你可以经常看到信息 ...
- 使用C#给Linux写Shell脚本(下篇)
在上篇的<使用C#给Linux写Shell脚本>结尾中,我们留下了一个关于C#如何调用BashShell的问题.在文章发布之后,我留意到有读者留言推荐使用“Pash”(一款类PowerSh ...
- Linux常用Shell脚本珍藏【转载】
我们在运维中,尤其是linux运维,都知道脚本的重要性,脚本会让我们的 运维事半功倍,所以学会写脚本是我们每个linux运维必须学会的一门功课,这里收藏linux运维常用的脚本.如何学好脚本,最关键的 ...
- 从windows到linux的shell脚本编码和格式问题
从windows到linux的shell脚本编码和格式问题 从windows到Linux的shell脚本编码和格式问题 1.异常问题 :set ff=unix 启动脚本在启动时报错比如执行sh s ...
- java调用机器上的shell脚本
java调用机器上的shell脚本,可以这样方便的通过shell脚本调用本机的C.C++等程序 Process process = null; Runtime runTime = Runtime.ge ...
- Linux执行shell脚本方式及区别&命令后台运行
Linux执行shell脚本方式及区别&命令后台运行 http://blog.csdn.net/heqiyu34/article/details/19089951/
- Linux简单Shell脚本监控MySQL、Apache Web和磁盘空间
Linux简单Shell脚本监控MySQL.Apache Web和磁盘空间 1. 目的或任务 当MySQL数据库.Apache Web服务器停止运行时,重新启动运行,并发送邮件通知: 当服务器磁盘的空 ...
- Linux:从windows到linux的shell脚本编码和格式
从windows到linux的shell脚本编码和格式问题 异常问题 :set ff=unix 启动脚本在启动时报错比如执行sh start.sh,时会报Command not found等等的错误, ...
随机推荐
- Delphi TRect函数例子
{ 在网上看到个这个例子感觉还不错,将它移到自己的博客里没事的时候看看: TRect 作用:保存一个矩形的左上角和右下角的坐标值: 声明: type TRect = ...
- Nagios 系统监控基本安装配置过程详解
Nagios 是一款免费的开源 IT 基础设施监控系统,功能强大,灵活性强,能有效监控 Windows.Linux.VMware 和 Unix 主机状态,交换机.路由器等网络设置等.一旦主机或服务状态 ...
- Java错题
加粗为正确答案,绿色为错选答案 1.对于以下代码: for ( int i=0; i<10; i++) System.out.println(i); for循环后,i的值是多少? A.i不再存 ...
- 2017年Unity开发环境与插件配置安装(总体介绍)
最近(2017年初)有朋友问,Unity客户端开发如何在机器配置一般的情况下,配置更高效的开发环境,进一步加快开发进度. 推荐如下: Win10(或者Win8)+Unity5.5.1版本(2017年2 ...
- 使用express.js框架一步步实现基本应用以及构建可扩展的web应用
最近过年在家有点懈怠,但是自己也不断在学习新的前端技术,在家琢磨了express.js的web框架. 框架的作用就是提高开发效率,快速产出结果.即使不使用框架,我们也会在开发过程中逐渐形成构成框架. ...
- cordova StatusBar插件的使用(设置手机状态栏颜色和页面头部颜色一致),做出和原生一样的页面效果体验
cordova StatusBar插件的使用(设置手机状态栏颜色和页面头部颜色一致),做出和原生一样的页面效果体验设置设备状态栏背景颜色StatusBar.backgroundColorByHexSt ...
- 【.Net Framework 体积大?】不安装.net framework 也能运行!?原理简介-2
接上一篇 [.Net Framework 体积大?]不安装.net framework 也能运行!?开篇叙述-1 昨天写了一个引子,还是有读者对这套“小把戏”感兴趣.那么不辜负大家的希望,争取博主不做 ...
- OC 常用方法记录
1.排序 给数组排序 按照字母的升序 //对key按字母升序排序 NSArray *sortedArray = [keys sortedArrayUsingComparator:^NSComparis ...
- 详解 swift2.2 和 OC 的混编
前言: 我们在一些情况下,仅仅使用swift 是无法完成一个项目的,在swift项目中必要用到 OC 实现一些功能,比如,项目要使用一些第三方的框架,但这个第三方的框架却是用 OC 实现的,或者你的项 ...
- C# 添加、获取及删除PDF附件
C# 添加.获取及删除PDF附件 前言 附件在PDF文档中很常见,这些附件可以是PDF或其他类型的文件.在PDF中,附件有两种存在方式,一种是普通的文件附件(document-level file a ...