一、Linux进程相关命令
ps -ef | grep java
pstree -p 21239查看进程21239所有的子进程和线程。
pwdx 21239查看进程21239程序命令的目录。
二、grep命令
1、日志查找方法,可以用通配符查某台主机上的所有服务器
grep "关键字" /wls/applogs/custom-*/error.log
2、grep '关键字' error.log:在error.log中搜索'关键字'
3、grep -C10 '关键字' error.log:显示关键字前后10行记录
4、grep '关键字' error.log? -10[调整此参数,至能看到具体报错原因]
1、less error.log:对文件或其它输出进行分页显示
2、less error.log
/ 输入关键字,从文件头往后查,按n从前往后查找下一个关键字,按N从后往前查找下一个关键字
? Shift+G到文件尾,输入关键字,从文件尾往前查,按n从后往前查找下一个关键字,按N从前往后查找下一个关键字
3、less -N error.log
在显示error.log的内容时,让其显示行号
4、less -Mp '2015-06-13' error.log
查看某一天的日志是从哪一行开始的
5、less -Mp '00:11:41' error.log
查看error.log从00:11:41开始的日志,同时显法读取文件的百分比、行号及总行数
less工具也是对文件或其它输出进行分页显示的工具,应该说是linux正统查看文件内容的工具,功能极其强大;由于less的内容太多,下面把最常用的介绍一下。
1.less的语法格式
less [参数] 文件
常用参数
-c 从顶部(从上到下)刷新屏幕,并显示文件内容。而不是通过底部滚动完成刷新;
-f 强制打开文件,二进制文件显示时,不提示警告;
-i 搜索时忽略大小写;除非搜索串中包含大写字母;
-I 搜索时忽略大小写,除非搜索串中包含小写字母;
-m 显示读取文件的百分比;
-M 显法读取文件的百分比、行号及总行数;
-N 在每行前输出行号;
-p pattern 搜索pattern;比如在/etc/profile搜索单词MAIL,就用 less -p MAIL /etc/profile
-s 把连续多个空白行作为一个空白行显示;
-Q 在终端下不响铃。
2.less的动作命令
进入less后,我们得学几个动作,这样更方便 我们查阅文件内容。
回车键 向下移动一行;
y 向上移动一行;
空格键 向下滚动一屏;
b 向上滚动一屏;
d 向下滚动半屏;
h less的帮助;
u 向上洋动半屏;
w 可以指定显示哪行开始显示,是从指定数字的下一行显示;比如指定的是6,那就从第7行显示;
g 跳到第一行;
G 跳到最后一行;
p n% 跳到n%,比如 10%,也就是说比整个文件内容的10%处开始显示;
/pattern 搜索pattern ,比如 /MAIL表示在文件中搜索MAIL单词;
v 调用vi编辑器;
q 退出less
n 下一关键字
N 反向下一关键字
!command 调用SHELL,可以运行命令;比如!ls 显示当前列当前目录下的所有文件
五、cat 命令的用法
这个命令常用来显示文件内容,或者将几个文件连接起来显示,或者从标准输入读取内容并显示,它常与重定向符号配合使用。
建议大家掌握这个常用的linux命令,在显示文件内容或结合wc命令统计文件行数时,经常用得到。
cat主要有三大功能:
1.一次显示整个文件:cat filename
2.从键盘创建一个文件:cat > filename 只能创建新文件,不能编辑已有文件.
3.将几个文件合并为一个文件:cat file1 file2 > file
命令参数:
-n, --number 对输出的所有行编号,由1开始对所有输出的行数编号
代码示例:
1、cat log2012.log
2、cat -n log2012.log log2013.log
把 log2012.log 的文件内容加上行号后输入 log2013.log 这个文件里
3、cat -b log2012.log log2013.log log.log
把 log2012.log 和 log2013.log 的文件内容加上行号(空白行不加)之后将内容附加到 log.log 里。
4、cat -n log2012.log > log.log
把 log2012.log 的文件内容加上行号后输入 log.log 这个文件里
六、AWK 简明教程
1、起步上台:
我从netstat命令中提取了如下信息作为用例:
$ cat netstat.txt
下面是最简单最常用的awk示例,其输出第1列和第4例,
#其中单引号中的被大括号括着的就是awk的语句,注意,其只能被单引号包含。
#其中的$1..$n表示第几例。注:$0表示整个行。
$ awk '{print $1, $4}' netstat.txt
我们再来看看awk的格式化输出,和C语言的printf没什么两样:
$ awk '{printf "%-8s %-8s %-8s %-18s %-22s %-15s\n",$1,$2,$3,$4,$5,$6}' netstat.txt
2、脱掉外套
过滤记录
我们再来看看如何过滤记录(下面过滤条件为:第三列的值为0 && 第6列的值为LISTEN)
$ awk '$3==0 && $6=="LISTEN" ' netstat.txt
其中的“==”为比较运算符。其他比较运算符:!=, >, <, >=, <=
我们来看看各种过滤记录的方式:
$ awk ' $3>0 {print $0}' netstat.txt
如果我们需要表头的话,我们可以引入内建变量NR:
$ awk '$3==0 && $6=="LISTEN" || NR==1 ' netstat.txt
再加上格式化输出:
$ awk '$3==0 && $6=="LISTEN" || NR==1 {printf "%-20s %-20s %s\n",$4,$5,$6}' netstat.txt
内建变量
说到了内建变量,我们可以来看看awk的一些内建变量:
$0 当前记录(这个变量中存放着整个行的内容)
$1~$n 当前记录的第n个字段,字段间由FS分隔
FS 输入字段分隔符 默认是空格或Tab
NF 当前记录中的字段个数,就是有多少列
NR 已经读出的记录数,就是行号,从1开始,如果有多个文件话,这个值也是不断累加中。
怎么使用呢,比如:我们如果要输出行号:
$ awk '$3==0 && $6=="ESTABLISHED" || NR==1 {printf "%02s %s %-20s %-20s %s\n",NR, FNR, $4,$5,$6}' netstat.txt
指定分隔符
$ awk 'BEGIN{FS=":"} {print $1,$3,$6}' /etc/passwd
上面的命令也等价于:(-F的意思就是指定分隔符)
$ awk -F: '{print $1,$3,$6}' /etc/passwd
注:如果你要指定多个分隔符,你可以这样来:
awk -F '[;:]'
再来看一个以\t作为分隔符输出的例子(下面使用了/etc/passwd文件,这个文件是以:分隔的):
$ awk -F: '{print $1,$3,$6}' OFS="\t" /etc/passwd
3、脱掉衬衫
字符串匹配
我们再来看几个字符串匹配的示例:
$ awk '$6 ~ /FIN/ || NR==1 {print NR,$4,$5,$6}' OFS="\t" netstat.txt
$ awk '$6 ~ /WAIT/ || NR==1 {print NR,$4,$5,$6}' OFS="\t" netstat.txt
上面的第一个示例匹配FIN状态, 第二个示例匹配WAIT字样的状态。其实 ~ 表示模式开始。/ /中是模式。这就是一个正则表达式的匹配。
其实awk可以像grep一样的去匹配第一行,就像这样:
$ awk '/LISTEN/' netstat.txt
我们可以使用 “/FIN|TIME/” 来匹配 FIN 或者 TIME :
$ awk '$6 ~ /FIN|TIME/ || NR==1 {print NR,$4,$5,$6}' OFS="\t" netstat.txt
再来看看模式取反的例子:
$ awk '$6 !~ /WAIT/ || NR==1 {print NR,$4,$5,$6}' OFS="\t" netstat.txt
或是:
$ awk '!/WAIT/' netstat.txt
折分文件
awk拆分文件很简单,使用重定向就好了。下面这个例子,是按第6例分隔文件,相当的简单(其中的NR!=1表示不处理表头)。
$ awk 'NR!=1{print > $6}' netstat.txt
你也可以把指定的列输出到文件:
$ awk 'NR!=1{print $4,$5 > $6}' netstat.txt
统计
下面的命令计算所有的C文件,CPP文件和H文件的文件大小总和。
$ ls -l *.cpp *.c *.h | awk '{sum+=$5} END {print sum}'
几个花活
最后,我们再来看几个小例子:
#从file文件中找出长度大于80的行
awk 'length>80' file
#按连接数查看客户端IP
netstat -ntu | awk '{print $5}' | cut -d: -f1 | sort | uniq -c | sort -nr
#打印99乘法表
seq 9 | sed 'H;g' | awk -v RS='' '{for(i=1;i<=NF;i++)printf("%dx%d=%d%s", i, NR, i*NR, i==NR?"\n":"\t")}'
相关推荐
以下是一些关于Linux常用命令的详细说明: 1. **pwd**:`pwd`(Print Working Directory)命令用于显示当前工作目录,即用户当前所在的目录路径。 2. **cd**:`cd`命令用于切换目录。例如,`cd /`进入根目录,`cd ...
### Linux常用命令详解 #### 一、文件管理 1. **ls**:此命令用于列出当前目录中的文件和子目录。通过使用不同的选项,可以改变其输出格式。 - `-l`:使用长格式列表输出,包括文件权限、拥有者、组、大小等详细...
LINUX常用命令全集 LINUX常用命令全集 LINUX常用命令全集 LINUX常用命令全集 LINUX常用命令全集 LINUX常用命令全集 LINUX常用命令全集 LINUX常用命令全集 LINUX常用命令全集 LINUX常用命令全集 LINUX常用命令全集 ...
"最全Linux常用命令大全-linux常用命令全集" 本文档对 Linux 中最常用的命令进行了详细的总结和说明,涵盖了文件和目录管理、磁盘空间管理等方面的命令。 文件和目录管理命令 1. `pwd` 命令:显示当前目录 `pwd`...
### Linux常用命令详解知识点 #### 一、命令格式与通配符 - **命令格式**: - **命令**:指定要执行的操作。 - **选项**:改变命令的行为方式,通常以`-`开头,多个选项可以用空格或直接连接的方式给出。 - **...
linux常用命令大全 1. **ls**:列出目录内容 2. **cd**:改变当前目录 3. **pwd**:显示当前工作目录 4. **mkdir**:创建目录 5. **rmdir**:删除空目录 6. **cp**:复制文件或目录 7. **mv**:移动或重命名文件或...