本文共 3378 字,大约阅读时间需要 11 分钟。
Linux
1.你常用的Linux命令有哪些?
求助命令: --help
和man
文件目录的基本操作: ls
、cd
、rmdir
、mkdir
、cp
、mv
、chmod
其中chmod分别是r4 w2 x1 chmod754 .bashrc
获取文件内容:cat
、head
、find
其中find [basedir] [options] find . -name 'shadow*'
压缩打包命令: 压缩命令gzip
打包tar
查看进程: ps
查看自己的进程 top
实时显示进程的信息 netstat
查看占用端口的进程
正则表达式:
-
grep
使用正则表达式进行全局查询并打印;-n 表示输出行号- 示例:把含有the字符串的行提取出来
grep -n 'the' regular_express.txt
。 - 此外正则表达式a{m,n}用来匹配字符a出现m~n次。
grep -n 'a\{2,5\}' regular_express.txt
- 示例:把含有the字符串的行提取出来
-
awk
: awk每次处理一行,处理的最小单位是字段。每个字段的命名方式为: n . n 为 字 段 号 , 从 1 开 始 。 ‘ n. n为字段号,从1开始。` n.n为字段号,从1开始。‘ awk ‘条件类型 1 {动作 1} 条件类型 2 {动作 2} …’ filename`- 示例:取出最近五个登录用户的用户名和IP。首先用last -n 5 去除最近五个登录用户的所有信息,用户名和IP分别在第一列和第三列。
last -n 5 | awk '{print $1 "\t" $3}'
- 示例:/etc/passwd 文件第三个字段为 UID,对 UID 小于 10 的数据进行处理。
$ cat /etc/passwd | awk 'BEGIN {FS=":"} $3 < 10 {print $1 "\t " $3}'
awk 变量:
变量名称 代表意义 NF 每一行拥有的字段总数 NR 目前所处理的是第几行数据 FS 目前的分隔字符,默认是空格键 - 示例:显示正在处理的行号以及每一行有多少字段
$ last -n 5 | awk '{print $1 "\t lines: " NR "\t columns: " NF}'
- 示例:取出最近五个登录用户的用户名和IP。首先用last -n 5 去除最近五个登录用户的所有信息,用户名和IP分别在第一列和第三列。
2.用过vim编辑器?
vim编辑器一般是三个模式:
- 一般指令模式:VIM的默认模式,可以用于移动游标来查看内容;
- 编辑模式:按下“i”等按键之后进入,可以对文本进行编辑;
- 指令模式:按下":"之后,用于保存退出等操作;
3.对文本进行分组并统计每个值出现的次数?
(1) grep+wc统计某个字符出现的次数
grep -o '404' nginx.conf | wc -l输出4grep -o '404\|8081' nginx.conf | wc -l输出5
(2) 统计文件中某个字符出现的次数
从某行取出分割的串
cat check_info.log.2017-09-20 | awk -F '(txt=|&client)' '{print $2}'
cat读取当前文件;awk -F 进行分割字符,并打印第二列的字符;在这里 ‘(txt=|&client)’是分隔符,它是一个正则表达式。
sdate=2017-09-20 23:59:32&com.ford.fordmobile_id=x
之后排序
cat check_info.log.2017-09-20 | awk -F '(txt=|&client)' '{print $2}'|sort
之后统计数量与去重
cat check_info.log.2017-09-20 | awk -F '(txt=|&client)' '{print $2}'| sort | uniq -c
uniq -c 中的-c 代表在每列旁边显示该行重复出现的次数
之后再按重复次数排序
cat check_info.log.2017-09-20 | awk -F '(txt=|&client)' '{print $2}'| sort | uniq -c | sort -nr
sort -n 按照数值的大小排序;-r按照相反顺序
最后将结果输出到文件中
cat check_info.log.2017-09-20 | awk -F '(txt=|&client)' '{print $2}'| sort | uniq -c | sort -nr > testfile
面试真题:
对第二列进行group,得到每个值出现次数。
123|weixin|314
45|zfb|321
12|weixin|14
先将这些写到一个test.log文件当中。
cat test.log | awk -F '|' 'print $2' | sort | uniq -c | sort -nr > res.log
4.Linux命令下查看进程占据的端口
ps命令详解
ps命令
是用来显示所有进程的状态的
- ef是用标准的格式显示进程的
- aux是用BSD的格式来显示进程的
grep命令详解
结合grep 命令,grep就是使用正则表达式搜索文本,并把匹配的行打印出来。
例子:搜索一个进程比如httpd
第一步,使用ps命令结合管道符 | 查询到进程的PID。查询进程关键字为httpd,找到进程的PID号。
ps -aux | grep [name]
第二步:根据PID号,使用netstat命令查询端口占用
netstat命令详解
netstat用于显示与IP、TCP、UDP和ICMP协议相关的统计数据,一般用于校验本机各端口的网络连接情况。
常见参数为:
- -a 显示所有连接和监听端口;
- -t 仅显示tcp相关选项;
- -u仅显示udp相关选项;
- -n 以数字形式显示地址和端口号;
- -l仅列出有在Listen(监听)的服务状态;
- -p显示建立相关链接的程序名 pid号;
- -c每隔一个固定时间,执行该netst命令
netstat -nap | grep 'PID号'
5.Linux命令查看某个进程下的线程数量
top查看实时的进程数
显示CPU占用状态;显示内存使用率
可以查看某个进程下的所有线程数量。
top -Hp pid
6.linux下命令查看TCP连接数即参数为t
(1) 统计httpd协议连接数
ps -aux | grep httpd | wc -l
(2) 统计80端口连接数
netstat -nat | grep -i '80' | wc-l
其中t是tcp连接
(3) 统计已连接上的 状态为’established’
netstat -na | grep ESTABLISHED | wc -l
(4) 查看哪个IP地址连接最多,将其封了
netstat -na | grep ESTABLISHED | awk 'print $5' | awk -F ':' 'print $1' | sort | uniq -c | sort -nr
7.linux下如何定位线上CPU过高的问题
A. top命令找到CPU利用率最高的进程(原理:方法是由线程执行的,线程是在进程底下的,找到进程下cpu最高的线程就能定位到方法)-默认按cpu使用率排序 找到其pid号;
B.之后通过top -Hp pid号,找到该进程下哪个线程的cpu使用情况
C. 通过top命令定位到cpu占用率较高的线程之后,继续使用jstack pid
命令查看当前java进程的堆栈状态 jstack pid > p.txt 用哪个jstack导出线程的dump;
D. 把刚刚的pid线程号转成16进制 printf “%x \n” 40437
E. 到刚刚导出的p.txt里面检索定位;
8.linux下如何定位线上OOM的问题
A.确定JVM的内存空间是否分配过小;
jmap -heap pid
可以看出新生代、老年代的空间大小和使用情况;
B.找到最耗费内存对象
jmap -histo:live pId | more
可以看出存活对象的大小信息,找到耗费内存最大的那个对象;
C.确定资源是否耗尽
ptreenetstat
转载地址:https://codingchaozhang.blog.csdn.net/article/details/115646305 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!