linux常用命令-问题分析
一、环境变量
env 打印所有变量
export 变量名=“/path” 指定临时环境变量,shell窗口关闭结束
echo $变量名 打印变量值
二、 ? , ?, ?,#等代表什么
0
这
个
程
式
的
执
行
名
字
∗
∗
0 这个程式的执行名字 **
0这个程式的执行名字∗∗n 这个程式的第n个参数值,n=1…9**
$* 这个程式的所有参数,此选项参数可超过9个。
$# 这个程式的参数个数
$$ 这个程式的PID(脚本运行的当前进程ID号)
$! 执行上一个背景指令的PID(后台运行的最后一个进程的进程ID号)
$? 执行上一个指令的返回值 (显示最后命令的退出状态。0表示没有错误,其他任何值表明有错误)
$- 显示shell使用的当前选项,与set命令功能相同
@
跟
@ 跟
@跟*类似,但是可以当作数组用
三、set命令-设置shell脚本命令执行监控
set命令主要用来设置shell
-
不带参数的set命令用来显示环境变量
-
set -e
-e参数表示只要shell脚本中发生错误,即命令返回值不等于0,则停止执行并退出shell。set -e在shell脚本中经常使用。默认情况下,shell脚本碰到错误会报错,但不会继续执行后面的命令。
+e碰到报错会继续执行后面的命令 -
set -u
-u参数表示shell脚本执行时如果遇到不存在的变量会报错并停止执行。默认不加-u参数的情况下,shell脚本遇到不存在的变量不会报错,会继续执行。
四、top命令-CPU和内存使用率监控
查看进程的CPU和内存使用情况
执行top时,使用”-p”选项可以指定要显示的进程:top -p PID1,PID2…
使用“-d”刷新时间,以秒为单位
P 以cpu使用率从高到低排序
M 以内存使用率从高到低排序
监控java线程数:
ps -eLf | grep java | wc -l
监控网络客户连接数:
netstat -n | grep tcp | grep 侦听端口 | wc -l
五、iostat命令-磁盘IO监控
iostat是I/O statistics(输入/输出统计)的缩写,iostat工具将对系统的磁盘操作活动进行监视。它的特点是汇报磁盘活动统计情况,同时也会汇报出CPU使用情况。iostat属于sysstat软件包。可以用yum install sysstat 直接安装。
命令格式:iostat[参数][时间][次数]
-C 显示CPU使用情况
-d 显示磁盘使用情况
-k 以 KB 为单位显示
-m 以 M 为单位显示
-N 显示磁盘阵列(LVM) 信息
-n 显示NFS 使用情况
-p[磁盘] 显示磁盘和分区的情况
-t 显示终端和CPU的信息
-x 显示详细信息
-V 显示版本信息
.
cpu属性值说明:
%user:CPU处在用户模式下的时间百分比。
%nice:CPU处在带NICE值的用户模式下的时间百分比。
%system:CPU处在系统模式下的时间百分比。
%iowait:CPU等待输入输出完成时间的百分比。
%steal:管理程序维护另一个虚拟处理器时,虚拟CPU的无意识等待时间百分比。
%idle:CPU空闲时间百分比。
备注:如果%iowait的值过高,表示硬盘存在I/O瓶颈,%idle值高,表示CPU较空闲,如果%idle值高但系统响应慢时,有可能是CPU等待分配内存,此时应加大内存容量。%idle值如果持续低于10,那么系统的CPU处理能力相对较低,表明系统中最需要解决的资源是CPU。
六、jmap命令和jstack命令-对异常进程和线程打印堆栈进行分析
jmap -dump:live,format=b,file=/tmp/dump.dat PID
jstack -l PID >> js.txt
参考链接
jstack分析方法参考:https://www.cnblogs.com/wuchanming/p/7766994.html
七、if命令
八、free命令查看-排查内存问题
free -h|-m 以方便识别的方式
total : 表示系统的总内存
used : 表示应用程序已经使用的内存
free : 表示当前还没有被使用的内存
shared :表示进程共享的内存
buff/cache : 表示系统的page cache和buffer使用到的内存
available : 表示应用程序还可以申请到的内存
当前系统使用到的内存 = used + buff/cache
总内存 total = used + free + buff/cache
注:shared被包含在used内