Linux 常用shell 指令
线上回滚笔记的第一篇,记一下这些天碰到和学到的Linux指令。入职以来,碰到很多开发环境和系统工具的学习和适应的过程,在越来越讲究效率的工程团队,Linux指令的熟悉层度可以很大的提高效率。无论在包下发,还是在线上环境测试,Shell指令,都可以很大的提升效率。
shell是Linux环境下批处理的脚本语言。其按一定的语法进行系统调用,对于批处理的任务可以任意的脚本话,使得一些很简单的批处理任务可以脚本化完成。
为什么需要用shell去处理任务呢,在很多现实场景中,我们的简单的处理任务都是串行化并且简单化的。系统提供的命令可以快速的检索日志、查看网络通信接口,查看系统和硬件的状况。
怎么用?
1 |
|
ps–Process Status(查看进程状态指令)
- ps aux 是常用指令兼容的效果比较高,使用BSD syntax显示所有进程的状态
- ax一起使用是列出所有的状态
- u 做格式命令出现,表示输出采用面上用户的格式
- 兼容性比较好 在mac上一样的输出
- ps aux 是常用指令兼容的效果比较高,使用BSD syntax显示所有进程的状态
grep–Global Regular Expression Print (全局正则表达式指令) 并把匹配的行打印出来
1
grep [option] pattren file
-v == –revert-match 显示不包含匹配文本的所有行
正则
- 元字符 “ \b”, “.”, “*”, “\d”
- \bhi\b.*\bLucy\b 匹配hi单词 后不远有单词Lucy
- 0\d{2}-\d{8} 匹配0后面2个数字 + 连字符 + 后面8位数字
- 常用的元字符 “^ 字符串的开始”、”$ 字符串的结束”、”\w 匹配数字或字母或下划线”、”\s 匹配任意空白符”、”. 匹配除换行符的任意字符”、
- ^\d{5,8}$ 匹配5到8位长度的字符串
- 字符转义 – www\.\.com = www..com
- 重复 – * 重复0次或多次| + 重复1次或多次| ? 重复0次或1次|{n}重复那次| {n,} 重复n次或者更多 |{n,m}重读n次到m次
- Window\d+
- ^\w+
- 字符集 – 建立自己的查找字符集进行匹配 [aeiou] 匹配一个元音字符 [.?!]匹配三个符号的任意一个 [0-9]等同于\d,[a-z0-9A-Z_]等同于\w
- (?0\d{2}[) -]?\d{8}
- 分支条件–用|把不同的规则分隔开
- 0\d{2}-\d{8}|0\d{3}-\d{7}
- \(0\d{2}\)[-]?\d(8)|0\d{2}[-]?\d{8}
- 分组规则–重复多个字符,用小括号指定子表达式,然后指定子表达式的重复次数
- (\d{1,3}\.){3}\d{1,3} ip地址的匹配格式,但存在不可能的IP地址
- ((2[0-4]\d|25[0-5]|[01]?\d\d?)\.){3}
- 反义– 查找不属于某个简单定义的字符类的字符 [\^x] 匹配除了x以外的任意字符[\^aeiou]匹配除了aeiou几个字符外的字符
- \S+ 匹配不包含空白符的字符串
- <a/[/^-]+>
- 后向引用 – 匹配这个子表达式的文本(也就是此分组捕获的内容)可以在表达式或其它程序中作进一步的处理,后向引用用于重复搜索前面某个分组匹配的文本。例如,\1代表分组1匹配的文本。
- 零宽断言 – 用于指定一个位置,这个位置应该满足一定的条件
- \b\w+(?=ing\b) 用于匹配以ing结尾的ing前面的一部分
. (?<=\bre)\w+\b 用于匹配re开头的单词的后一部分
- \b\w+(?=ing\b) 用于匹配以ing结尾的ing前面的一部分
- 元字符 “ \b”, “.”, “*”, “\d”
-h 只显示抓出来的行的内容,不显示文件名
-e 指定pattern
-l 只显示抓到指定模式内容的文件名
-n 显示抓到的文件的行数
tcpdump — 抓包, 抓取网络中的通信包
- tcp ucp 指定抓包的类型
- host port 指定抓包的host或者端口号port
- -X 指定打印包的格式 详细的包内容
- -i 指定网卡
kill – 对进程发送信号
1
2
3
4
5
6
7
8kill -s signal_name pid #向对应进程发送对应的信号
1 HUP (hang up)
2 INT (interrupt)
3 QUIT(quit)
6 ABRT(abort)
9 KILL(non-catchable)
14 ALRM(alarm clock)
15 TERM(software termination signal)批量关闭含有某些关键词的进程
kill -9 $(pidof 进程名关键字)