目录
36. 如何找到 Java 进程中哪个线程占用了大量 CPU 处理时间?
44. 如果最后一列是10 20 10 30,那么如何统计每个数字出现的次数,比如输出210 120 1~30
46. 写输出数字 0 到 500 中 7 的倍数(0 7 14 21...)的命令?
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
-
接下来,利用下面的命令查看线程占用资源的情况
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删除