线上回滚笔记-01

Linux 常用shell 指令

​ 线上回滚笔记的第一篇,记一下这些天碰到和学到的Linux指令。入职以来,碰到很多开发环境和系统工具的学习和适应的过程,在越来越讲究效率的工程团队,Linux指令的熟悉层度可以很大的提高效率。无论在包下发,还是在线上环境测试,Shell指令,都可以很大的提升效率。

​ shell是Linux环境下批处理的脚本语言。其按一定的语法进行系统调用,对于批处理的任务可以任意的脚本话,使得一些很简单的批处理任务可以脚本化完成。

​ 为什么需要用shell去处理任务呢,在很多现实场景中,我们的简单的处理任务都是串行化并且简单化的。系统提供的命令可以快速的检索日志、查看网络通信接口,查看系统和硬件的状况。

​ 怎么用?

  • 线上服务更新Shell指令

1
2
3
4
5
6
7
8
9
10
11
#!/bin/bash
source /etc/profile
svr=`ps aux |grep 'sso_proxy' |grep -v grep | awk '{print $2}' |wc -l`
if [ $svr -eq 0 ];then
source /etc/profile
/usr/local/services/TSF3-PHP7-1.0/runtime/php/bin/php /data/web_deployment/svr/tsf2/sso_proxy_tcp/Start.php &
else
ps aux |grep 'sso_proxy_tcp-master' |grep -v grep | awk '{print $2}' | xargs kill -15
sleep 1
/usr/local/services/TSF3-PHP7-1.0/runtime/php/bin/php /data/web_deployment/svr/tsf2/sso_proxy_tcp/Start.php &
fi
  1. ps–Process Status(查看进程状态指令)

    • ps aux 是常用指令兼容的效果比较高,使用BSD syntax显示所有进程的状态
      • ax一起使用是列出所有的状态
      • u 做格式命令出现,表示输出采用面上用户的格式
      • 兼容性比较好 在mac上一样的输出
  2. grep–Global Regular Expression Print (全局正则表达式指令) 并把匹配的行打印出来

    1
    grep [option] pattren file
    • -v == –revert-match 显示不包含匹配文本的所有行

    • 正则

      • 元字符 “ \b”, “.”, “*”, “\d”
        1. \bhi\b.*\bLucy\b 匹配hi单词 后不远有单词Lucy
        2. 0\d{2}-\d{8} 匹配0后面2个数字 + 连字符 + 后面8位数字
      • 常用的元字符 “^ 字符串的开始”、”$ 字符串的结束”、”\w 匹配数字或字母或下划线”、”\s 匹配任意空白符”、”. 匹配除换行符的任意字符”、
        1. ^\d{5,8}$ 匹配5到8位长度的字符串
      • 字符转义 – www\.\.com = www..com
      • 重复 – * 重复0次或多次| + 重复1次或多次| ? 重复0次或1次|{n}重复那次| {n,} 重复n次或者更多 |{n,m}重读n次到m次
        1. Window\d+
        2. ^\w+
      • 字符集 – 建立自己的查找字符集进行匹配 [aeiou] 匹配一个元音字符 [.?!]匹配三个符号的任意一个 [0-9]等同于\d,[a-z0-9A-Z_]等同于\w
        1. (?0\d{2}[) -]?\d{8}
      • 分支条件–用|把不同的规则分隔开
        1. 0\d{2}-\d{8}|0\d{3}-\d{7}
        2. \(0\d{2}\)[-]?\d(8)|0\d{2}[-]?\d{8}
      • 分组规则–重复多个字符,用小括号指定子表达式,然后指定子表达式的重复次数
        1. (\d{1,3}\.){3}\d{1,3} ip地址的匹配格式,但存在不可能的IP地址
        2. ((2[0-4]\d|25[0-5]|[01]?\d\d?)\.){3}
      • 反义– 查找不属于某个简单定义的字符类的字符 [\^x] 匹配除了x以外的任意字符[\^aeiou]匹配除了aeiou几个字符外的字符
        1. \S+ 匹配不包含空白符的字符串
        2. <a/[/^-]+>
      • 后向引用 – 匹配这个子表达式的文本(也就是此分组捕获的内容)可以在表达式或其它程序中作进一步的处理,后向引用用于重复搜索前面某个分组匹配的文本。例如,\1代表分组1匹配的文本。
      • 零宽断言 – 用于指定一个位置,这个位置应该满足一定的条件
        1. \b\w+(?=ing\b) 用于匹配以ing结尾的ing前面的一部分
          . (?<=\bre)\w+\b 用于匹配re开头的单词的后一部分
    • -h 只显示抓出来的行的内容,不显示文件名

    • -e 指定pattern

    • -l 只显示抓到指定模式内容的文件名

    • -n 显示抓到的文件的行数

  3. tcpdump — 抓包, 抓取网络中的通信包

    1. tcp ucp 指定抓包的类型
    2. host port 指定抓包的host或者端口号port
    3. -X 指定打印包的格式 详细的包内容
    4. -i 指定网卡
  4. kill – 对进程发送信号

    1
    2
    3
    4
    5
    6
    7
    8
    kill -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)
    1. 批量关闭含有某些关键词的进程

      kill -9 $(pidof 进程名关键字)