linux常用命令

项目名称

文件名称

linux常用命令

编制部门

后台运维

作者

丁正凯

当前版本

201807171125

受众范围

后台运维

文档控制

修改记录

日期

版本

修改类型

修改主要内容

作者

20170512

201705121614

C

模版调整

丁正凯

◆修改类型:A增加、B删除、C修改

审阅人

姓名

部门

职位

审阅签字

审阅时间

存档

存档时间

存放方式

存放地点、位置

备注

◆存放方式:A电子、B纸质

目录

1 pipe 1

2 netstat 1

3 ss 2

4 curl 2

5 wget 5

6 lftp 6

7 rsync 7

8 find 8

9 grep 12

10 tree 13

11 ps 14

12 pstree 15

  1. pipe

pipe 管道命令操作符是: "|", 它仅能处理经由前面一个指令传出的正确输出信息, 也就是 standard output 的信息, 将其递给下一个命令, 作为标准的输入 standard input. 但是对于 stdandard error 信息没有直接处理能力.

https://www.cnblogs.com/blackay03/p/7838317.html

大部分命令的帮助文档都可以通过 命令名 -h/--help 或 man 命令名 查看, 推荐优先阅读其英文 man 手册, 可以结合其它中文资料. man.linuxde.net 网站仅供一般性参考, 翻译不太好.

  1. netstat

打印网络状态信息

netstat \[OPTION\]

netstat \-a     \# 列出所有连接信息

netstat \-at    \# 列出所有tcp协议连接信息

netstat \-au    \# 列出所有udp协议连接信息

netstat \-l     \# 只显示监听端口信息

netstat \-lt    \# 只列出所有tcp协议监听端口信息

netstat \-lu    \# 只列出所有udp协议监听端口信息

netstat \-n     \# 以数字形式显示连接中的地址信息

netstat \-anp   \# 以数字形式显示连接中的地址信息, 显示进程号和程序名

netstat \-anp | grep "java" | wc \-l           \#查看java进程数
  1. ss

打印网络状态信息, 和netstat类似, 但更好用

ss  \[OPTION\]

\#\-a 显示所有 \-t 显示tcp协议 \-l 显示监听状态

ss \-t \-a

ss \-t \-a \-l

ss \-t \-a \-l |grep 5672

ss \-antup

  1. curl

命令行文件传输工具, 支持 http,https,ftp 等众多协议, 支持断点续传

如果请求比较复杂不知道有哪些参数和Header, 可以打开浏览器的开发者工具后访问页面, 切换到Network栏, 找到并选择请求行, 点击右键Copy--Copy as cURL, 粘贴出来稍加修改, 如图

devtool_network

curl [OPTION]

\# 调用服务 \-X 指定http方法 \-H http头 \-\-data\-binary/\-d 参数

curl \-XPOST \-H 'Content\-Type: text/json; charset=UTF\-8' \-\-data\-binary '\{"msg":\{"usercode":"guest","userpw":"111111","spaceid":"bjfeidao\_353","logintypenew":"usercode"\},"spaceid":"bjfeidao\_353","type":"loginservice\.userlogin"\}' 'http://192\.168\.40\.181/sendmessage'

\# 由于header中有gzip压缩, 使用 \-\-compressed 解压

curl \-XGET 'http://61\.163\.79\.140:15100/nongfu\_t/getip' \-H 'Pragma: no\-cache' \-H 'Accept\-Encoding: gzip, deflate' \-H 'Content\-Type: text/json; charset=UTF\-8' \-H 'Cache\-Control: no\-cache' \-H 'X\-Requested\-With: XMLHttpRequest' \-H 'Connection: keep\-alive' \-H 'Referer: http://172\.16\.15\.43:8000/pages/test\.html' \-\-data\-binary '\{\}' \-\-compressed

curl \-XGET 'http://61\.163\.79\.140:15100/nongfu\_t/getip' \-H 'Pragma: no\-cache' \-H 'Content\-Type: text/json; charset=UTF\-8' \-H 'Cache\-Control: no\-cache' \-H 'X\-Requested\-With: XMLHttpRequest' \-H 'Connection: keep\-alive' \-H 'Referer: http://172\.16\.15\.43:8000/pages/test\.html' \-\-data\-binary '\{\}'

\# 发短信

curl \-v \-X POST \-H "Content\-Type:application/x\-www\-form\-urlencoded;charset=UTF\-8" \-d "account=username001&password=password001&mobile=15038089285&content=您的验证码是:abcd。请不要把验证码泄露给其他人并尽快完成操作。"  http://106\.ihuyi\.cn/webservice/sms\.php?method=Submit

\# 调用文件服务下载 \-O 保存的文件名和服务器上的相同

curl \-v 'http://192\.168\.40\.181/fsweb/getfile?productid=bjfeidao\_353&id=451ca78b307346c1a627401f5c6aac25\.jpeg' \-H 'Accept\-Encoding: gzip, deflate' \-H 'Accept: image/webp,image/apng,image/\*,\*/\*;q=0\.8' \-\-compressed \-O

curl \-v 'http://192\.168\.40\.181/fsweb/getfile?productid=bjfeidao\_353&id=451ca78b307346c1a627401f5c6aac25\.jpeg'  \-H 'Accept: image/webp,image/apng,image/\*,\*/\*;q=0\.8' \-O

\# 调用文件服务上传base64格式

curl \-v \-X POST \-H 'Content\-Type: text/json; charset=utf\-8'  \-H 'X\-Requested\-With: XMLHttpRequest' \-d '\{"file\_string":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAMAAAAoLQ9TAAAABGdBTUEAALGPC/xhBQAAACBjSFJNAAB6JgAAgIQAAPoAAACA6AAAdTAAAOpgAAA6mAAAF3CculE8AAAAM1BMVEUAAAAAYK8AYa8AYK8AYa8AYa8AYq8AYa8AYK8AYa8AYK8AYa8AX68AYK8AYa8AYrD////iTE1\+AAAAD3RSTlMAYMAg0PCA4BCgQJBwMLCPnbs3AAAAAWJLR0QQlbINLAAAAAlwSFlzAAAAYAAAAGAA8GtCzwAAAAd0SU1FB\+EFEhIHN8tiNjUAAABxSURBVBjTbY9ZEsAgCEMBQezK/W/biN2m0/y9GCIQQSwBCdNQ0TilJdlOkurWHR3xRjTBxTzQ52zqL0zo05ZdnlGKwGDjRWRUwaht8XXe7DaKrtdAGs4V6YuDRPZ7sSxlkxfjW9J3QPvq/rCVv\+M\+5x\+Chwj6tH3bvQAAACV0RVh0ZGF0ZTpjcmVhdGUAMjAxOC0wMi0yOFQxMzozMzozNSswODowMFuyIKcAAAAldEVYdGRhdGU6bW9kaWZ5ADIwMTctMDUtMThUMTg6MDc6NTUrMDg6MDBefiDLAAAAAElFTkSuQmCC"\}' http://192\.168\.40\.181/fsweb/upload?productid=boai

curl \-v \-X POST \-H 'Content\-Type: text/json; charset=utf\-8'  \-H 'X\-Requested\-With: XMLHttpRequest' \-d '\{"file\_string":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAMAAAAoLQ9TAAAABGdBTUEAALGPC/xhBQAAACBjSFJNAAB6JgAAgIQAAPoAAACA6AAAdTAAAOpgAAA6mAAAF3CculE8AAAAM1BMVEUAAAAAYK8AYa8AYK8AYa8AYa8AYq8AYa8AYK8AYa8AYK8AYa8AX68AYK8AYa8AYrD////iTE1\+AAAAD3RSTlMAYMAg0PCA4BCgQJBwMLCPnbs3AAAAAWJLR0QQlbINLAAAAAlwSFlzAAAAYAAAAGAA8GtCzwAAAAd0SU1FB\+EFEhIHN8tiNjUAAABxSURBVBjTbY9ZEsAgCEMBQezK/W/biN2m0/y9GCIQQSwBCdNQ0TilJdlOkurWHR3xRjTBxTzQ52zqL0zo05ZdnlGKwGDjRWRUwaht8XXe7DaKrtdAGs4V6YuDRPZ7sSxlkxfjW9J3QPvq/rCVv\+M\+5x\+Chwj6tH3bvQAAACV0RVh0ZGF0ZTpjcmVhdGUAMjAxOC0wMi0yOFQxMzozMzozNSswODowMFuyIKcAAAAldEVYdGRhdGU6bW9kaWZ5ADIwMTctMDUtMThUMTg6MDc6NTUrMDg6MDBefiDLAAAAAElFTkSuQmCC","productid":"boai"\}' http://192\.168\.40\.181/fsweb/upload

curl \-v \-XPOST 'http://192\.168\.40\.181/fsweb/upload' \-H 'Pragma: no\-cache' \-H 'Accept\-Encoding: gzip, deflate' \-H 'Content\-Type: text/json; charset=UTF\-8' \-H 'Accept: \*/\*' \-H 'Cache\-Control: no\-cache' \-H 'X\-Requested\-With: XMLHttpRequest' \-H 'Connection: keep\-alive' \-\-data\-binary '\{"productid":"bjfeidao\_353","file\_string":"data:image/png;base64,此处替换为文件base64值"\}' \-\-compressed

\# 其它示例

curl http://man\.linuxde\.net/text\.iso \-\-silent \-O \# \-\-silent不显示进度 \-O 下载保持原有文件名

curl http://man\.linuxde\.net/test\.iso \-o filename\.iso \-\-progress \# \-\-progress 显示进度条 \-o 将下载数据写入到指定名称的文件

\# \-C \- 断点续传

curl http://192\.168\.40\.181/public/apk/ggpt/com\.victop\.ggpt\.apk \-\-silent \-O \-C \-

\# \-\-\-\-\-\-\-\-\-\-\-\-ftp操作\-\-\-\-\-\-\-\-\-\-\-\-\# 列出目录 \-u 指定用户名密码

curl \-u anonymous:123456 ftp://192\.168\.40\.198\# 上传 \-T 指定文件

curl \-u username001:password001 \-T filename001 ftp://192\.168\.40\.198/文件流转/\# 下载具体文件

curl \-O ftp://192\.168\.40\.198/文件流转/gxd/gxd\.zip



1. <a id="_Toc1008660995">wget

下载工具, 支持断点续传

linux工具之curl与wget高级使用 http://lizhenliang\.blog\.51cto\.com/7876557/1650663



wget \[OPTION\]\.\.\. \[URL\]\.\.\.

wget \-c http://www\.linuxde\.net/testfile\.zip   \# \-c 支持断点续传

wget \-\-limit\-rate=300k http://www\.linuxde\.net/testfile\.zip \# 限速下载

wget \-i filelist\.txt \# \-i 下载多个文件, filelist\.txt 写入文件下载来源

\# \-\-miror 镜像下载 \-p 下载html页面中引用的文件 \-\-convert\-links 下载后将html中引用文件的url转换成本地相对路径url \-P 本地保存目录

wget \-\-mirror \-p \-\-convert\-links \-P /tmp http://www\.daokes\.com

\# \-\-\-\-\-\-\-\-\-\-\-\-ftp操作\-\-\-\-\-\-\-\-\-\-\-\-\# \-r 递归下载目录 \-nH 保存时去掉目录名中的主机信息 \-P 保存到/tmp目录 \-\-restrict\-file\-names=nocontrol 处理下载中的中文乱码

wget \-r \-nH \-P /tmp \-\-restrict\-file\-names=nocontrol ftp://username001:123456@192\.168\.40\.198/文件流转/1\-研究院/css3\.0

\# 匿名下载

wget \-r \-nH \-P /tmp \-\-restrict\-file\-names=nocontrol ftp://192\.168\.40\.198/文件流转/1\-研究院/css3\.0

\# 下载到目录 /tmp, 只保留目标文件夹名, 去掉/文件流转/1\-研究院/ \-\-cut\-dirs=2 保存时不创建主机信息后2层目录结构

wget \-r \-nH \-P /tmp \-\-restrict\-file\-names=nocontrol \-\-cut\-dirs=2 ftp://username001:123456@192\.168\.40\.198/文件流转/1\-研究院/css3\.0

  1. lftp

ftp命令行客户端

官网 [https://linux.overshoot.tv/wiki/networking/lftp](https://linux.overshoot.tv/wiki/networking/lftp" \o "https://linux.overshoot.tv/wiki/networking/lftp)

man [http://man.linuxde.net/lftp](http://man.linuxde.net/lftp" \o "http://man.linuxde.net/lftp)

参考

[https://www.cnblogs.com/leonyoung/archive/2012/04/17/2453804.html](https://www.cnblogs.com/leonyoung/archive/2012/04/17/2453804.html" \o "https://www.cnblogs.com/leonyoung/archive/2012/04/17/2453804.html)


lftp 出现 Fatal Error Certificate Verification Not Trusted

解决方法1: 编辑 /etc/lftp\.conf,在文本的最后,加入一行

set ssl:verify\-certificate false

解决方法2: 在 ~/\.lftprc 加入 set ssl:verify\-certificate false

解决方法3: 在进入lftp的命令提示后执行命令 set ssl:verify\-certificate false

上传文件 put

下载文件 get

下载目录\-将远程目录rdir下载到本地目录ldir: mirror rdir ldir

上传目录\-将本地目录ldir上传到远程目录rdir: mirror \-R ldir rdir

1. <a id="_Toc1084767768"></a>rsync

文件同步/备份工具

rsync \[OPTION\] src dst

\# src 后加/表示在 dst 不创建 src 目录, 只复制 src 目录下的内容到 dst 下

rsync \-avP /tmp/server\_py/ /data/server\_py

\# 使用 ssh 通道传输文件, 需要双方机器安装好 rsync

rsync \-avP \-e ssh root@192\.168\.40\.202:/data/feidao/\* /tmp\# 非标准ssh端口

rsync \-avP \-e 'ssh \-p 1234' root@192\.168\.40\.202:/data/feidao/\* /tmp

\# \-\-delete 删除那些DST中有而SRC没有的文件\(小心使用, 有时你可能需要在目标位置保留那些文件\)\# \-\-exclude 同步时排除指定名称的文件或目录

rsync \-avP \-e ssh \-\-delete \-\-exclude=node\_modules root@192\.168\.40\.202:/data/feidao/\* /tmp

\# \-\-delete\-before 传输之前删除 \-\-delete\-after 传输之后删除 \-\-del/\-\-delete\-during 传输过程中删除 \-\-delete\-delay 传输过程中查找删除的文件, 之后删除\# if none of the \-\-delete\-WHEN options are specified, rsync will choose the \-\-delete\-during algorithm when talking to rsync 3\.0\.0 or newer, and the \-\-delete\-before algorithm when talking to an older rsync

\# \-\-exclude\-from 排除包含在ex\.txt中的文件\(按行写, 支持通配符如\*\) \-\-include\-from 包含指定文件

rsync \-avP \-e ssh \-\-delete \-\-exclude\-from=ex\.txt root@192\.168\.40\.202:/data/feidao/\* /tmp

\# 同步时排除文件, 且 \-\-delete\-excluded 删除排除的文件

rsync \-avP \-e ssh \-\-delete\-excluded \-\-exclude=feidao\-common\* /tmp/server\_py/ root@192\.168\.40\.202:/tmp/server\_py

\# \-b 同步时备份原文件 \-\-backup\-dir 备份到指定位置, 建议使用绝对路径

now=\`date \+%Y%m%d%H%M%S\`

rsync \-avPb \-\-backup\-dir=/data/back/server\-py\-$now /tmp/server\_py/ /data/server\_py

\# 运维常用的更新服务器

now=\`date \+%Y%m%d%H%M%S\`\# 如果不用/, 可能不会删掉dst中  计划删除的文件\# 如果  用/, 可能  会删掉dst中不计划删除的文件

rsync \-avPb \-e ssh \-\-delete \-\-backup\-dir=/tmp/server\_py\-$now /tmp/server\_py/\* root@192\.168\.40\.202:/tmp/server\_py/

rsync \-avPb \-e ssh \-\-delete \-\-backup\-dir=/tmp/server\_py\-$now /tmp/server\_py/  root@192\.168\.40\.202:/tmp/server\_py/

rsync \-avPb \-e ssh \-\-delete \-\-backup\-dir=/tmp/server\_py\-$now /tmp/server\_py/lib/  root@192\.168\.40\.202:/tmp/server\_py/lib\# rsync \-avPb \-e ssh \-\-delete \-\-backup\-dir=server\_py\-$now /tmp/server\_py/  root@192\.168\.40\.202:/tmp/server\_py/    相对路径, 多次同步时  会生成复杂的嵌套结构\# rsync \-avPb \-e ssh \-\-delete \-\-backup\-dir=server\_py\-$now /tmp/server\_py/\* root@192\.168\.40\.202:/tmp/server\_py/    相对路径, 多次同步时不会生成复杂的嵌套结构
  1. find

文件查找工具

https://www.cnblogs.com/peida/archive/2012/11/16/2773289.html

https://www.cnblogs.com/xqzt/p/5427173.html

http://blog.csdn.net/wirelessqa/article/details/11866987


find \[OPTION\] \[path\.\.\.\] \[expression\]

OPTION

    \[\-H\] \[\-L\] \[\-P\] \[\-D debugopts\] \[\-Olevel\]

    \-O 指定对查询表达式采用的优化级别, 有3个级别\. 1 基于名字匹配 2 基于名字匹配之后基于 \-type or \-xtype 等

path    路径, 相对或绝对

expression 表达式, 可以包含以下组成部分

    OPTIONS 指定命令的选项, 如 \-regextype 设置使用哪种类型的正则解析引擎, \-maxdepth 设置递归搜索的目录深度

    \-regextype 可选值 'findutils\-default', 'awk', 'egrep', 'ed', 'emacs', 'gnu\-awk', 'grep', 'posix\-awk', 'posix\-basic', 'posix\-egrep', 'posix\-extended', 'posix\-minimal\-basic', 'sed'\.

    The default regexp syntax is Emacs \(basic regex plus a few extensions such as \\| for alternation\); there's an option to switch to extended regexps\.

find \-regex '\.\*\\\.\\\(jpg\\|png\\\)'

find \-regextype posix\-extended \-regex '\.\*\\\.\(jpg|png\)'

find \. \-type f \-regextype posix\-extended \! \-iregex "\.\*/\[a\-z\]\{2,\}\\\.log" \-exec mv \{\} back \\;

find \. \-path back \-prune \-type f \-regextype posix\-extended \! \-iregex "\.\*/\[a\-z\]\{2,\}\\\.log"

find \-regextype posix\-egrep \-regex '\./FeiDao\-netcore\.\*201806\[0\-9\]\[0\-3\]\.\*'

find \-regextype posix\-egrep \-regex '\./FeiDao\-netcore\.\*2018060\[0\-9\]\.\*' \-exec rm \{\} \\;

    TESTS 查询条件, 如 \-name 指定搜索的文件名, \-type 指定文件类型

    ACTIONS 针对查找结果执行的动作, 如 \-print 打印结果, \-exec 执行指定的命令

    OPERATORS 操作符, 如 \! 表达式非, \-o 表达式或

一般初学者在不同的shell环境下使用时可能遇到最多的错误提示 'paths must precede expression', 把表达式加上引号''解决, 另外有时候如果没查到结果, 可以加上引号试试

如 find \. \-name \*\.c \-print 改为 find \. \-name '\*\.c' \-print 或 find \. \-name \\\*\.c \-print

\# 在 /tmp 目录下查找, 下载nginx代码做测试对象

cd /tmp

wget \-c http://nginx\.org/download/nginx\-1\.12\.2\.tar\.gz

tar \-zxf nginx\-1\.12\.2\.tar\.gz

find /tmp \-name nginx

find /tmp \-name nginx\.\*

find /tmp \! \-name 'nginx\.\*'

find /tmp \-name 'nginx\*'

find /tmp \-name \*\.c

\# \-iname 查找时忽略大小写

find /home \-iname "\*\.txt"

\# 当前目录及子目录下查找所有以\.txt和\.pdf结尾的文件

find \. \-name "\*\.txt" \-o \-name "\*\.pdf"

\# \-path 匹配文件路径

find /usr/ \-path "\*local\*"

\# \-regex 正则匹配 \-iregex 忽略大小写的正则

find \. \-regex "\.\*\\\(\\\.txt\\|\\\.pdf\\\)$"

\# 查找 \./soa 下形如 aaa\.log 的文件, need to specify \.\*/ in the beginning because find matches the whole path\.

find \./soa \-regextype sed \-regex '\.\*/\[a\-z\]\\\{3\\\}\\\.log'

\# 查找不是 \.c 结尾的文件并删除

find \./ \! \-regex "\.\*/\.\*\\\.c" \-exec rm \-rf \{\} \\;

\# \-maxdepth <目录层级>:设置最大目录层级;\-mindepth<目录层级>:设置最小目录层级;

find / \-maxdepth 3 \-name "docker"

\# 搜索最近七天内被访问过的所有文件  \-atime\(时间戳\) \-type 文件类型

find \. \-type f \-atime \-7

UNIX/Linux文件系统每个文件都有三种时间戳:

访问时间(\-atime/天,\-amin/分钟):用户最近一次访问时间。

修改时间(\-mtime/天,\-mmin/分钟):文件数据最后一次修改时间。

变化时间(\-ctime/天,\-cmin/分钟):文件元数据(例如权限等)最后一次修改时间。

\# 搜索大于10KB的文件  \-size 根据文件大小搜索

find \. \-type f \-size \+10k

\# \-delete 删除匹配的结果

find \. \-type f \-name "\*\.txt" \-delete

\# \-exec \{\} 用于与 \-exec 选项结合使用来匹配所有文件

\# 把当前目录下所有root用户的文件更改属主为 usera

find \. \-type f \-user root \-exec chown usera \{\} \\;

\# 找出当前目录下所有的 \.txt 文件并删除

find \./ \-name "\*\.txt" \-ok rm \{\} \\;

\# 上例中, \-ok和\-exec行为一样, 不过它会给出提示, 是否执行相应的操作

\# 查找当前目录时 \-path \./src/emacs \-prune 跳过src/emacs子文件夹及其中的所有内容, 打印出找到的其它所有文件名

find \. \-path \./src/emacs \-prune \-o \-print

\# 查找当前目录或者子目录下名称匹配ngx\*的文件或目录, \-path \./nginx\-1\.12\.2/src \-prune 指定跳过\./nginx\-1\.12\.2/src目录

find \./ \-path \./nginx\-1\.12\.2/src \-prune \-o \-name 'ngx\*'

find \./ \-path \./nginx\-1\.12\.2/src \-prune \-o \-name 'ngx\*' \-print

\# 查找 \./nginx\-1\.12\.2 目录下所有以 ngx\* 命名的目录及文件 mv 到 /tmp/back 下, 针对多次 mv 的名字冲突, 使用 \-S 加后缀不覆盖之前的文件

find \./nginx\-1\.12\.2 \-path \./nginx\-1\.12\.2/src \-prune \-o \-name 'ngx\*' \-exec mv \-b \-S \_1  \{\} /tmp/back \\;

find \./nginx\-1\.12\.2 \-path \./nginx\-1\.12\.2/src \-prune \-o \-name 'ngx\*' \-print

  1. grep

使用正则表达式搜索文本, 并把匹配的行打印出来


grep \[OPTIONS\] PATTERN \[FILE\.\.\.\]

grep \[OPTIONS\] \[\-e PATTERN | \-f FILE\] \[FILE\.\.\.\]

OPTIONS\# 选择正则解析引擎

\-E, \-\-extended\-regexp 扩展正则

\-F, \-\-fixed\-strings, \-\-fixed\-regexp

\-G, \-\-basic\-regexp 基本正则

\-P, \-\-perl\-regexp Perl 兼容正则, 这个好像比 \-E 速度快些

\-r 递归目录

\-\-include/\-\-exclude/\-\-exclude\-from 搜索时包含或排除指定文件

\-v/\-\-invert\-match 反转匹配, 显示不匹配的数据

find nginx\-1\.12\.2|grep \-v stream

\# 标记匹配颜色 \-\-color=auto

grep "nginx" file\_name \-\-color=auto

\# 使用正则表达式 \-E

grep \-E "\[1\-9\]\+"

\# \-o 只输出文件中匹配到的部分 \-c 输出匹配到的行数

grep \-o \-E "\[a\-z\]\+\\\."

\# \-n 输出匹配字符串所在的行号

grep \-n \-o \-E "\[a\-z\]\+\\\."

\# \-w 匹配完整字符串

grep \-w "nginx"


其它示例

目标字符串是soa的一段日志

\[polymer\] 2017\-12\-28 19:13:29,161 \[FeidaoAkkaSystem\-exec\-dispatcher\-441\] \.\.\. \{ "key" : "p\_group\_id" , "value" : \{ "type" : "string" , "fieldLength" : 50 , "serverDateFlag" : 0 , "sele\.\.\.\(length=1234567890123\)\.msgId=a24b62a9\-2da2\-498d\-add1\-1fbbdfb46b22\.actionId=fb413ae0\-75fa\-4067\-8823\-16f79ac6f2a5\.耗时=197ms\.

需要匹配 "\(length=\.\.\.\.\.\.\)" 字样, 其中 "=" 后数字长度大于等于8

grep \-P \\\(length=\[0\-9\]\{8\\,\}\\\) a\.log

grep \-P \\\(length=\[0\-9\]\{8\}\\\) a\.log

grep \-P '\\\(length=\[0\-9\]\{8,\}\.\*\\\)' a\.log

grep \-P '\\\(length=\[0\-9\]\{8,\}\\\)' a\.log

  1. tree

显示目录结构


tree \[OPTION\] \[path\]

\# \-N 原样输出不可识别字符如中文 \-a 显示隐藏文件

tree \-Na /tmp

\# \-D 显示修改时间 \-d 只显示目录

tree \-ND

tree \-NDd

\# \-P 只显示匹配模式的文件   \-I 不显示匹配模式的文件

tree \-N \-P \*\.c

tree \-N \-I \*\.c

\# \-i 不以树形结构显示, \-f 显示文件完整路径

tree \-Nfi

tree \-apN

tree \-fapN \-L 2 /data/ tree \-fapugN \-L 2 /data/

1. <a id="_Toc1781747851"></a>ps

查看进程信息

\# 显示所有进程\# unix posix 兼容语法, 选项加 \-, 语法格式可以混用, 有个别选项会冲突

ps \-e

ps \-ef

ps \-eF

ps \-ely

\# BSD 语法, 选项无 \-

ps ax

ps alx

ps aux

\# 查看进程树

ps \-efjH

ps axjf

\# 显示线程信息

ps \-eLf

ps axms

输出结果

LWP 线程ID 别名 spid, tid

NLWP 进程中的线程个数 别名 thcount

1. <a id="_Toc732869936"></a>pstree

查看进程树信息

pstree \-achlnsp <PID>