功能实现题

目录

32. 如何利用linux的指令来查询一个文件的行数?

33. linux下统计一个文件中每个id的出现次数?

34. Linux 在多个文件中查找字符串?

35. 如何查看占用cpu最多进程?

36. 如何找到 Java 进程中哪个线程占用了大量 CPU 处理时间?

37. 如何找到占用内存最多的进程?

38. 磁盘不够了,如何快速找出磁盘占用最大的文件?

39. 找到大于某个阈值大小的文件?

40. 查找某个名称或者类型的文件?

41. 查看某个文件的大小?

42. 查看某log文件某个字符串的前后5行?

43. 找到上述行中的最后一列?

44. 如果最后一列是10 20 10 30,那么如何统计每个数字出现的次数,比如输出210 120 1~30

45. 查找log的前5行,后5行?

46. 写输出数字 0 到 500 中 7 的倍数(0 7 14 21...)的命令?

47. 输出文件中某一行数据

48. 如何判断IP是否可以访问?

49. 如何判断某个ip的端口是否可以访问?

50. 如何用命令行请求web服务器?

51. 如何显示某个端口的TCP连接?

52. 如何统计处于各个状态的连接个数?

53. 如何查看进程的占用的文件符情况?

54. less和vim如何查看日志并寻找关键字?

less

vim

55. vim如何删除游标所在行

系统优化

56. 系统卡顿,如何排查


 

32. 如何利用linux的指令来查询一个文件的行数?

  • wc [选项] 文件
    • -c 统计字节数
    • -l 统计行数
    • -w 统计字数
    • -m 统计字符数
  • 一般选项不加时,默认-lcw,显示结果依次为行数、字节数、字数

33. linux下统计一个文件中每个id的出现次数?

  • 举例:检查一个文件中“404”出现的次数

  • grep 就是按参数进行过滤
  • grep -o 一条数据里面有多个相同,会统计相同的次数
  • grep 一条数据里面有多个相同,会统计一次次数
  • wc -l 见上,就是统计行数

34. Linux 在多个文件中查找字符串?

  • 文件不多的情况下

  • 文件多的情况下

  • xargs 将读入的数据重新格式化,默认是将换行和空格替换为空格

35. 如何查看占用cpu最多进程?

  • 通过以下语句获取每一列字段的含义(即标题行)
ps aux | head -1
  • 首先 ps aux能够输出所有的进程
  • 然后,grep -v PID 命令将包含PID的标题行去掉
  • 接着, sort -rn -k +3 ,按照第三列数据进行排序,-r是降序排序,-n是按数值进行排序,-k用来指定列
  • head -1 获取排序后的第一行数据
ps aux|grep -v PID|sort -rn -k +3|head

36. 如何找到 Java 进程中哪个线程占用了大量 CPU 处理时间?

  • 首先根据上面一步能定位到PID

  • 接下来,利用下面的命令查看线程占用资源的情况

    • -H #Threads mode 是否开启线程模式,默认是off

      -p # PID monitoring 只显示某个进程的信息,e.g: top -P 488 只显示进程号为488的进程信息

      -o # sort 排序,-o fieldname ,指定要排序的字段 ,

top -H -p [PID]
  • 对于上述结果,通过ctrl+p对结果按照cpu进行排序,得出哪个线程占用cpu最高(下面以544为例)
  • 先将544转为16进制的220
  • 接下来将该java进程的堆栈信息输出到一个文件
jstack [PID] > jstack.txt
  • 然后在该文件中找到对应的线程ID
    • 利用grep -n可以定位到nid=0x220的行数
    • 然后查询指定行附近的内容(前10行,后20行等)

37. 如何找到占用内存最多的进程?

ps aux|grep -v PID|sort -rn -k +4|head

38. 磁盘不够了,如何快速找出磁盘占用最大的文件?

du -h * | sort -rn | head -1
  • du命令可以查看文件的大小

39. 找到大于某个阈值大小的文件?

find / -type f -size +10G
  • 查找在/目录下文件大小大于10G的文件

40. 查找某个名称或者类型的文件?

find / -name *.ppt

41. 查看某个文件的大小?

du -h /usr/local/apache2/logs/access_log
  • 获取某个文件夹的大小
du -sh data

42. 查看某log文件某个字符串的前后5行?

  • grep -n 能够将包含指定项目的行以及对应的行号显示出来
grep -n "b" a.txt
  • 查找指定行附近的内容
# 错误行定位到了8786830 下面命令能查看前20行和后10行 tail -n +8786810 err.log |head -n 30

43. 找到上述行中的最后一列?

  • awk '{print $NF}' 打印出最后一列
  • 'NR>1 {print $NF}' 能跳过第一行
grep "b" a.txt | awk '{print $NF}'

44. 如果最后一列是10 20 10 30,那么如何统计每个数字出现的次数,比如输出210 120 1~30

  • awk里面通过""来拼接字符串
  • xargs -n1 每行显示一个字符
  • uniq -c 去重,并且将出现次数带上
grep "b" a.txt | awk '{print $NF}' | xargs -n1 | sort | uniq -c | awk '{print $2"~"$1}'

45. 查找log的前5行,后5行?

head -n 5 log tail -n 5 log

46. 写输出数字 0 到 500 中 7 的倍数(0 7 14 21...)的命令?

seq 0 7 500

seq 用于生成从一个数到另一个数之间的所有整数。

用法:seq [选项]... 尾数 或:seq [选项]... 首数 尾数 或:seq [选项]... 首数 增量 尾数

47. 输出文件中某一行数据

tail -n +5 | head -1
  • 先找到第5行以后的数据
  • 然后通过head输出这些数据中的第一行

48. 如何判断IP是否可以访问?

ping ip

49. 如何判断某个ip的端口是否可以访问?

telnet ip port
  • 后接ctrl+]可以给端口发送数据包

50. 如何用命令行请求web服务器?

curl https://www.example.com
  • 不带参数,默认是get请求

51. 如何显示某个端口的TCP连接?

netstat -anp | grep ":8080" // -t 表示过滤TCP连接

52. 如何统计处于各个状态的连接个数?

netstat -anp | awk '{print $6}' | sort | uniq -c | sort -n 

53. 如何查看进程的占用的文件符情况?

lsof | grep hello.c
  • lsof显示的结果,从左往右分别代表:打开该文件的程序名,进程id,用户,文件描述符,文件类型,设备,大小,iNode号,文件名。
COMMAND   PID                      USER   FD             TYPE        DEVICE SIZE/OFF   NODE   NAME vi        27940                    hyb    7u      REG               8,15     16384     137573 /home/hyb/.1.txt.swp

54. less和vim如何查看日志并寻找关键字?

less

b 向后翻一页 d 向后翻半页 /字符串:向下搜索“字符串”的功能 ?字符串:向上搜索“字符串”的功能 空格键 滚动一行 回车键 滚动一页 q 退出less n:重复前一个搜索(与 / 或 ? 有关) N:反向重复前一个搜索(与 / 或 ? 有关)

vim

  • /+关键字 ,回车即可。此为从文档当前位置向下查找关键字,按n键查找关键字下一个位置,N往回找;
  • ?+关键字,回车即可。此为从文档挡圈位置向上查找关键字,按n键向上查找关键字,N往回找;

55. vim如何删除游标所在行

  • dd删除

系统优化

56. 系统卡顿,如何排查

  • 首先通过 top -c 命令显示当前进程的运行列表
  • 然后,按一下P按照CPU使用率进行排序,得到CPU使用率最高的进程(2609)
  • 接着,使用 top -Hp 2609 找出这个进程下面的线程,继续按P进行排序
  • 然后,可以找到消耗CPU最多的线程
    • 此处需要将线程号转为十六进制 2854->b26
  • 然后,导出进程快照,看看线程做了什么
    • jstack -l 2609 > ./2609.stack
  • 再用grep查看线程在文件中做了什么
    • cat 2609.stack |grep 'b26' -C 8
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值