Blog

  • 正则表达式语法

    《学习正则表达式》笔记

    ^从开始匹配
    $匹配结束
    \d匹配一个任意阿拉伯数字
    \D匹配一个非数字字符,等价于[^0-9],又等价于[^\d]
    . 匹配任意一个字符,不包含换行和回车
    \d{3}表示出现单个数字的3次,花括号里是出现的次数
    \d{3,5}表示出现单个数字最小3次,最大5次
    ? 出现零次或一次
    + 匹配一个或多个,包含换行和回车
    * 匹配零个或多个
    \w 匹配字母,数字,下划线,等价于[_a-zA-Z0-9]
    \W 匹配非\w匹配的字符,等价于[^_a-zA-Z0-9],又等价于[^\w]
    \s 匹配空格,等价于[ ]
    \S 匹配非空格,等价于[^\s]
    \t 匹配制表符,tab
    \n 匹配换行符
    \r 匹配回车符
    \b匹配单词边界,不消耗任何字符
    匹配小写字母

    按键次数最少则胜

    创建捕获分组(capturing group),用来匹配字符串中的一部分,使用向后引用(back reference),对捕获的分组进行引用。

    $1是perl风格的后向引用

    常用正则表达式

    匹配域名

    grep -oE '(([a-zA-Z](-?[a-zA-Z0-9])*)\.)+[a-zA-Z]{2,}'
    
  • xenserver模板导出 vm复制 vm更名

    通过挂载nfs后,导出导入模板

    xe template-export filename=CentOS55.xva template-uuid=1c26d2dc-8d28-4445-bf80-f1c7d2dfd884
    xe vm-import filename=CentOS55.xva sr-uuid=6b0c60bc-035a-2963-67e1-928a426efed8

    参考:

    https://sites.google.com/site/norandatechnology/xenserver/export-import-template-nfs

    做好的虚拟机经常需要复制,使用如下命令操作

    xe vm-copy vm="ABCServer" sr-uuid=24565487-accf-55ed-54da54993ade784a new-name-label="Copy of ABCServer" new-name-description="New Description"

    虚拟机改名字

    xe vm-param-set name-label=VM-NEW-NAME uuid=`xe vm-list name-label=<vm-actual-name> --minimal`
  • vim替换

    将逗号替换为换行

    :%s/\,/^M/g

    ^M由ctrl+V+M获得

    同理

    :%s/^I/\ /g

    例如将 ,52,53,19,4,5,6 进行如下操作

    :%s/\,/^M192.168.1./g

    则会变成如下的样式

    192.168.1.52
    192.168.1.53
    192.168.1.19
    192.168.1.4
    192.168.1.5
    192.168.1.6
  • linux连接数统计查看

    在日常工作中经常要查看连接数,以下是几个例子

    先安装

    yum install net-tools -y

    统计80端口连接数

    netstat -na | grep -i "80" | wc -l

    统计已连接上的,状态为“established’的连接数

    netstat -na | grep ESTABLISHED | wc -l

    ESTABLISHED来源IP访问量前5名

    netstat -na | grep ESTABLISHED | awk '{print$5}' | awk -F : '{print$1}' | sort | uniq -c | sort -k 1 -n -r | head -n 5

    正在SYN来源IP访问量前5名

    netstat -na | grep SYN | awk '{print$5}' | awk -F : '{print$1}' | sort | uniq -c | sort -k 1 -n -r | head -n 5

    将不同的tcp连接状态打印出来

    netstat -n | awk '/^tcp/ {++S[$NF]} END {for(key in S) print key,"\t",S[key]}'

     

    TIME_WAIT 257 等待所有分组死掉
    SYN_SENT 2 应用已经开始,打开一个连接
    FIN_WAIT1 49 应用说它已经完成
    FIN_WAIT2 60 另一边已同意释放
    ESTABLISHED 509 正常数据传输状态/当前并发连接数
    SYN_RECV 5 一个连接请求已经到达,等待确认
    CLOSING 1 无连接是活动的或正在进行
    LAST_ACK 37 等待所有分组死掉

    netstat 查看 unix socket 使用

    netstat -ntlpx

    参考:http://www.letuknowit.com/post/31.html

  • linux write命令给其他用户发消息

    使用w或`last | grep stil`可以查看到哪些用户正在登陆

    11:46:19 up 82 days, 5:58, 2 users, load average: 0.00, 0.01, 0.05
    USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT
    jpuyy pts/0 192.168.1.2 11:45 3.00s 0.53s 0.00s w
    jpuyy pts/3 192.168.1.3 11:45 19.00s 0.57s 0.57s -bash

    现在在pts/0向pts/3的jpuyy用户写消息

    jpuyy@ip-172-31-11-178:~$ sudo write jpuyy pts/3

    [sudo] password for jpuyy:

    write: warning: write will appear from jpuyy
    foo
    bar

    当发送命令后,对方会收到一条

    Message from yourname@yourhost on yourtty at hh:mm …
    foo
    bar

    方便在没有其他通讯的时候发消息,测试下来不支持中文。

  • windows查看内存

    简要说明

    C:\Users\Administrator>wmic memorychip list brief

    Capacity DeviceLocator MemoryType Name Tag Total Width
    8589934592 DIMM_A1 0 Physical Memory Physical Memory 0 72
    8589934592 DIMM_A2 0 Physical Memory Physical Memory 1 72

    详细说明(可查内存频率)

    C:\Users\Administrator>wmic memorychip list