工作中常用到的Linux命令

来源:互联网 发布:cf手游雷神和无影数据 编辑:程序博客网 时间:2024/05/01 02:09


工作中,常用的命令,进行总结下。
场景1:大张负责线上一个服务,使用java语言开发的。有一天,他收到报警,大概意思就是服务不能用,这个时候,老板让他查下是什么原因?
下面是大张的处理过程?

  1. 登录到这个机器,看下java进程
    ps -aux | grep -v ‘grep’ | grep java –color=auto
    经过分析,
    场景1:发现没有这个服务的java进程,大张给老板说,这个服务停了。这个事情算是搞定了。
    场景2:发现这个服务的进程是存在的,大张执行下面的命令,看下这个服务的监听的端口,
    netstat -lnpt
    大张看到了这个监听的端口是有的,但是看不到哪个是进程占用的,因为大张的权限问题,大张切换成root角色权限的用户,假设叫niubi
    sudo -u niubi -i
    大张看到了占用这个端口的进程,lsof -i:端口,然后大张想看下监听这个端口的进程和刚才用ps -ef | grep -v ‘grep’ | grep java 查到的进程是啥关系,然后大张使用了如下命令,
    pstree
    但是,大张看不出什么,大张又执行了pstree -Aup
    这个时候大张发现,这两个进程的父子关系,然后就断定,进程没问题,端口没问题,那么怎么办呢?其实,本应该去看应用的日志的,哎,还是去看应用日志吧。
  2. 看应用日志
    日志文件都存放到一个指定目录,假设为/var/apps/log
    这个目录下面有很多的日志,大张,先执行如下命令:
    ls -ls
    这么多日志,怎么看,大张找到了当天的日志,假设是app.log.2015-09-12
    大张使用命令
    less -MN app.log.2015-09-12
    然后输入error,没啥收获,然后大张执行命令:
    cat app.log.2015-09-12 | grep Exception –color=auto
    发现很多异常,大张想看下有多少,然后执行了命令
    cat app.log.2015-09-12 | grep Exception | wc -l
    (或者grep Exception app.log.2015-09-12)
    哇塞,还挺多,问题很严重!
    不过从日志中,经过分析可能是IO方面的问题,大张决定看下机器的负载情况。
  3. 看机器负载
    大张执行了命令top
    大张看了几个cpu,和内存使用情况,然后看了眼有无僵尸(zombie)进程
    ,应该没啥问题,然后大张又看了下磁盘使用情况:
    df -hl
    也没啥问题,然后看下当前目录的总量占用情况,执行命令:du -sh ./
    也没啥问题,执行du -sh *命令,看了每个日志文件的大小,也没啥,
    大张实在是解决不了问题了,抓狂!!!!!

场景2:
有一天,大张启动一个需要打开很多文件的程序,总是打不开文件,凭着经验,大张想应该是用命令看下:ulimit -a
发现,原来系统的文件打开数量限制是1024,而大张想看下当前打开的有多少,执行命令lsof | wc -l
然后大张调整了ulimit大小,就OK了。

后来,大张学习了以下命令:
物理cpu的个数如下所示:
cat /proc/cpuinfo | grep ‘physical id’ | sort | uniq | wc -l
每个物理CPU中core的个数(即核数),如下:
cat /proc/cpuinfo| grep ‘cpu cores’ | uniq

查看内存使用情况:
free -m

查看硬盘使用情况:
fdisk -l
df -h

查看I/O性能:
iostat

查看负载
uptime

查看系统内核
uname -a

查看使用的Linux发行发版的相关信息:
lsb_release -a

查询PCI设置
lspci

查询网卡型号
lspci | grep Ether

查看系统路由表
route -n
或者通过如下命令:
netstat -r

追踪网路数据包的路径
traceroute www.163.com

场景3:大张的公司的机器上的命令有很多都弄成别名了,大张想看下,
然后大张执行如下命令:
alias