1.Linux的体系结构
2.Shell:命令解释器,可编程
没有图形文件之前,shell充当用户界面
常用指令(重要)
ls
cat 查看文件
less 查看文件
more 查看文件
tail 查看文件
vi 编辑文件
vim 编辑文件,更为流行
ps -ef
tail
查看占用的端口并删除(重要)
1.使用cmd查看占用端口进程,命令:netstat -ano | findstr 端口号
2.使用命令关闭:taskkill -PID 进程号 -F
3.查找特定文件?
find指令
在指定目录下查找文件
find -name "file.java"
全局搜索文件
find / -name "file.java"
查找所有以fil开头的文件 模糊查找文件
find ~ -name "fil*"
~ :就是进入home目录
*:就是通配符的意思
同时忽略大小写,不区分大小写
find ~ -iname "fil*"
-:在-name中加上i,即iname
4.检索文件内容?
grep指令
grep:查找文件里符合条件的字符串
查找文件内容包含”AAA“以 BBB开头的文件
grep “AAA” BBB*
只会帅选出目标字符串所在的行
实战:
管道操作符|
可将指令连接起来,前一个指令的输出作为后一个指令的输入
find ~ | grep "target"
也就是先查找所有文件,然后在结果集中查找包含target的字段
注意:
1、只处理前一个命令正确输出,不处理错误输出
2、右边命令必须能够接受标准输入流,否则传递过程中数据会被摒弃
3、sed,awk,grep,cut,head,top,less,more,wc.join,sort,split等
find -dwdwwdw | grep “abc” 前一个命令错误,后面的grep就无效了!
查找日志文件中指定字符串
在bsc-data.info.log日志中查找包含 "partire[true]"字符串的日志记录
grep "partire\[true\]" bsc-data.info.log
可以找到多个,但是每个日志打印的东西太多了,比如只想知道这次日志的用户openid是多少,一直用户的openid格式
是useropenid[dwu8u982289e28] []里面是字符加数字,则可以用如下的方法来查找
-o 帅选出符合正则表达式的内容
grep "partire\[true\]" bsc-data.info.log | grep -o 'useropenid\[[0-9a-z]*\]'
查询某一个进程
比如查找tomcat进程
ps -ef | grep tomcat 这回把自己查询的进程也列出来
ps -ef | grep tomcat | grep -v "grep" 过滤包含grep字符串 这样就只找出tomcat的进程啦!
-v就是过滤相关字符串的内容
5.对文件内容做统计
awk
一次读取一行文本,按输入分隔符进行切片,切成多个组成部分!
将切片直接保存在内奸的变量中,$1$2...($0表示行的全部)
支持对单个切片的判断,支持循环判断,默认分隔符为空格
帅选出第一列和第四列的数据:
帅选出某些类的数据
条件帅选出某些列的数据
帅选出第一列是tcp,第二列等于1的数据
显示出表头
想要同时显示出表头 加上 NR==1
自定义分隔符
awk默认使用【空格】将数据分开来识别的,但我们也可以使用别的
将逗号作为分隔符!
-F 表示以什么符号作为分隔符去分割行内容
统计日志中对不同数据进行分组
分析语句:
awk '{enginearr[$1]++}END{for(i in enginearr)print i "\t" enginearr[i]}'
end 之前表示一旦出现相同的值就++
end后表示扫描结束后做什么 遍历enginearr数组,遍历打印其值
6.批量替换文档内容
sed
流编辑器
适合用于对文本的行内容进行处理
将str改成string
其中 ’s/Str/String/‘中的s表示字符串操作,表示以Str开头,String表示替换成的字符串
sed操作是将修改后的内容输出到终端,不会修改文件本身的内容,若果要修改,必须加上【-i】
将【.】结尾改成【;】
其中【\】是转义的意思,因为【.】和【;】都是特殊字符串,需要转义,$表示以什么什么结尾
全文替换
g表示全部替换,没有 g就是只替换一次
删除空行
^表示开头,就是以空格开头,*是通配符,$就是结尾的意思,d表示删除