本站用于记录日常工作内容,虚拟化云计算,系统运维,数据库DBA,网络与安全。
服务器放于防火墙后内网中,一直收集信息与日志比较复杂,手动巡检太慢,于是搞个脚本定时收集硬件,网络,系统与应用的错误信息,关于阵列卡的日志,开始一直使用单条命令来将日志转到别的地方,但是在脚本运行时将输出转到别的文件中,一直报错,脚本没法运行,于是采用这种方法,就可以将内容输出到别的文件了。/opt/MegaRAID/storcli/storcli64 -FwTermLog -Dsply -aALL | grep -E ^`date +%D -d ' -1 day'`\|^`date +%D` |grep -E 'error|Error|Err|failure' > /var/log/raid_log.txtif [ -s /var/log/raid_log.txt ]then  echo "主机RAID日志错误日志:"  cat /var/log/raid_log.txt  echo ""fi
 
0

常用正则表达式

发表者:admin分类:Shell编程2018-11-21 10:28:56 阅读[1089]
一、校验数字的表达式数字:^[0-9]*$ n位的数字:^\d{n}$ 至少n位的数字:^\d{n,}$ m-n位的数字:^\d{m,n}$ 零和非零开头的数字:^(0|[1-9][0-9]*)$ 非零开头的最多带两位小数的数字:^([1-9][0-9]*)+(\.[0-9]{1,2})?$ 带1-2位小数的正数或负数:^(\-)?\d+(\.\d{1,2})$ 正数、负数、和小数:^(\-|\+)?\d+(\.\d+)?$ 有两位小数的正实数:^[0-9]+(\.[0-9]{2})?$ 有1~3位小数的正实数:^[0-9]+(\.[0-9]{1,3})?$ 非零的正整数:^[1-9]\d*$ 或 ^([1-9][0-9]*){1,3}$ 或 ^\+?[1-9][0-9]*$ 非零的负整数:^\-[1-9][]0-9"*$ 或 ^-[1-9]\d*$ 非负整数:^\d+$ 或 ^[1-9]\d*|0$ 非正整数:^-[1-9]\d*|0$ 或 ^((-\d+)|(0+))$ 非负浮点数:^\d+(\.\d+)?$ 或 ^[1-9]\d*\.\d*|0\.\d*[1-9]\d*|0?\.0+|0$ 非正浮点数:^((-\d+(\.\d+)?)|(0+(\.0+)?))$ 或 ^(-([1-9]\d*\.\d*|0\.\d*[1-9]\d*))|0?\.0+|0$ 正浮点数:^[1-9]\d*\.\d*|0\.\d*[1-9]\d*$ 或 ^(([0-9]+\.[0-9]*[1-9][0-9]*)|([0-9]*[1-9][0-9]*\.[0-9]+)|([0-9]*[1-9][0-9]*))$ 负浮点数:^-([1-9]\d*\.\d*|0\.\d*[1-9]\d*)$ 或 ^(-(([0-9]+\.[0-9]*[1-9][0-9]*)|([0-9]*[1-9][0-9]*\.[0-9]+)|([0-9]*[1-9][0-9]*)))$ 浮点数:^(...
 
0
正则表达式 - 匹配规则基本模式匹配一切从最基本的开始。模式,是正则表达式最基本的元素,它们是一组描述字符串特征的字符。模式可以很简单,由普通的字符串组成,也可以非常复杂,往往用特殊的字符表示一个范围内的字符、重复出现,或表示上下文。例如:^once这个模式包含一个特殊的字符^,表示该模式只匹配那些以once开头的字符串。例如该模式与字符串"once upon a time"匹配,与"There once was a man from NewYork"不匹配。正如如^符号表示开头一样,$符号用来匹配那些以给定模式结尾的字符串。bucket$这个模式与"Who kept all of this cash in a bucket"匹配,与"buckets"不匹配。字符^和$同时使用时,表示精确匹配(字符串与模式一样)。例如:^bucket$只匹配字符串"bucket"。如果一个模式不包括^和$,那么它与任何包含该模式的字符串匹配。例如:模式once与字符串There once was a man from NewYork Who kept all of his cash in a bucket.是匹配的。在该模式中的字母(o-n-c-e)是字面的字符,也就是说,他们表示该字母本身,数字也是一样的。其他一些稍微复杂的字符,如标点符号和白字符(空格、制表符等),要用...
正则表达式 - 元字符下表包含了元字符的完整列表以及它们在正则表达式上下文中的行为:字符描述\ 将下一个字符标记为一个特殊字符、或一个原义字符、或一个 向后引用、或一个八进制转义符。例如,'n' 匹配字符 "n"。'\n' 匹配一个换行符。序列 '\\' 匹配 "\" 而 "\(" 则匹配 "("。^ 匹配输入字符串的开始位置。如果设置了 RegExp 对象的 Multiline 属性,^ 也匹配 '\n' 或 '\r' 之后的位置。$ 匹配输入字符串的结束位置。如果设置了RegExp 对象的 Multiline 属性,$ 也匹配 '\n' 或 '\r' 之前的位置。* 匹配前面的子表达式零次或多次。例如,zo* 能匹配 "z" 以及 "zoo"。* 等价于{0,}。+ 匹配前面的子表达式一次或多次。例如,'zo+' 能匹配 "zo" 以及 "zoo",但不能匹配 "z"。+ 等价于 {1,}。? 匹配前面的子表达式零次或一次。例如,"do(es)?" 可以匹配 "do" 或 "does" 。? 等价于 {0,1}。{n} n 是一个非负整数。匹配确定的 n 次。例如,'o{2}' 不能匹配 "Bob" 中的 'o',但是能匹配 "food" 中的两个 o...
删除Linux系统下history记录的方法      1、修改/etc/profile将HISTSIZE=1000改成0或1  清除用户home路径下。bash_history  2、立即清空里的history当前历史命令的记录  history -c  3、bash执行命令时不是马上把命令名称写入history文件的,而是存放在内部的buffer中,等bash退出时会一并写入。  不过,可以调用'history -w'命令要求bash立即更新history文件。  history -w 二, 有时会出现history -c 后,再退出shell,重新进系统后,history 命令还在是存在,说明history -c命令无无效。     可以采用下面方法检查。   先运行  history -c命令,再运行  history -w ,命令记录就清除了。  或是查看用户的主目录是否有修改,找到对应的 .bash_history 文件手动命令清除。 
服务器有个java程序,运行时每周一会出现调用数据库时,产生的数据不正常。需要每周一重启程序后,才会正常生成数据库数据。所以作了一个定时重启脚本。比较简单,以下是示例。cat crond_pss/restartpss.sh #!/bin/bashproc_pid=`ps -ef|grep 'pps.main.PssServer'|grep -v "grep" | awk '{print $2}'`proc_name="PssServer"echo ${proc_name} "pid:"echo ${proc_pid}echo ""echo ""echo `date`echo ${proc_pid}"------kill the task!------"kill -9 ${proc_pid}sleep 50echo ""echo ""echo `date`echo ${proc_name}"------start the task!------"cd /PSS/bin     #启动程序脚本时,建议先检查下之前的进程是否正常结束./start.shsleep 20proc_pid2=`ps -ef|grep 'pps.main.PssServer'|grep -v "grep" | awk '{print $2}'`echo ""echo ${proc_name} "pid:"echo ${proc_pid2}echo ""然后配置定时任务,这里修改/etc/crontab .30 0 * * 1 cwt  /home/crond_pss/restartpss.sh >> /home/crond_pss/log.txt
Linux主机日志备份基本方法。由于主机日志比较多,需要保留日志。所以主机通过NFS备份到一台闲置主机上面。以下是救命脚本信息。可以根据自己情况修改。通过定时任务,备份日志,示例日志有两种,一种是日志文件按天来分割。另外一种是按日志文件大小来分割。log_home="/home/logs"                                       #本机日志目录log_back="/baklog/log_192.168.10.192"          #nfs挂载分区中的备份目录cptime1=`date`cptime2=`date`dates=$(date -d "1 days ago" +%Y-%m-%d)file11="server.log."$dates"*"file12="exception.log."$dates"*"#备份一天之前的日志文件cd $log_home/Terminecho "Termin's log now copying:$cptime1"cp  $file11 $log_back/Termincp  $file12 $log_back/Terminecho " Termin's lo...
Linux 按名称查找某个进程并关闭。参考一下,水平有限。! /bin/sh    ID=`ps -ef| grep 'ntpd'|grep -v 'grep'|awk '{print $2}'`  if [ "$ID" = "" ]  then    echo "ID is not  running!"  else    for pid in $ID  do  kill -9 $pid  echo " kill ntpd pid:$pid"fi  
CentOS6.7系统优化加强牢固脚本 #!/bin/bash# author wangqd# description:this is a centos6.7 optimization script# processname:  升级系统,精简服务,安装基本配置,记录bash执行时间,安全配置,su加固,ssh优化,iptables设置,时间同步 系统优化#检查是否为root用户;if [ $(id -u) != "0" ];thenecho "运行此脚本需要root权限!" fiyum update -y >> /etc/nullif [ $? = "0" ];thenecho "系统暂时无需更新"fi#精简服务# 关闭ipv6防火墙chkconfig ip6tables offif [ $? = "0" ];thenecho "设置ipv6防火墙开机不自启成功"elseecho "设置ipv6防火墙开机不自启成功失败"fi# 关闭iscsi服务chkconfig iscsi offif [ $? = "0" ];thenecho "设置iscsi服务开机不自启成功"elseecho "设置iscsi服务开机不自启失败"fi# 关闭iscsi相关服务chkconfig iscsid offif [ $? = "0" ];thenecho "设置iscsi相关服务开机不自启成功"elseecho "设置iscsi相关服务开机不自启失败"fi   # 关闭NFS,smaba和NetWare网...
 
0
Shell 参数 $*与$@的区别
    总共3页,当前第1页 | 页数:
  1. 1
  2. 2
  3. 3