AWK指定多个空格作为分隔符

  在查看nginx日志里被get的目录时,使用AWK命令指定多个分隔符可以解决问题,命令如下:   awk -F'(GET )|[ ]+' '{print $7}' /var/log/nginx/access.log  | sort -nr | uniq -c | sort -n | tail   对应的示例输出结果如下,   530 /wp-includes/js/jquery/jquery-migrate.min.js?ver=1.4.1     544 /wp-content/plugins/sidebar-login/assets/css/sidebar-login.css?ver=2.7.3     595 /wp-content/themes/boston/assets/fonts/Norwester-Regular.ttf     850 /wp-content/themes/boston/assets/fonts/Norwester-Regular.woff     917 /robots.txt    3851 /wp-admin/admin-ajax.php    4632 /xmlrpc.php    4990 /   27450 /wp-login.php   37397 /wp-includes/js/wp-emoji-release.min.js?ver=4.6.1  

Continue Reading

linux ACL权限的设置

对于文件的权限,简单的用命令chmod设定,在允许特定用户访问的时候,显得不够精细。   举个例子,目录/var/www/download的权限设定位755,属主用户是pc,属组也是pc,如下图, 现在此目录需要配置在nginx服务器上用于网站下载,如何设定目录权限???   问题分析: 1  nginx进程的启动用户是nginx,所以需要增加用户nginx对目录download以及子目录的读访问权限 2  目录download新增加的文件或文件夹,nginx用户也应该继承读权限 问题解决: setfacl参数解释, -m : 修改ACL权限 -R :  递归目录下的所有子目录及文件。   在目录download下创建个新文件并查看nginx用户是否有读权限,   另外,删除目录所有ACL权限使用如下命令  setfacl -R -b /var/www/download/      

Continue Reading

du命令统计指定层级目录大小

    有时候我们在实际工作中,如裁剪APP包大小的时候,需要检查各个层级目录的总大小,这样可以针对占用空间较大的目录做裁剪。     在Linux中统计指定层级的目录大小可以用du命令,来个实际例子,下面的命令可以统计Linux的etc目录的第一级目录按大小升序排列前9位, [root@openresty ~]# du -m –max-depth=1  /etc/ | sort -n | tail 1    /etc/X11 1    /etc/xdg 1    /etc/xinetd.d 1    /etc/xml 1    /etc/yum 1    /etc/yum.repos.d 4    /etc/pki 9    /etc/gconf 21    /etc/selinux 40    /etc/  

Continue Reading

AWK高级用法之打印匹配行的上一行

    最近对数据处理很感兴趣,一直在研究Linux三剑客:grep AWK sed ,下面举个实际工作中遇到的一个小实例,联用三大文本处理剑客。   已知table.txt文件,cat查看文件内容如下,其实也就是我查询数据库中部分表的状态。   [pc@glusterfs-srv-01 ~]$ cat table.txt   *************************** 15. row ***************************            Name: procs_priv          Engine: MyISAM         Version: 10      Row_format: Fixed            Rows: 0  Avg_row_length: 0     Data_length: 0 Max_data_length: 239253730204057599    Index_length: 4096       Data_free: 0  Auto_increment: NULL     Create_time: 2016-09-19 01:38:11     Update_time: 2016-09-19…

Continue Reading

Shell重定向&>file、2>&1、1>&2的区别

        在UNIX/Linux系统中,每个打开的文件都有系统赋予的一个文件描述字,这是个小整数。一个文件被打开后,用户可以直接用这个描述字来引用对应的文件。系统为每个进程自动打开三个标准文件(即标准输入、标准输出和标准错误输出),其文件描述字分别为0,1和2。   shell上: 0表示标准输入 1表示标准输出 2表示标准错误输出 > 默认为标准输出重定向,与 1> 相同 2>&1 意思是把 标准错误输出 重定向到 标准输出. &>file 意思是把 标准输出 和 标准错误输出 都重定向到文件file中   用例子说话: 1. grep da * 1>&2 2. rm -f $(find / -name core) &> /dev/null 上面两例中的 & 如何理解,&不是放到后台执行吗?   牛解:   1.&>file或n>&m均是一个独立的重定向符号,不要分开来理解。   2.明确文件和文件描述符的区别。   3.&>file表示重定向标准输出和错误到文件 例如: rm -f $(find /…

Continue Reading

shell之too many arguments的解决方法

    新手在编写脚本时候,在做字符比对容易出现“too many arguments”报错,比如下面的代码: [pc@S5 Desktop]$ [ -n `ps aux | grep sshd` ] && echo test code bash: [: too many arguments 解决方法一: [pc@S5 Desktop]$ [[ -n `ps aux | grep sshd` ] ] && echo test code 解决方法二: [pc@S5 Desktop]$ [ -n ”`ps aux | grep sshd`“ ] && echo test code 我一般都用第二种方法,对变量加上双引号容错性强

Continue Reading

sed删除行首行尾的空格和Tab

在Linux下处理一些文本字符串时候,往往会遇到行首行末一些空格和tab干扰最终处理结果,现留一手供以后不时之需。   1  sed去除行首空格和tab 命令:  sed -e 's/^[ \t]*//g' file 说明:  ^号代表匹配行的开头,中括号里包含空格和tab字符集,*号代表中括号里的字符集出现0次或多次   2  sed去除行末空格和tab 命令:  sed -e 's/[ \t]*$//g' file 说明:  $号匹配在行尾出现的前面提到的字符集   此外,可以合并两个命令一次性去除行首、行末的空格和tab 命令:  sed  -e 's/^[ \t]*//g’  -e ‘s/[ \t]*$//g' file  

Continue Reading

lsof命令详解

Lsof是遵从Unix哲学的典范,它只完成一个功能,并且做的相当完美——它可以列出某个进程打开的所有文件信息。打开的文件可能是普通的文件、目录、NFS文件、块文件、字符文件、共享库、常规管道、命名管道、符号链接、Socket流、网络Socket、UNIX域Socket,以及其它更多类型。因为“一切皆文件”乃为Unix系统的重要哲学思想之一,因此可以想象lsof命令的重要地位。 lsof [options] filename lsof  /path/to/somefile:显示打开指定文件的所有进程之列表 lsof -c string:显示其COMMAND列中包含指定字符(string)的进程所有打开的文件;此选项可以重复使用,以指定多个模式; lsof -p PID:查看该进程打开了哪些文件;进程号前可以使用脱字符“^”取反; lsof -u USERNAME:显示指定用户的进程打开的文件;用户名前可以使用脱字符“^”取反,如“lsof -u ^root”则用于显示非root用户打开的所有文件; lsof -g GID:显示归属gid的进程情况 lsof +d /DIR/:显示指定目录下被进程打开的文件 lsof +D /DIR/:基本功能同上,但lsof会对指定目录进行递归查找,注意这个参数要比grep版本慢: lsof -a:按“与”组合多个条件,如lsof -a -c apache -u apache lsof -N:列出所有NFS(网络文件系统)文件 lsof -d FD:显示指定文件描述符的相关进程;也可以为描述符指定一个范围,如0-2表示0,1,2三个文件描述符;另外,-d还支持其它很多特殊值,如:     mem: 列出所有内存映射文件;     mmap:显示所有内存映射设备;     txt:列出所有加载在内存中并正在执行的进程,包含code和data;     cwd:正在访问当前目录的进程列表; lsof -n:不反解IP至HOSTNAME lsof -i:用以显示符合条件的进程情况 lsof -i[46] [protocol][@hostname|hostaddr][:service|port]    …

Continue Reading

awk命令详解

一、简介     Linux下必须掌握的三大文本处理工具: 1  grep: 文本过滤器 2  sed:流编辑器 3  awk: 报告生成器 AWK是以 a.k.a. Aho, Kernighan and Weinberger三位开发者命名,它是个强大的报告生成器,只有你没想到的,没有它做不到的。  基本用法: # awk [options] 'script' file1 file2, … # awk [options] 'PATTERN { action }' file1 file2, …     print, printf 二、具体用法 1. 模式和操作 awk脚本是由模式和操作组成的: pattern {action} 如$ awk '/root/' test,或$ awk '$3 < 100' test。 两者是可选的,如果没有模式,则action应用到全部记录,如果没有action,则输出匹配全部记录。默认情况下,每一个输入行都是一条记录,但用户可通过RS变量指定不同的分隔符进行分隔。 1.1….

Continue Reading

grep命令详解

grep三大家族:grep egrep fgrep 一、基本用法 grep [options] PATTERN [FILE…]     -i ignore case     –color     -v reverse     -o only print match string     -c  计算找到行的数目     -w  只匹配单词     -q  安静模式,不输出任何信息,即使是检测到错误,而是立即返回状态0(如果匹配到的话) TIP: alias grep='grep –color'   二、正则表达式 RegExp:  regular expression 正则表达式     ^ 表示一行的开头。如:/^#/ 以#开头的匹配。     $ 表示一行的结尾。如:/}$/ 以}结尾的匹配。     \<…

Continue Reading