面试题--Linux和Git

Source

1.Linux常用服务类相关指令

 

2.git分支相关命令和实际应用

3.Linux命令之top

top - 整机性能查看

 主要看load average, CPU, MEN三部分

load average表示系统负载,即任务队列的平均长度。 三个数值分别为 1分钟、5分钟、15分钟前到现在的平均值。

load average: 如果这个数除以逻辑CPU的数量,结果高于5的时候就表明系统在超负荷运转了。

Linux中top命令参数详解

uptime - 系统性能命令的精简版

 

4.Linux之cpu查看vmstat

vmstat -n 2 3
  • procs

    • r:运行和等待的CPU时间片的进程数,原则上1核的CPU的运行队列不要超过2,整个系统的运行队列不超过总核数的2倍,否则代表系统压力过大,我们看蘑菇博客测试服务器,能发现都超过了2,说明现在压力过大
    • b:等待资源的进程数,比如正在等待磁盘I/O、网络I/O等
  • cpu
    • us:用户进程消耗CPU时间百分比,us值高,用户进程消耗CPU时间多,如果长期大于50%,优化程序
    • sy:内核进程消耗的CPU时间百分比
    • us + sy 参考值为80%,如果us + sy 大于80%,说明可能存在CPU不足,从上面的图片可以看出,us + sy还没有超过百分80,因此说明蘑菇博客的CPU消耗不是很高
    • id:处于空闲的CPU百分比
    • wa:系统等待IO的CPU时间百分比
    • st:来自于一个虚拟机偷取的CPU时间比

        

5.Linux之cpu查看pidstat

查看看所有cpu核信息

mpstat -P ALL 2

 每个进程使用cpu的用量分解信息

pidstat -u 1 -p 进程编号

 

6.Linux之内存查看free和pidstat

应用程序可用内存数

经验值

  • 应用程序可用内存l系统物理内存>70%内存充足

  • 应用程序可用内存/系统物理内存<20%内存不足,需要增加内存

  • 20%<应用程序可用内存/系统物理内存<70%内存基本够用

m/g:兆/吉

查看额外

pidstat -p 进程号 -r 采样间隔秒数

7.Linux之硬盘查看df

查看磁盘剩余空间数

 

8.Linux之磁盘IO查看iostat和pidstat

磁盘I/O性能评估

 磁盘块设备分布

  • rkB/s每秒读取数据量kB;wkB/s每秒写入数据量kB;
  • svctm lO请求的平均服务时间,单位毫秒;
  • await l/O请求的平均等待时间,单位毫秒;值越小,性能越好;
  • util一秒中有百分几的时间用于I/O操作。接近100%时,表示磁盘带宽跑满,需要优化程序或者增加磁盘;
  • rkB/s、wkB/s根据系统应用不同会有不同的值,但有规律遵循:长期、超大数据读写,肯定不正常,需要优化程序读取。
  • svctm的值与await的值很接近,表示几乎没有IO等待,磁盘性能好。
  • 如果await的值远高于svctm的值,则表示IO队列等待太长,需要优化程序或更换更快磁盘。

9.Linux之网络IO查看ifstat

默认本地没有,下载ifstat

wget http://gael.roualland.free.fr/lifstat/ifstat-1.1.tar.gz
tar -xzvf ifstat-1.1.tar.gz
cd ifstat-1.1
./configure
make
make install

查看网络IO

各个网卡的in、out

观察网络负载情况程序

网络读写是否正常

  • 程序网络I/O优化
  • 增加网络I/O带宽

10.CPU占用过高的定位分析思路

结合Linux和JDK命令一块分析

案例步骤

  • 先用top命令找出CPU占比最高的

 

  • ps -ef或者jps进一步定位,得知是一个怎么样的一个后台程序作搞屎棍

 

  • 定位到具体线程或者代码

    • ps -mp 进程 -o THREAD,tid,time
      • -m 显示所有的线程
      • -p pid进程使用cpu的时间
      • -o 该参数后是用户自定义格式

 

  • 将需要的线程ID转换为16进制格式(英文小写格式),命令printf %x 172 将172转换为十六进制
  • jstack 进程ID | grep tid(16进制线程ID小写英文)-A60

ps - process status
-A Display information about other users’ processes, including those without controlling terminals.

-e Identical to -A.

-f Display the uid, pid, parent pid, recent CPU usage, process start time, controlling tty, elapsed CPU usage, and the associated command. If the -u option is also used, display the user name rather then the numeric uid. When -o or -O is used to add to the display following -f, the command field is not truncated as severely as it is in other formats.
ps -ef中的e、f是什么含义

对于JDK自带的JVM监控和性能分析工具用过哪些?一般你是怎么用的?

link

11.GitHub骚操作之开启

12.GitHub骚操作之常用词

常用词含义

  • watch:会持续收到该项目的动态
  • fork:复制其个项目到自己的Github仓库中
  • star,可以理解为点赞
  • clone,将项目下载至本地
  • follow,关注你感兴趣的作者,会收到他们的动态

13.GitHub骚操作之in限制搜索

n关键词限制搜索范围:

  • 公式 :xxx(关键词) in:name或description或readme
    • xxx in:name 项目名包含xxx的
    • xxx in:description 项目描述包含xxx的
    • xxx in:readme 项目的readme文件中包含xxx的组合使用
  • 组合使用
    • 搜索项目名或者readme中包含秒杀的项目
    • xxx in:name,readme

14.GitHub骚操作之star和fork范围搜索

  • 公式:
    • xxx关键字 stars 通配符 :> 或者 :>=
    • 区间范围数字: stars:数字1…数字2
  • 案例
    • 查找stars数大于等于5000的springboot项目:springboot stars:>=5000
    • 查找forks数在1000~2000之间的springboot项目:springboot forks:1000…5000
  • 组合使用
    • 查找star大于1000,fork数在500到1000的springboot项目:springboot stars:>1000 forks:500…1000

15.GitHub骚操作之awesome搜索

  • 公式:awesome 关键字:awesome系列,一般用来收集学习、工具、书籍类相关的项目
  • 搜索优秀的redis相关的项目,包括框架,教程等 awesome redis

16.GitHub骚操作之#L数字

  • 一行:地址后面紧跟 #L10
    • https://github.com/abc/abc/pom.xml#L13
  • 多行:地址后面紧跟 #Lx - #Ln
    • https://github.com/moxi624/abc/abc/pom.xml#L13-L30

17.GitHub骚操作之T搜索

在项目仓库下按键盘T,进行项目内搜索

 更多github快捷键

18.GitHub骚操作之搜索区域活跃用户

  • location:地区
  • language:语言
  • 例如:location:beijing language:java