LINUX运维常用命令

    服务器监控

    开源解决方案

        Nagios
        zabbix
        等
    
    主要的监控项
        CPU
            cat /proc/cpuinfo
                * /proc/是内存空间中的系统操作命令,并非磁盘中的实际存储空间
                
            vmstat [间隔时间] [执行次数]
                基础组件
                第一行数据不准确(刚开机是准的,但是程序执行过后就不准了)
            top
                集成了很多系统信息在里面
                f 设置展示的信息
                h 显示所有可用命令
                1 显示所有CPU的核心数
                    0.0%sy 锁占用(很少超过10%)
                    0.0%id 空闲CPU百分比
                    0.0%wa IO等待(iowait)
                    0.0%hi 硬件中断
                    0.0%si 软件中断
                    0.0%st 实时
                    swap 虚拟内存
            mpstat
                个别系统包含此命令,有些服务器没有
        内存
            cat /proc/meminfo
                当前系统的运行信息
                MemTotal 总内存
                MemFree
                Buffers
                Cached
            topfree / free
                -m
                total 总内存
                used 已占用
                free 空闲
                    空闲内存应当由free与cached相加取得。
                shared
                buffers
                cached 缓存空间。当存在大量I/O读写的情况下,cache会大量占用。
            vmstat
            
            
            查看挂载
                df - hP
                    可以发现目录是挂载盘,但是看不出挂载位置
                mount
                    不要跟任何参数,否则就是重新挂载
                    挂载位置、挂载方式(只读/读写等)
                    
                    cat /etc/exports 配置允许挂载的IP地址,挂载的方式等参数
            
            
            /dev/shm 共享内存
                所有在该目录下创建的文件是不占用磁盘空间的,是创建在内存空间中。
                比在磁盘中运行速度会快很多。
            内存不足
                两种内存不足情况:
                     1、堆内存不足
                     2、实际内存不足
                
        网络
            /pro/net/dev
            /sys/class/net/dev
            netstat
                路由表
            ifconfig
                查看两条机器是否从属于同一子网,应该看路由表与掩码
            cat /proc/net/dev
                查看网络配置
            cat /sys/class/net/eth0/address
            cat /sys/class/net/eth0/iflink
                1 禁用
                2 启用
            cat /sys/class/net/eth0/statistics/rx_bytes
                利用该值来监控带宽数据
                
                编写脚本监控实际带宽,关注峰值速度
                --------------------------------------------
                    while true
                    > do
                    > a=`cat /sys/class/net/eth0/statistics/rx_bytes`
                    > sleep 1
                    > b=`cat /sys/class/net/eth0/statistics/rx_bytes`
                    > echo $(($((b-a))/1024/1024)) MB/s
                    > done
                --------------------------------------------
            
        存储
            mount
            df
            查看挂载
                df - hP
                    可以发现目录是挂载盘,但是看不出挂载位置
                mount
                    不要跟任何参数,否则就是重新挂载
                    挂载位置、挂载方式(只读/读写等)
                    
                    cat /etc/exports 配置允许挂载的IP地址,挂载的方式等参数
            
            /dev/shm 共享内存
                所有在该目录下创建的文件是不占用磁盘空间的,是创建在内存空间中。
                比在磁盘中运行速度会快很多。
            内存不足
                两种内存不足情况:
                     1、堆内存不足
                     2、实际内存不足
            du
            fdisk,parted
            lv, vg, pv 相关
            
    java进程监控
        关注点:
            * 堆内存,非堆内存
            * gc频率和效率
            * 堆栈信息
        常用工具:
            (图形化)
            jconsole
            jvisualvm
            
            (命令行)
            jstat <-options> PID
                -options 查看命令
            jstack
 
            看到的东西是一样的。
            
        内存泄露:每次GC释放后的可用内存空间越来越少,直到最终没有可用空间。但该周
        期有可能很短,也有可能很长,所以需要使用脚本来收集监控数据,进行判断。
 
        
    JVM内存区域
    
        GC线程数不宜过多
        新生代配置略大一些
        
        s0+s1+eden
        old
        sgc / sgc time
        fgc / fgc count
 
1.curl 测试网络 如果不通返回(7)
2.mkdir -p (带参数递归创建多个目录) {01..12} m{01..12}
3.ls 查看当前目录列表
4.drwxr -xr -x(d表示当前 第一组 第二组:当前用户 第三组:其他用户)
ls(带l长列表信息 带d查看当前目录 ls --full -time查看时间 )
5.cat 查看文件内容(带n 加载行数) vi进行编辑
6.head (-1表示第一行 默认10行)
7.echo "123" >> wef/q.txt(追加信息到文件)
8.head -4 q.txt |tail -3(文件内容第2行到第四行)
9.free(查看内存 接参数大小) cached缓存io
10.cat /proc
cat /proc/sys/vm/drop_caches (修改0为1 清理数据)
echo "1" > /proc/sys/vm/drop_caches清理cached io缓存 不清理INODE
>   是定向输出到文件,如果文件不存在,就创建文件;如果文件存在,就将其清空;
一般我们备份清理日志文件的时候,就是这种方法:先备份日志,再用`>`,将日志文件清空(文件大小变成0字节);
>>
这个是将输出内容追加
11.cat /proc/cpuinfo |grep processor|wc -l(查看CPU核心数|wc -l统计行数  |less查阅文件翻页)
12.top (前面系统时间 up开机时长 同uptime tasks:多少个进程 运行 睡眠 停止 僵死)
13.last(pts虚拟终端 登录信息)
14.ps -ef查看当前进程(带[]表示系统进程  grep 模糊查询 grep[-A -B -C (数字)]查询关键字上文、下文、上下文多少行--)
15.查看端口 netstat -lntp  route -n[Gateway网关 0.0.0.0全网段 IP*掩码=网关](服务起不来问题查看进程及端口监听)
16.rpm -qa |grep which(查看文件有没有安装及版本信息)
17.yum (-list 查看所有安装包 -provides fc *)
18.kill  (-l查看所有信号 -9强制杀进程 -15等待进程执行完再杀)
19.df -h(查看文件系统 /opt /boot )
du -sh 查看当前目录大小(接目录指定某个目录)
20.ll /proc/|wc -l (统计目录文件数量) ls -a
21.cp file newfile (复制) mv file newfile(移动文件,重命名)
22.ls -l|xargs df -hs(赋予参数)
 
 
vi
:/?
:s/no/yes/ g
 
sed 's/no/yes/ g' file(显示效果但不修改文件 -i)
find  路径 -maxdepth -mindepth -iname '文件名称'()
vi x删除 u撤销 dd删除 yy复制
grep (-E多个条件 -v反向筛选 -r递归 -n行数)
last |gawk '{}' $+行号第几列 0表示整行 print输出
a=10
if [[ $a = 10 ]];then echo "yes" ;else echo "no";fi  -eq
gawk语法判断需要==
 
 
1.gawk 2.sed 3.正则
打war包执行命令
jar -cvf xxxx.war ./*
当前目录下所有目录的大小以M为单位 通过大小排序
du -sm *|sort -n
通过关键字搜索日志
find log |xargs grep ""
寻找进程占用程序windows
netstat -aon|findstr "8080"
tasklist|findstr "4060"
taskkill /F /PID 4060
 
grep -E "1592" 0520.log >20170522-1.log
 
nslookup  解析网址
 
cat /etc/passwd
https://stackoverflow.com/
 
find 目录名 -type f -iname'*.pdf'|wc -l
 
find 目录名 -type f|xargs file |grep -i "PDF document"|wc -l
 
-----------------------------------------服务器监控命令----------------------------------------
 
 
iostat  查询CPU使用情况 磁盘IO情况
free -m 查看内存
mpstat -P ALL 显示每个服务器的CPU统计信息,或者每个处理的CPU统计信息
netstat 显示很多有关网络方面的信息 socket 使用情况 路由情况 网卡情况 协议情况 网络流量统计
nmon 查看处理器利用率 内存使用率 运行队列信息 磁盘IO统计 网络IO统计 换页统计
pmap 显示进程占用的内存量
ps/pstree ps告诉我们每个进程使用的内存量以及所消耗的CPU时间 pstree 则会告诉我们进程间的父子关系
sar 涵盖CPU利用信息
 
 
tail -200 /var/log/messages  |grep error
 
tracert www.baidu.com --第一个IP地址为出口网关
 
 
查看日志
sed -n'/2018-03-04 17:00:00/,/2018-03-04 19:00:00/p' server.log(查看时间段日志记录)
sed -n '60000,100000p' server.log(查看日志60000行到100000行)
 
批量替换a文本内容1001为1002
sed -i "s/1001/1002/g " a.txt
 
抓包分析
netstat -nap | grep pid  根据进程号查看端口
tcpdump -i eth0 port 35530 根据端口抓包直接在屏幕上显示
tcpdump -i eth0 port 35530 -w captured.pcap 抓取到的包的数据即在captured.pcap文件中,在windows上用wireshark软件打开即可
 
ssh -v -p port ip 测试网络联通
ssh -l user ip
ssh user@ip 
连接另外一台主机
ll -lh查看目录下文件大小
 
起别名
alias ss=ssh
 
 
 
 
原文地址:https://www.cnblogs.com/zpbolgs/p/15268295.html