Linux

一、Linux的体系结构

  • 体系结构主要分为用户态(用户上层活动)和内核态
  • 内核:本质是一段管理计算机硬件设备的程序
  • 系统调用:内核的访问接口,是一种不能再简化的操作
  • 公用函数库:系统调用的组合拳
  • Shell:命令解释器,可编程

查看支持的shell版本:echo $SHELL; cat /etc/shells; 修改shell版本:chsh -s “shell路径”

man 2 syscalls:查看所有系统调用的接口(man 2 意思是系统调用,man 3 意思是查看公共库函数)

man 2 acct:查看系统调用接口acct

二、查找特定文件

find

  • 语法:find path [options] params
  • 作用:在指定目录下查找文件

eg:

find -name "xxx.py";返回xxx.py所在的路径(会从当前目录递归寻找目标文件)

find / -name "xxx.py";全局搜索xxx.py,Linux的根目录为"/"

find ~ -name "x*";查找当前用户home目录下所有以x开头的文件

find ~ -iname "x*";查找当前用户home目录下所有以x开头/X开头的文件,-iname表示不区分大小写

man find;查看find指令的用法

三、检索文件内容

grep

  • 语法:grep [options] pattern file
  • 全称:Global Regular Expression Print
  • 作用:查找文件里符合条件的字符串

eg:

grep "xxx" "target*";从target开头的文件中找到所有包含"xxx"的行。如果不指定文件,则会从输入内容里搜索。

管道操作符 |

  • 可将指令连接起来,前一个指令的输出作为后一个指令的输入

eg:

find ~ | grep "target";效果同find ~ -name "target*";其中find ~ 会列出当前用户home目录下的所有目录及文件

grep "partial\[true\]" a.log;查找a.log里面partial为true的行

grep "partial\[true\]" a.log | grep -o "engine\[[0-9a-z]*\]";返回a.log里面partial为true的行里engine为数字和字母的信息,grep -o 筛选出符合正则条件的项

ps -ef | grep tomcat;过滤出跟tomcat相关的进程信息

ps -ef | grep tomcat | grep -v "grep";过滤出跟tomcat相关但是又跟grep不相关的进程信息,grep -v 过滤掉包含相关字符串的项

使用管道注意的要点:

  • 只处理前一个命令正确输出,不处理错误输出
  • 右边命令必须能够接收标准输入流,否则传递过程中数据会被抛弃
  • 常用支持管道的命令:sed,awk,grep,cut,head,top,less,more,wc,join,sort,split等

四、对日志内容做统计

awk

  • 语法:awk [options] 'cmd' file (可传多个文件,空格隔开)
  • 一次读取一行文本,按输入分隔符进行切片,切成多个组成部分
  • 将切片直接保存在内建的变量中,$1,$2...($0表示行的全部)
  • 支持对单个切片的判断,支持循环判断,默认分隔符为空格

eg:

awk '{print $1,$4}' a.log;输出a.log中第一个切片和第4个切片的内容,如果a.log每一行是以空格隔开,则即是输出a.log中第一列和第四列的内容。

awk '$1=="tcp" && $2==1{print $0}' a.log;输出a.log中第一个切片为"tcp",第二个切片为1的所有的行

awk '($1=="tcp" && $2==1) || NR==1 {print $0}' a.log;在上一句的基础上输出加上表头,NR==1表示第一行,默认以换行符作为分隔符

awk -F ',' '{pring $2}' b.log;指定每一行以","作为切片的分隔符,并输出每一行第二个切片内容,-F 指定分隔符

grep "partial\[true\]" a.log | grep -o "engine\[[0-9a-z]*\]" | awk '{enginearr[$1]++}END{for(i in enginearr)print i "\t" enginearr[i]}';(enginearr可自由命名)结果会输出两列,第一列是满足条件的engine,第二列是engine对应的次数

五、批量替换文件内容

sed

  • 语法:sed [option] 'sed command' filename
  • 全名stream editor,流编辑器
  • 适合用于对文本的行内容进行处理

eg:

sed 's/^Str/String/' replace.txt;将replace.txt内容里每一行中开头的Str替换成String并输出,s表示将要进行字符串操作,默认情况下,sed命令只是将替换后的内容输出,并不会真正修改replace.txt

sed -i 's/^Str/String/' replace.txt;将replace.txt里每一行中开头的Str替换成String,直接修改replace.txt,-i 表示修改原文件内容

sed -i 's/\.$/\;/' repalce.txt;将replace.txt里每一行中末尾的"."替换成";"

sed -i 's/xx/vv/' repalce.txt;将replace.txt里每一行中的"xx"替换成"vv",只会替换每一行中第一次出现的"xx"

sed -i 's/xx/vv/g' repalce.txt;将replace.txt里每一行中的"xx"替换成"vv",g 表示全文替换

sed -i '/^ *$/d' replace.txt;删除replace.txt里的空行

sed -i '/xxx/d' replace.txt;删除replace.txt里包含"xxx"的行

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值