Linux常用脚本背书
日志筛选
查看日志:筛选‘cost=任意数组3,6’,-P表示正则,o表示只显示匹配的项,其他不显示。 awk 按照=号分割,显示第2个字符,然后排序。
cat log/log_debug.log | grep -Po 'cost=\d{3,6}' | awk -F '=' '{print $2}'|sort -n
查看日志:筛选cost=2333任意3,到6位的数字。-P表示正则表达式,-C表示显示上下10行。
cat log/log_debug.log | grep -P -C 10 'cost=\d{3,6}'
查看日志:正则匹配所有异常信息,排序,去重,排序并统计,-n依照数值的大小排序;r表示倒序
cat log.log |grep -Po "[^ \(]*Exception"|sort|uniq -c|sort -nr
sort -n大小顺序排序,-r反序
cat log/log_debug.log |grep -Po "[^ \(]*Exception"|sort|uniq -c|sort -nr
统计分析
统计分析:统计每个单词出现的总次数(uniq去重, sort排序)
cat test.txt|awk '{print $0}' | sort -nr | uniq -c | sort -k1 -nr
grep 'java.lang.Thread.State' | sort -n|uniq -c| sort -nr
cat app.log |grep '关键字' |awk '{print $7}'|awk -F '=' '{print $2}'|awk -F ',' '{print $1}'|uniq |wc
ls wc
ls -l |grep ^d //只看文件夹
ls -l |grep ^- //只看文件
wc -c test.txt //统计文件字节数
wc -l test.txt //统计行数
wc -w test.txt //统计单词数,与都好或者换行符为结束的
locate搜索文件
每次使用前先更新一下吧,不然真搜不到.我也是醉了
更新locate 命令/usr/libexec/locate.updatedb
locate 搜索关键字
ps
//只显示进程号
ps -C <过滤关键字> --no-header
>ps -C java --no-header
4016 ? 00:49:25 java
4091 ? 01:14:07 java
5540 ? 00:21:24 java
7215 ? 00:34:16 java
12568 ? 00:15:40 java
20784 ? 00:13:56 java
27604 ? 00:27:51 java
32712 ? 01:58:09 java
显示详情
ps -ef|grep 'java'
用户权限
增加用户:useradd -d /usr/username -m username
为用户增加密码:passwd username
新建工作组:groupadd groupname
将用户添加进工作组:usermod -G groupname username
删除用户:userdel username
修改文件所属用户组
chgrp -R 用户名 文件名
修改文件所属用户
chown [-R] 账号名称 文件/目录
-R表示递归目录下所有文件
修改用户权限与用户组可以直接一起改
chown [-R] 账号名称:组群 文件/目录
chown username:groupname file //修改file文件的用户组和用户
修改文件读写执行权限
文件权限分为三组,分别是user,group,others,那么我们可以用u,g,o分别代表三组,另外,a(all)代表全部,而权限属性即可用r,w,x三个字符来表示
chmod u/g/o/a +(加入)/-(除去)/=(设定) r/w/x 文件或者目录
chmod u=rwx,go=rx filed //用户拥有r读w写x执行权限, 用户组g和其他用户o拥有r,x权限
chmod u-x filed //撤销执行权限
drwxr-xr-x
解释:
d :第一位表示文件类型,d是目录文件、l是链接文件、-是普通文件、p是管道
rwx :第2-4位表示这个文件的属主拥有的权限。r是读、w是写、x是执行
r-x :第5-7位表示和这个文件属主所在同一个组的用户所具有的权限
r-x :第8-10位表示其他用户所具有的权限
rwx是固定顺序,没有则使用-表示. r-x 就是说没有w权限用-表示.
r:read就是读权限 --数字4表示
w:write就是写权限 --数字2表示
x:excute就是执行权限 --数字1表示
多文件搜索
查看当前目录下.conf文件结尾 的文件里面包含9040的文件.
find 目录 -name '*.*' |xargs grep '9040'
当前目录下
find -name '*.conf' |xargs grep '9040'
查看文件目录下多个文件中包含xxxx的文件
grep 'xxxx' 文件目录 -Rn
错误示范
ls | xargs grep ‘9040’
错误,ls列出来的是字符串,字符串在通过xargs赋值给grep 时报错了.
find就不一样,find返回的是一列一列的文件路径. 把一列一列的路径传递给grep
其他
查看用户列表
cat /etc/passwd
查看开放的所有端口
nmap 127.0.0.1
创建文件新姿势
创建一个test.txt文件
$ > test.txt
或者
$ touch test.txt