初探日志分析常用的linux命令
了解linux常用命令,有助于提升我们的生产力,提升工作效率,更快速地定位问题,当然也是为了更好地解决问题。这两天,趁着在家办公的时间,我把linux系统中常用的命令整理了一下,主要涉及到查找、查看,有几个命令平时共组经常用到,也有很多从来都没有过。
查看文件内容
cat
查看文件内容
语法:
cat fileName
拓展参数:
-A, --show-all 等效于 -vET
-b, --number-nonblank 带行号输出,对空白行不编号
-e 等效于 -vE,行尾增加$符
-E, --show-ends 效果同-e
-n, --number 对所有输出行进行编号,感觉和-b类似
-s, --squeeze-blank 当遇到有连续两行或两行以上的空白行,就代换为一行的空白行
-t 等效于 -vT
-T, --show-tabs 对制表符TAB 以^I显示
-u 忽略
-v, --show-nonprinting 使用^和M-符号,除了LFD和TAB
--help 获取帮助信息
--version 显示版本
tail
显示文件尾
语法:
tail [OPTION] fileName
扩展语法:
-c, --bytes=K 输出最后K个字节;或者,使用-c+K,从每个文件的第k个开始输出字节
-f, --follow[={name|descriptor}]
随着文件的增长输出附加数据,强制刷新;
-f, --follow,和--follow=描述符是等效的
-F 等效于 --follow=name --retry
-n, --lines=K 输出最后K行,而不是最后10行;
或者使用-n+K输出以Kth开头的行
--max-unchanged-stats=N
使用--follow=name,重新打开N次(默认5次)迭代后更改大小查看是 否已取消链接或重命名(这是旋转日志文件的常见情况)。
--pid=PID 组合 -f, 在进程 ID, PID 死掉后终止
-q, --quiet, --silent 从不输出给出文件名的头信息(文件名及路径)
--retry 持续尝试打开文件,即使它是或不可访问的, 当它后面跟随文件名时是非 常有效的, 例如,通过 --follow=name
-s, --sleep-interval=N 组合 -f, 循环睡眠N秒(默认 1.0) 。
通过inotify 和 --pid=P, 确保进程P在N秒内至少运行一次
-v, --verbose 总是输出文件头信息(文件名及路径)
--help 获取帮助信息
--version 查看版本信息
统计文件信息
wc
统计文件信息
语法:
wc [OPTION]
扩展参数:
-c, --bytes 统计字节数
-m, --chars 统计字符数
-l, --lines 统计行数
--files0-from=F 从指定的以NUL结尾的文件F中文件读取文件名输入;
如果文件F是 - 则从示例输入中读取文件名
-L, --max-line-length 打印最长行长度
-w, --words 打印字数
--help 获取帮助信息
--version 显示版本信息
查找检索
grep
字符串查找
语法:
grep [OPTION] PATTERN [fileName]
示例:grep-i'hello world'menu.h main.c
PATTERN默认以正则表达式解析
用grep -A,-B,-C 来查看after/before/around 行:
用法:
grep -[A|B|C] [行数] [fileName]
例如:
grep -A 10 -n 'KA06' int01bpoimp.java
就是在int01bpoimp.java中查找KA06并显示后面的10行,-n
的意思是显示文件行号
扩展参数
-s, --no-messages # 忽略错误信息
-v, --invert-match # 逆转结果,显示未匹配行
-V, --version, # 显示版本信息
--help # 获取帮助信息
-E、 --extended-regexp # PATTERN是一个扩展正则表达式(ERE)
-F、 --fixed-strings # PATTERN是一组换行分隔的固定字符串
-G、 --basic-regexp # PATTERN是一个基本正则表达式(BRE)
-P、 --perl-regexp # PATTERN是一个perl正则表达式
-e、 --regexp=PATTERN # 使用PATTERN进行匹配
-f、 --file=file # 从file获取匹配内容
-i、 --ignore-case # 忽略大小写区别
-w、 --word-regexp # 强制模式只匹配整个单词
-x、 --line-regexp # 强制模式只匹配整行
-z、 --null-data # 数据行以0字节结尾,而不是换行符
-n # 显示文件行号
进程相关
ps
用法:
ps [-aefls] [-u UID] [-p PID]
拓展参数
-a, --all # 显示所有用户进程
-e, --everyone # 显示所有用户进程,感觉和-a一样
-f, --full # 显示进程uids, ppids
-h, --help # 获取帮助信息
-l, --long # 显示 uids, ppids, pgids, winpids
-p, --process # 显示指定PID的进程信息
-s, --summary # 显示进程汇总信息
-u, --user # 显示uid的进程信息,需指定uid
-V, --version # 显示版本信息
-W, --windows # 显示窗口和cygwin进程
kill
向由PID或JOBSPEC标识的进程发送由SIGSPEC或SIGNUM命名的信号。如果SIGSPEC和SIGNUM都不存在,则假定为SIGTERM。
Kill是shell内置的,原因有两个:它允许使用job id而不是进程id,并且允许在达到可以创建的进程限制时终止进程。
用法:
kill [-s sigspec | -n signum | -sigspec] pid | jobspec ... or kill -l [sigspec]
参数
-s sig # sig是进程信号名称
-n sig # sig值进程信号号码
-l # 列出标识名;如果参数跟在“-l”后面,它们是假定为应列出其名称的信号号码
-L # 同-l
-u # 杀死指定用户进程,后跟进程uid
信号号码
# kill -l
1) SIGHUP 2) SIGINT 3) SIGQUIT 4) SIGILL 5) SIGTRAP
6) SIGABRT 7) SIGBUS 8) SIGFPE 9) SIGKILL 10) SIGUSR1
11) SIGSEGV 12) SIGUSR2 13) SIGPIPE 14) SIGALRM 15) SIGTERM
16) SIGSTKFLT 17) SIGCHLD 18) SIGCONT 19) SIGSTOP 20) SIGTSTP
21) SIGTTIN 22) SIGTTOU 23) SIGURG 24) SIGXCPU 25) SIGXFSZ
26) SIGVTALRM 27) SIGPROF 28) SIGWINCH 29) SIGIO 30) SIGPWR
31) SIGSYS 34) SIGRTMIN 35) SIGRTMIN+1 36) SIGRTMIN+2 37) SIGRTMIN+3
38) SIGRTMIN+4 39) SIGRTMIN+5 40) SIGRTMIN+6 41) SIGRTMIN+7 42) SIGRTMIN+8
43) SIGRTMIN+9 44) SIGRTMIN+10 45) SIGRTMIN+11 46) SIGRTMIN+12 47) SIGRTMIN+13
48) SIGRTMIN+14 49) SIGRTMIN+15 50) SIGRTMAX-14 51) SIGRTMAX-13 52) SIGRTMAX-12
53) SIGRTMAX-11 54) SIGRTMAX-10 55) SIGRTMAX-9 56) SIGRTMAX-8 57) SIGRTMAX-7
58) SIGRTMAX-6 59) SIGRTMAX-5 60) SIGRTMAX-4 61) SIGRTMAX-3 62) SIGRTMAX-2
63) SIGRTMAX-1 64) SIGRTMAX
不加任何参数直接执行 kill
命令,默认执行的是kill -15
常用信号
信号编号 | 信号名 | 含义 |
---|---|---|
0 | EXIT | 程序退出时收到该信息。 |
1 | HUP | 挂掉电话线或终端连接的挂起信号,这个信号也会造成某些进程在没有终止的情况下重新初始化。 |
2 | INT | 表示结束进程,但并不是强制性的,常用的 "Ctrl+C" 组合键发出就是一个 kill -2 的信号。 |
3 | QUIT | 退出。 |
9 | KILL | 杀死进程,即强制结束进程。 |
11 | SEGV | 段错误。 |
15 | TERM | 正常结束进程,是 kill 命令的默认信号。 |
其他利器
awk
linux下强大的文本分析工具,支持正则
用法:
awk[POSIX或GNU样式选项]-f progfile[--]文件...
awk[POSIX或GNU样式选项][--]'program'文件...
扩展参数
-f progfile --file=progfile
-F fs --field-separator=fs
-v var=val --assign=var=val
-m[fr] val
-O --optimize
-W compat --compat
-W copyleft --copyleft
-W copyright --copyright
-W dump-variables[=file] --dump-variables[=file]
-W exec=file --exec=file
-W gen-po --gen-po
-W help --help
-W lint[=fatal] --lint[=fatal]
-W lint-old --lint-old
-W non-decimal-data --non-decimal-data
-W profile[=file] --profile[=file]
-W posix --posix
-W re-interval --re-interval
-W source=program-text --source=program-text
-W traditional --traditional
-W usage --usage
-W use-lc-numeric --use-lc-numeric
-W version --version
curl
访问URL
语法
curl url
more
分页显示文件内容,Enter下一行,空格下一页,F下一屏,B上一屏,Q退出
语法:
more fileName
less
分页显示文件内容
less fileName
扩展参数:
SUMMARY OF LESS COMMANDS
Commands marked with * may be preceded by a number, N.
# 标有*的命令前面可以加一个数字N。
Notes in parentheses indicate the behavior if N is given.
# 括号中的注释表示给定N时的行为。
h H Display this help. # 显示帮助信息
q :q Q :Q ZZ Exit. # 退出
---------------------------------------------------------------------------
MOVING
# 光标移动
# 向前移动过一行或多行
e ^E j ^N CR * Forward one line (or N lines).
# 向后移动过一行或多行
y ^Y k ^K ^P * Backward one line (or N lines).
# 向前一屏或多行
f ^F ^V SPACE * Forward one window (or N lines).
# 向后一屏或多行
b ^B ESC-v * Backward one window (or N lines).
# 向后一屏并设置窗口为N
z * Forward one window (and set window to N).
# 向前一屏并设置窗口为N
w * Backward one window (and set window to N).
# 向前移动一个窗口,但不要在文件末尾停止
ESC-SPACE * Forward one window, but don't stop at end-of-file.
# 向前移动一个半窗口(并将半窗口设置为N)
d ^D * Forward one half-window (and set half-window to N).
# 向后移动一个半窗口(并将半窗口设置为N)
u ^U * Backward one half-window (and set half-window to N).
# 右箭头*左半屏幕宽度(或N个位置)。
ESC-) RightArrow * Left one half screen width (or N positions).
# 左箭头*右半屏幕宽度(或N个位置)。
ESC-( LeftArrow * Right one half screen width (or N positions).
# 一直向前;像“tail -f”。
F Forward forever; like "tail -f".
# 刷新屏幕
r ^R ^L Repaint screen.
# 刷新屏幕,丢弃缓冲输入。
R Repaint screen, discarding buffered input.
---------------------------------------------------
Default "window" is the screen height.
Default "half-window" is half of the screen height.
---------------------------------------------------------------------------
SEARCHING
# 向前搜索
/pattern * Search forward for (N-th) matching line.
# 向后搜索
?pattern * Search backward for (N-th) matching line.
# 重复上次搜索
n * Repeat previous search (for N-th occurrence).
# 反向重复上次搜索
N * Repeat previous search in reverse direction.
初探日志分析常用的linux命令的更多相关文章
- (转载)shell日志分析常用命令
shell日志分析常用命令总结 时间:2016-03-09 15:55:29来源:网络 导读:shell日志分析的常用命令,用于日志分析的shell脚本,统计日志中百度蜘蛛的抓取量.抓取最多的页面.抓 ...
- monkey测试工具与常用的linux命令
Monkey测试工具 说明:monkey是一个安卓自带的命令行工具,可以模拟用户向应用发起一定的伪随机事件.主要用于对app进行稳定性测试与压力测试. 实现:首先需要安装一个ADB工具,安装完之后,需 ...
- 每天一个linux命令(61):vi命令 /企业常用的linux命令清单
vi/vim 的使用 基本上 vi/vim 共分为三种模式,分别是一般模式.编辑模式与指令列命令模式. 这三种模式的作用分别是: 一般模式:以 vi 打开一个档案就直接进入一般模式了(这是默认的模式) ...
- 开发过程中常用的Linux命令
做Java开发好几年了,部署JavaWeb到服务器上,一般都选择Linux,Linux作为服务器真是不二之选,高性能,只要熟悉Linux,操作快捷,效率很高. 总结一下工作中常用的Linux命令备忘: ...
- java web项目在linux部署、启动,查看系统配置常用的linux命令总结
本文为博主原创,未经允许不得转载: 以下为在工作中常用的linux命令进行了总结,主要在项目安装及启动,及编辑部署文件时应用较多1.gz文件是一种压缩文件. 以·tar.gz为扩展名的是一种压缩文件, ...
- 20条最最常用的Linux命令讲解
玩过Linux的人都会知道,Linux中的命令的确是非常多,但是玩过Linux的人也从来不会因为Linux的命令如此之多而烦恼,因为我们只需要掌握我们最常用的命令就可以了.当然你也可以在使用时去找一下 ...
- 性能测试常用的linux命令
性能测试常用的linux命令 linux测试nginx64bitredhatlighttpd 查看日志 awk '$4 ~/^\[27\/Nov\/2008:15:2[0-5]/ {print ...
- 工作中常用的Linux命令:mkdir命令
本文链接:http://www.cnblogs.com/MartinChentf/p/6076075.html (转载请注明出处) 在Linux系统中,mkdir命令用来创建一个目录或一个级联目录. ...
- 工作中常用的Linux命令:crontab命令
本文链接:http://www.cnblogs.com/MartinChentf/p/6060252.html (转载请注明出处) crontab是一个用来设置.删除或显示供守护进程cron执行的定时 ...
随机推荐
- LaTeX技巧003:实现一个章标题
代码如下: \documentclass[11pt]{book} \usepackage{graphicx} \usepackage{CJKfntef} \usepackage{color} \mak ...
- BZOJ4710: [Jsoi2011]分特产 组合数学 容斥原理
题意:把M堆特产分给N个同学,要求每个同学至少分到一种特产,共有多少种分法? 把A个球分给B个人的分法种数:(插板法,假设A个球互不相同,依次插入,然后除以全排列去重) C(A,B+A) 把M堆特产分 ...
- Linux运维--14.Kolla部署OpenStack使用external MariaDB Galera Cluster
使用haproxy+keepalived实现Mariadb负载均衡 controller2: 10.100.2.52 haproxy+keepalived controller3: 10.100.2. ...
- python中的replace无法替换字符串
replace替换字符串的时候,需要重新赋值给变量,因为在python中字符串是不可变对象,因此在使用的时候我们必须重新赋值,就这么简单. z1=z1.replace('ddd','') 返回 ...
- python爬取连续一字板股票及当时日期数据【原创分享】
本篇为个人测试记录,记录爬取连续一字板的股票及当时日期. import tushare as ts import pandas as pd import time # 筛选一字板的策略 def gp_ ...
- linux添加新的环境变量
Linux下设置PYTHONPATH环境变量有三种方法:一种作用于当前终端,一种作用于当前用户,一种作用于所有用户. 1.作用于当前终端,直接当前终端输入命令 $ export PYTHONPATH= ...
- go语言 实现对称加密解密算法
package main import ( "bytes" "crypto/aes" "crypto/cipher" "crypt ...
- linux命令 mv
后缀--backup=<备份模式>:若需覆盖文件,则覆盖前先行备份: -b:当文件存在时,覆盖前,为其创建一个备份: -f:若目标文件或目录与现有的文件或目录重复,则直接覆盖现有的文件或目 ...
- 普通平衡树 lg3369
在多次学习splay后,我终于理解并码出了整份代码 参考了https://tiger0132.blog.luogu.org/slay-notes的博客 具体实现原理在上面这篇博客和百度中可以查到,接下 ...
- HDU1024 Max Sum Plus Plus(dp)
链接:http://acm.hdu.edu.cn/showproblem.php?pid=1024 #include<iostream> #include<vector> #i ...