1. tail
tail
命令的功能是查看文件内容的末尾几行,默认10行。这个命令在查看线上 log 时使用频率是最高的,其比较重要的参数选项如下:
-n : 其后接 数字N 表示指定显示末尾的 N 行
-f :追踪显示文件的更新,使用这个指令后终端会停驻在这里,等待文件更新再显示出新内容。通常用于查看日志,
持续显示新加入的内容,也可用 tailf 替代
2. zgrep
zgrep
的功能是在压缩文件中寻找匹配的正则表达式,用法和grep
命令近乎完全一致。这个命令存在的价值在于线上 log 的大小到达一定阈值的时候都会被压缩处理,这时候将其解压出来再过滤显然是不现实的。
另外zgrep/grep
默认是只过滤出带有匹配字符的那一行内容,这在排查线上问题的时候是非常不便的,因为我们通常需要错误 log 附近的其他 log 共同判断问题所在。这个需求可以通过指定 -C
参数实现,常用的命令组合如下:
过滤当前目录下所有压缩文件,找出带有关键字 error 的那一行log及其前后 10 行的内容
zgrep -niC10 error ./*
3. lsof
显示打开文件的列表,可用于查看端口占用 lsof -i :49172
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
idea 85040 nathan.yang 949u IPv4 0x592f1a341f736e8b 0t0 TCP localhost:49172 (LISTEN)
较重要的列信息的意义如下:
COMMAND:进程的名称
PID:进程标识符
USER:进程所有者
FD:文件描述符,应用程序通过文件描述符识别该文件
其参数列表如下:
参数 | 功能 |
---|---|
-a | 列出打开文件存在的进程 |
-c<进程名> | 列出指定进程所打开的文件 |
-g | 列出GID号进程详情 |
-d<文件号> | 列出占用该文件号的进程 |
+d<目录> | 列出目录下被打开的文件 |
+D<目录> | 递归列出目录下被打开的文件 |
-n<目录> | 列出使用NFS的文件 |
-i<条件> | 列出符合条件的进程(4、6、协议、:端口、 @ip ) |
-p<进程号> | 列出指定进程号所打开的文件 |
-u | 列出UID号进程详情 |
4. tar
tar
命令用于打包或者解压文件,需注意打包
是指将一大堆文件或目录变成一个总的文件,压缩
则是将一个大的文件通过一些压缩算法变成一个小文件。区分这两个概念的原因在于Linux 中很多压缩程序只能针对一个文件进行压缩,这样当想要压缩一大堆文件时,必须先将这一大堆文件先打成一个包(tar命令),然后再用压缩程序进行压缩
。常用的压缩/解压命令有zip/unzip
gzip/gunzip
tar
的常用命令组合及参数表如下
压缩:tar -zcvf destName.tar.gz srcFile
解压:tar -zxvf srcName.tar.gz
参数 | 功能 |
---|---|
-A或–catenate | 新增文件到已经存在的备份文件 |
-B | 设置区块大小 |
-c或–create | 建立新的备份文件 |
-C <目录> | 这个选项用在解压缩,若要在特定目录解压缩,可以使用这个选项 |
-d | 记录文件的差别 |
-x或–extract或–get | 从备份文件中还原文件 |
-t或–list | 列出备份文件的内容 |
-z或–gzip或–ungzip | 通过gzip指令处理备份文件 |
-Z或–compress或–uncompress | 通过compress指令处理备份文件 |
-f<备份文件>或–file=<备份文件> | 指定备份文件 |
-v或–verbose | 显示指令执行过程 |
-r | 添加文件到已经压缩的文件 |
-u | 添加改变了和现有的文件到已经存在的压缩文件 |
-j | 支持bzip2解压文件 |
-v | 显示操作过程 |
-l | 文件系统边界设置 |
-k | 保留原有文件不覆盖 |
-m | 保留文件不被覆盖 |
-w | 确认压缩文件的正确性 |
-p或–same-permissions | 用原来的文件权限还原文件 |
-P或–absolute-names | 文件名使用绝对名称,不移除文件名称前的“/”号 |
-N <日期格式> 或 --newer=<日期时间> | 只将较指定日期更新的文件保存到备份文件里 |
–exclude=<范本样式> | 排除符合范本样式的文件 |