- 浏览: 376991 次
- 性别:
- 来自: 北京
文章分类
最新评论
-
lgh1992314:
scugxl 写道这个java.ext.dirs属于加载的JR ...
classpath 和 java.ext.dirs 的区别 -
Oneforher:
java -Djava.ext.dirs 加载Lib后,%JA ...
classpath 和 java.ext.dirs 的区别 -
cxw1128:
java -Djava.ext.dirs=/home/ice/ ...
classpath 和 java.ext.dirs 的区别 -
suosuo230:
同感,纠结了一天了,才发现,比你们晚发现2-4年
com.ibm.icu.text.SimpleDateFormat 的陷阱 -
scugxl:
这个java.ext.dirs属于加载的JRE/LIB/EXT ...
classpath 和 java.ext.dirs 的区别
1、脚本之间传递参数 "1.sh"的脚本,接受参数。如下,如果有一个参数则赋值个sourceFile这个变量,否则用默认值。
备注:这里$#是传递参数的个数,$1 是具体的参数。
关于if else:
如果两条命令写在同一行则需要用";"号隔开,一行只写一条命令就不需要写";"号了。和[命令一样,要注意命令和各参数之间必须用空格隔开。if命令的参数组成一条子命令,如果该子命令的Exit Status为0(表示真),则执行then后面的子命令,如果Exit Status非0(表示假),则执行elif、else或者fi后面的子命令。if后面的子命令通常是测试命令,但也可以是其它命令。Shell脚本没有{}括号,所以用fi表示if语句块的结束。
"2.sh"的脚本,传递参数
备注:多个参数之间用空格符隔开。
2、文件内容行之间的排序
备注:“=”表示按=号进行切割(注意:只能是单个字符),“+4”表示按第五个项进行排序。
更多参数:
-r 表示降序排序
-n 表示按数字大小排序
-k 表示根据那个字段排序,4.1,表示第4列第一个字符开始 ,5表示到第5个字段为结束
-t 后面跟分隔符,缺省是空格
例如:sort -r -n -k4.1,5
3、判断目录是否存在,没有则新建一个目录
4、判断文件是否存在,有则删除
5、找出文件中的相关行
备注:把文件中包含关键词的行输出到result.log中。
6、文件切分
备注:“”表示分隔符,“print”表示换行输出(printf不换行),“$1”表示取第一项。“文件”表示要切分的文件
7、文件内容排重
备注:“,”表示按“,”号分隔;“$1”表示按第一项排重;“test.txt”表示要处理的文件。
8、grep多个关键字
备注:多个关键字用“\|”分隔。
9、时间格式化,中间有空格的需要加引号
10、多个文件合并
11、运行java项目
备注:“/usr/java/latest/bin/java”表示Java环境,“-cp”表示classpath路径,“.”表示当前目录,“-Djava.ext.dirs”表示jar文件所在目录,“-a”表示参数名称,“参数1”表示参数值。
12、根据关键字统计行数,赋值给变量
备注:“$FILE”表示要统计的文件,“关键字”要包含的关键字,“wc”统计文件(-l行数,-w字数,-c字节数)
wc命令的功能为统计指定文件中的字节数、字数、行数, 并将统计结果显示输出。
语法:wc [选项] 文件…
说明:该命令统计给定文件中的字节数、字数、行数。如果没有给出文件名,则从标准输入读取。wc同时也给出所有指定文件的总统计数。字是由空格字符区分开的最大字符串。
该命令各选项含义如下:
-c 统计字节数。
-l 统计行数。
-w 统计字数。
这些选项可以组合使用。 输出列的顺序和数目不受选项的顺序和数目的影响。总是按下述顺序显示并且每项最多一列。 行数、字数、字节数、文件名 如果命令行中没有文件名,则输出中不出现文件名。 例如: $wc -lcw file1 file2 4 33 file1 7 52 file2 11 11 85 total 省略任选项-lcw,wc命令的执行结果与上面一样。
13、基本算术计算的方法(5种)
a.使用awk计算
备注:示例2和示例3两种写法除数和被除数都要加“'”号(单引号),否则会报错“division by zero attempted”,另外“BEGIN”也很重要哦。
b.使用bc命令
c.使用expr命令
d.使用let命令
e.加双括号
备注:此种写法括号里面的变量可以不用加“$”符号,但是括号外面的“$”符号一定要加上。
14、运用tee命令将日志同时输出到多个文件
tee用法功能说明:读取标准输入的数据,并将其内容输出成文件。
语 法:tee [-ai][--help][--version][文件...]
补充说明:tee指令会从标准输入设备读取数据,将其内容输出到标准输出设备,同时保存成文件。
参 数:
-a或--append 附加到既有文件的后面,而非覆盖它.
-i或--ignore-interrupts 忽略中断信号。
-help 在线帮助。
-version 显示版本信息。
例1:日志在记入log1.txt和log2.txt的同时也在控制台输出
备注:“-a”追加,否则清空重写。
15、针对某个域进行分组统计
备注:“$FILE”要处理的文件,用awk命令按“”进行切分,“$11”表示第11域(1,3,5,...),“var”表示分组名称,“list[var]”表示每组的数量。
16、查询控制命令的历史记录
备注:查询包含“rm”字符的命令记录。
17、循环删除所有文件
备注:在文件非常多的情况下,rm * 命令不能删除所有文件。所以需要遍历删除每一个文件。
18、遍历文件夹并按第二个域对文件内容排序。
19、查看文件夹下所有文件数目和所有文件夹数目
备注:“.”表示当前目录,可以换成其他路径。
20、shell与java正则区别
备注:JAVA中匹配以“2010-11-08"开头的字符串。
备注:SHELL中匹配以“2010-11-08”开头的字符串。
“.*”或“.+”在java中表示任意多个字符串,如果要匹配“.”号,需要加转义“\”。 “*”在shell表示任意多个字符,加“.”或“+”号都会错误。
21、编码转换命令
备注:表示把a.log文件从gb2312编码转成utf-8的编码,并把文件写入b.log
22、批量替换多个文件中的字符串
备注:
-i 表示inplace edit,就地修改文件
-r 表示搜索子目录
-l 表示输出匹配的文件名
23、常用MySQL语句
//查询mysql变量(timeout)
show variables like '%timeout'
//查询缓存变量
show status like "Qcache%"
//查询进程列表
show PROCESSLIST
24、清空memcache数据
telnet 10.27.5.71 11211
flush_all
quit //退出telnet
25、监控Tomcat并启动
备注:定时监控tomcat,发现挂掉,立刻重启!并发送短信和邮件报告~
-t1 表示只请求一次
-T2 表示2秒超时
26、linux查找文件的一些方法
1) 按文件名查找
#在/opt目录及其子目录下查找包含文件名是以zhjedu开头的文件
find /opt -name "zhjedu*"
2) 按时间查找
#在/opt目录及其子目录下查找最近1个小时修改的文件
find /opt -mtime -1
#在/opt目录及其子目录下查找1个小时以前修改的文件
find /opt -mtime +1
3) 按类型查找
#在/opt目录及其子目录下查找目录及其子目录
find /opt -type d
#在/opt目录及其子目录下查找所有的普通文件
find /opt -type f
4) 按大小查找
#在/opt目录及其子目录下查找文件大于10M的文件
find /opt -size +10000k
27、curl命令的用法
参见1:http://blog.sina.com.cn/s/blog_62b832910100tyfi.html
参见2:http://javag.iteye.com/blog/499113
28、split切割大文件
备注:将log1_6.log.2012-03-21文件切割成10000行一个的以tt.txt开头的N多个文件
-l 表示按行切割
tt.txt 表示切割后的零碎文件的前缀
29、循环读取行
读取文件每行并输出
方法一:
方法二:
30、删除数量比较多的文件
ls当然是输出所有的文件名(用空格分割)
xargs就是将ls的输出,每20个为一组(以空格为分隔符),作为rm -rf的参数
也就是说将所有文件名20个为一组,由rm -rf删除,这样就不会超过命令行的长度了
31、for循环总结
a. for((i=1;i<=10;i++));do echo $(expr $i \* 4);done
b. 在shell中常用的是 for i in $(seq 10)
c. for i in `ls`
d. for i in ${arr[@]}
e. for i in $* ; do
f. for File in /proc/sys/net/ipv4/conf/*/accept_redirects; do
g. for i in f1 f2 f3 ;do
h. for i in *.txt
i. for i in $(ls *.txt)
for in语句与` `和$( )合用,利用` `或$( )的将多行合为一行的缺陷,实际是合为一个字符串数组
for num in $(seq 1 100)
j. LIST="rootfs usr data data2"
for d in $LIST; do
用for in语句自动对字符串按空格遍历的特性,对多个目录遍历
k. for i in {1..10}
l. for i in stringchar {1..10}
m. awk 'BEGIN{for(i=1; i<=10; i++) print i}'
注意:AWK中的for循环写法和C语言一样的
参考:http://hi.baidu.com/plp_cm/blog/item/d828d1881b05e2faf11f3607.html
32、格式转换
dos2unix, unix2dos 用来实现 DOS <=> UNIX text file 转换
33、根据起止日期打印期间的日期
34、用awk来对比两个文件
要求:输出a.txt中包含b.txt的行
命令:
备注:awk参数用法:http://bbs.chinaunix.net/thread-691456-1-1.htmlhttp://bbs.chinaunix.net/thread-1797847-1-1.html
substr($2,3):表示截取a.txt第二列从第三个字符开始的所有字符。
if($0 in a):如果b.txt的一行跟a.txt第二列截取字符的相等。
a.txt(数据源1)
----------------
12 x=abc
14 x=ccc
15 x=acd
b.txt(数据源2)
----------------
abc
ccc
efg
c.txt(结果)
----------------
12 x=abc
14 x=ccc
35、在root用户下查看端口被哪个用户占用
36、查看一个关键字的前后N行
37、根据修改时间判定文件数目(适用于大数目文件夹哦)
备注:$6表示月份,$7表示日期(最近几天只显示时间),$8表示年份。
如上命令表示:2012-08-21日产生的文件数目
38、查看软件安装的位置命令如下:
dpkg -L xxx (xxx为软件名)
比如查看gedit安装的位置:
dpkg -L gedit
39、去除UTF-8 BOM SHELL脚本
查找UTF-8 BOM文件:
grep -rl $’\xEF\xBB\xBF’ .
查找UTF-8 BOM文件并更改成UTF-8 无BOM文件:
find . -type f -exec sed ’1s/^\xEF\xBB\xBF//’ -i.bak {} \; -exec rm {}.bak \;
查找/path目录下的UTF-8 BOM文件并修改成UTF-8无BOM文件
grep -r -I -l $'^\xEF\xBB\xBF' /path | xargs sed -i 's/^\xEF\xBB\xBF//;q'
#!/bin/bash LANG=en_US.UTF-8 #get parameters sourceFile="/data/log/abc" if [ $# == 1 ] then sourceFile=$1 else echo "$1 required!" fi echo $sourceFile
备注:这里$#是传递参数的个数,$1 是具体的参数。
关于if else:
如果两条命令写在同一行则需要用";"号隔开,一行只写一条命令就不需要写";"号了。和[命令一样,要注意命令和各参数之间必须用空格隔开。if命令的参数组成一条子命令,如果该子命令的Exit Status为0(表示真),则执行then后面的子命令,如果Exit Status非0(表示假),则执行elif、else或者fi后面的子命令。if后面的子命令通常是测试命令,但也可以是其它命令。Shell脚本没有{}括号,所以用fi表示if语句块的结束。
"2.sh"的脚本,传递参数
#!/bin/bash sh 1.sh 参数1 参数2 ...
备注:多个参数之间用空格符隔开。
2、文件内容行之间的排序
#!/bin/bash sort -t= +4 文件 ”
备注:“=”表示按=号进行切割(注意:只能是单个字符),“+4”表示按第五个项进行排序。
更多参数:
-r 表示降序排序
-n 表示按数字大小排序
-k 表示根据那个字段排序,4.1,表示第4列第一个字符开始 ,5表示到第5个字段为结束
-t 后面跟分隔符,缺省是空格
例如:sort -r -n -k4.1,5
3、判断目录是否存在,没有则新建一个目录
#!/bin/bash dayDir="/home/logs/" if [ ! -d "$dayDir" ] then mkdir "$dayDir" fi
4、判断文件是否存在,有则删除
#!/bin/bash if [ -f "$FAIL_FILE" ] then rm -rf "$FAIL_FILE" echo `date`" FILE IS EXISTS: "$FAIL_FILE fi
5、找出文件中的相关行
#!/bin/bash cat 文件 |grep -a "关键词" >> result.log
备注:把文件中包含关键词的行输出到result.log中。
6、文件切分
#!/bin/bash awk -F'' '{print $1}' 文件
备注:“”表示分隔符,“print”表示换行输出(printf不换行),“$1”表示取第一项。“文件”表示要切分的文件
7、文件内容排重
#!/bin/bash awk -F',' '!a[$1]++' test.txt
备注:“,”表示按“,”号分隔;“$1”表示按第一项排重;“test.txt”表示要处理的文件。
8、grep多个关键字
#!/bin/bash cat $file |grep -a "aop=keyword1\|keyword2"
备注:多个关键字用“\|”分隔。
9、时间格式化,中间有空格的需要加引号
#!/bin/bash TODAY=`date -d today '+%Y-%m-%d %H:%M:%S'`
10、多个文件合并
#!/bin/bash cat $FILE1 $FILE2 |grep -a "关键字" > $MERGE_FILE
11、运行java项目
#!/bin/bash LANG=en_US.UTF-8 export LANG=$LANG /usr/java/latest/bin/java -cp . -Djava.ext.dirs=../lib 包.类(含main方法) -a 参数1 -b 参数2
备注:“/usr/java/latest/bin/java”表示Java环境,“-cp”表示classpath路径,“.”表示当前目录,“-Djava.ext.dirs”表示jar文件所在目录,“-a”表示参数名称,“参数1”表示参数值。
12、根据关键字统计行数,赋值给变量
#!/bin/bash COUNT=$(cat $FILE |grep -a "关键字" |wc -l)
备注:“$FILE”表示要统计的文件,“关键字”要包含的关键字,“wc”统计文件(-l行数,-w字数,-c字节数)
wc命令的功能为统计指定文件中的字节数、字数、行数, 并将统计结果显示输出。
语法:wc [选项] 文件…
说明:该命令统计给定文件中的字节数、字数、行数。如果没有给出文件名,则从标准输入读取。wc同时也给出所有指定文件的总统计数。字是由空格字符区分开的最大字符串。
该命令各选项含义如下:
-c 统计字节数。
-l 统计行数。
-w 统计字数。
这些选项可以组合使用。 输出列的顺序和数目不受选项的顺序和数目的影响。总是按下述顺序显示并且每项最多一列。 行数、字数、字节数、文件名 如果命令行中没有文件名,则输出中不出现文件名。 例如: $wc -lcw file1 file2 4 33 file1 7 52 file2 11 11 85 total 省略任选项-lcw,wc命令的执行结果与上面一样。
13、基本算术计算的方法(5种)
a.使用awk计算
#!/bin/bash ##示例1:10和12为两个参数分别对应$1和$2 echo 10 12 |awk '{printf("%d\n", $1+$2)}' ##示例2:a和b作为两个变量传入 a=10 b=12 echo |awk '{printf("%d\n", '$a'+'$b')}' ##示例3:COUNT_FAIL除以COUNT_INIT 保留4为小数,结果赋值给FAIL_INIT,[b]结果四舍五入[/b]。 COUNT_FAIL=10 COUNT_INIT=20 FAIL_INIT=`awk 'BEGIN{printf "%.4f\n",'$COUNT_FAIL'/'$COUNT_INIT'}'` echo $FAIL_INIT
备注:示例2和示例3两种写法除数和被除数都要加“'”号(单引号),否则会报错“division by zero attempted”,另外“BEGIN”也很重要哦。
b.使用bc命令
#!/bin/bash ##示例1:输出 1+2 的运算结果 echo 1+2 |bc ##示例2:COUNT_FAIL除以COUNT_INIT 保留2为小数,结果赋值给FAIL_INIT,[b]结果不四舍五入[/b]。 FAIL_INIT=`echo "scale=2; $COUNT_FAIL/$COUNT_INIT" | bc`
c.使用expr命令
#!/bin/bash count=10 count=`expr $count + 12` echo $count
d.使用let命令
#!/bin/bash ##示例1 let num1=10*20 echo $num1 ##示例2 let "num2=10*20" echo $num2
e.加双括号
#!/bin/bash ##示例1:双小括号 a=12 b=20 echo $((a*b)) echo $(($a*$b)) ##示例2:中括号 c=10 echo $[c*20] echo $[$c*20]
备注:此种写法括号里面的变量可以不用加“$”符号,但是括号外面的“$”符号一定要加上。
14、运用tee命令将日志同时输出到多个文件
tee用法功能说明:读取标准输入的数据,并将其内容输出成文件。
语 法:tee [-ai][--help][--version][文件...]
补充说明:tee指令会从标准输入设备读取数据,将其内容输出到标准输出设备,同时保存成文件。
参 数:
-a或--append 附加到既有文件的后面,而非覆盖它.
-i或--ignore-interrupts 忽略中断信号。
-help 在线帮助。
-version 显示版本信息。
例1:日志在记入log1.txt和log2.txt的同时也在控制台输出
#!/bin/bash echo "hello jack!" |tee -a log1.txt log2.txt
备注:“-a”追加,否则清空重写。
15、针对某个域进行分组统计
#!/bin/bash cat $FILE |awk -F"" '{list[$11]++;}END{for (val in list) print val, list[val];}' |tee -a $RESULT_FILE
备注:“$FILE”要处理的文件,用awk命令按“”进行切分,“$11”表示第11域(1,3,5,...),“var”表示分组名称,“list[var]”表示每组的数量。
16、查询控制命令的历史记录
#!/bin/bash history |grep "rm"
备注:查询包含“rm”字符的命令记录。
17、循环删除所有文件
#!/bin/bash for i in `ls`; do rm $i; done
备注:在文件非常多的情况下,rm * 命令不能删除所有文件。所以需要遍历删除每一个文件。
18、遍历文件夹并按第二个域对文件内容排序。
#!/bin/bash #用等号分隔,按第二个域排序 function sortfile(){ echo 'Processing: '$1 sort -t= +1 $1 > $1'_temp' mv $1'_temp' $1 } #遍历文件夹,调用排序函数 function ergodic(){ for file in `ls $1` do if [ -d $1"/"$file ] then ergodic $1"/"$file else f=$1"/"$file #调用排序函数 sortfile $f fi done } #以参数形式运行程序 if [ $# == 1 ]; then echo "parameter: "$1; ergodic $1 else echo "a file directory required!" fi
19、查看文件夹下所有文件数目和所有文件夹数目
#!/bin/bash #查看当前文件夹下所有文件数目 find . -type f |wc -l #查看当前文件夹下所有文件夹数目 find . -type d |wc -l
备注:“.”表示当前目录,可以换成其他路径。
20、shell与java正则区别
String regex = "2010-11-08.+" //或者 regex = "2010-11-08.*"
备注:JAVA中匹配以“2010-11-08"开头的字符串。
regex = "2010-11-08*"
备注:SHELL中匹配以“2010-11-08”开头的字符串。
“.*”或“.+”在java中表示任意多个字符串,如果要匹配“.”号,需要加转义“\”。 “*”在shell表示任意多个字符,加“.”或“+”号都会错误。
21、编码转换命令
iconv -f gb2312 -t utf-8 a.log > b.log
备注:表示把a.log文件从gb2312编码转成utf-8的编码,并把文件写入b.log
22、批量替换多个文件中的字符串
sed -i "s/<原始串>/<新串>/g" `grep <原始串> -rl <目标文件或目录>`
备注:
-i 表示inplace edit,就地修改文件
-r 表示搜索子目录
-l 表示输出匹配的文件名
23、常用MySQL语句
//查询mysql变量(timeout)
show variables like '%timeout'
//查询缓存变量
show status like "Qcache%"
//查询进程列表
show PROCESSLIST
24、清空memcache数据
telnet 10.27.5.71 11211
flush_all
quit //退出telnet
25、监控Tomcat并启动
#!/bin/sh export _JAVA_SR_SIGNUM=12 export JAVA_HOME=/usr/java/jdk1.6.0_11 export CATALINA_BASE=/home/co_newest_family/tomcat export CATALINA_HOME=/usr/local/apache-tomcat-6.0.18 export LD_LIBRARY_PATH=:/usr/local/lib/:/usr/local/apr/lib/:/usr/local/apr/lib/ export CATALINA_OPTS="-server -Xms1024m -Xmx2048m -XX:PermSize=128m -XX:MaxPermSize=128m -Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.port=9158 -Dcom.sun.management.jmxremote.authenticate=false -Dcom.sun.management.jmxremote.ssl=false -Dfile.encoding=UTF8 -Dmeganotes.home=/home/co_newest_family" export PATH=$JAVA_HOME/bin:$PATH:$HOME/bin date=`date "+%H:%M:%S"` message="$date|check_tomcat(81_co_newest_family)_shutdown_and_restart_it." request_url="http://10.27.5.81:9091/index.jsp" if ! wget -t1 -T2 $request_url &> /dev/null;then #pid=`ps aux | grep "\-Dcms4.home\=\/home\/co_newest_family\/"| awk '{print $2}'` #kill -9 $pid ps x|grep 'tomcat'|grep -v 'grep'|grep -v 'sh'|awk '{print $1}'|xargs kill -9 $CATALINA_HOME/bin/startup.sh wget -t1 -T2 http://10.27.5.112:8880/send.jsp?msg=$message &> /dev/null; echo "$date check tomcat shutdown and restart it." >> logs/check.log else echo "$date check tomcat ok." >> logs/check.log fi rm -f index.jsp* rm -f send.jsp?msg=*
备注:定时监控tomcat,发现挂掉,立刻重启!并发送短信和邮件报告~
-t1 表示只请求一次
-T2 表示2秒超时
26、linux查找文件的一些方法
1) 按文件名查找
#在/opt目录及其子目录下查找包含文件名是以zhjedu开头的文件
find /opt -name "zhjedu*"
2) 按时间查找
#在/opt目录及其子目录下查找最近1个小时修改的文件
find /opt -mtime -1
#在/opt目录及其子目录下查找1个小时以前修改的文件
find /opt -mtime +1
3) 按类型查找
#在/opt目录及其子目录下查找目录及其子目录
find /opt -type d
#在/opt目录及其子目录下查找所有的普通文件
find /opt -type f
4) 按大小查找
#在/opt目录及其子目录下查找文件大于10M的文件
find /opt -size +10000k
27、curl命令的用法
参见1:http://blog.sina.com.cn/s/blog_62b832910100tyfi.html
参见2:http://javag.iteye.com/blog/499113
28、split切割大文件
split -l 10000 log1_6.log.2012-03-21 tt.txt
备注:将log1_6.log.2012-03-21文件切割成10000行一个的以tt.txt开头的N多个文件
-l 表示按行切割
tt.txt 表示切割后的零碎文件的前缀
29、循环读取行
读取文件每行并输出
方法一:
#!/bin/sh while read line do echo $line done < filename
方法二:
#!/bin/sh cat filename | while read line do echo $line done
30、删除数量比较多的文件
ls | xargs -n 20 rm -rf
ls当然是输出所有的文件名(用空格分割)
xargs就是将ls的输出,每20个为一组(以空格为分隔符),作为rm -rf的参数
也就是说将所有文件名20个为一组,由rm -rf删除,这样就不会超过命令行的长度了
31、for循环总结
a. for((i=1;i<=10;i++));do echo $(expr $i \* 4);done
b. 在shell中常用的是 for i in $(seq 10)
c. for i in `ls`
d. for i in ${arr[@]}
e. for i in $* ; do
f. for File in /proc/sys/net/ipv4/conf/*/accept_redirects; do
g. for i in f1 f2 f3 ;do
h. for i in *.txt
i. for i in $(ls *.txt)
for in语句与` `和$( )合用,利用` `或$( )的将多行合为一行的缺陷,实际是合为一个字符串数组
for num in $(seq 1 100)
j. LIST="rootfs usr data data2"
for d in $LIST; do
用for in语句自动对字符串按空格遍历的特性,对多个目录遍历
k. for i in {1..10}
l. for i in stringchar {1..10}
m. awk 'BEGIN{for(i=1; i<=10; i++) print i}'
注意:AWK中的for循环写法和C语言一样的
参考:http://hi.baidu.com/plp_cm/blog/item/d828d1881b05e2faf11f3607.html
32、格式转换
dos2unix, unix2dos 用来实现 DOS <=> UNIX text file 转换
unix2dos target.$date.txt dos2unix target.$date.txt
33、根据起止日期打印期间的日期
#!/bin/sh #riqizizeng datebeg=$1 dateend=$2 #read datebeg #read dateend beg_s=`date -d "$datebeg" +%s` end_s=`date -d "$dateend" +%s` while [ "$beg_s" -le "$end_s" ] do day=`date -d @$beg_s +"%Y-%m-%d"`;//本次循环的日期 beg_s=$((beg_s+86400)) done
34、用awk来对比两个文件
要求:输出a.txt中包含b.txt的行
命令:
awk 'NR==FNR{a[substr($2,3)]=$0;next}{if($0 in a)print a[$0]}' a.txt b.txt > c.txt
备注:awk参数用法:http://bbs.chinaunix.net/thread-691456-1-1.htmlhttp://bbs.chinaunix.net/thread-1797847-1-1.html
substr($2,3):表示截取a.txt第二列从第三个字符开始的所有字符。
if($0 in a):如果b.txt的一行跟a.txt第二列截取字符的相等。
a.txt(数据源1)
----------------
12 x=abc
14 x=ccc
15 x=acd
b.txt(数据源2)
----------------
abc
ccc
efg
c.txt(结果)
----------------
12 x=abc
14 x=ccc
35、在root用户下查看端口被哪个用户占用
lsof -i:8091
36、查看一个关键字的前后N行
cat tomcat/debuglog/debug.log.2012-07-05-21 |grep -B 5 -A 25 java.net.SocketTimeoutException
37、根据修改时间判定文件数目(适用于大数目文件夹哦)
ll |awk '{print $6$7$8}' |grep Aug212012 |wc -l
备注:$6表示月份,$7表示日期(最近几天只显示时间),$8表示年份。
如上命令表示:2012-08-21日产生的文件数目
38、查看软件安装的位置命令如下:
dpkg -L xxx (xxx为软件名)
比如查看gedit安装的位置:
dpkg -L gedit
39、去除UTF-8 BOM SHELL脚本
查找UTF-8 BOM文件:
grep -rl $’\xEF\xBB\xBF’ .
查找UTF-8 BOM文件并更改成UTF-8 无BOM文件:
find . -type f -exec sed ’1s/^\xEF\xBB\xBF//’ -i.bak {} \; -exec rm {}.bak \;
查找/path目录下的UTF-8 BOM文件并修改成UTF-8无BOM文件
grep -r -I -l $'^\xEF\xBB\xBF' /path | xargs sed -i 's/^\xEF\xBB\xBF//;q'
发表评论
-
SHELL DATE命令
2012-08-27 17:59 1313转自:http://hi.baidu.com/%BC%F2%B ... -
Linux下的shell编程入门
2012-04-18 11:21 1509通常情况下,我们从命令行输入命令每输入一次就能够得到系统 ... -
linux登陆欢迎信息修改
2012-03-27 14:25 5148linux登陆欢迎信息修改 ... -
输出B文件中包含A文件的记录-文件对比
2012-03-26 18:31 1461需求:找出2.txt中包含1.txt中各行的数据行并输出到3. ... -
linux下显示历史命令的执行时间
2011-08-24 10:47 3016linux下显示历史命令的执行时间 默认的bash设置中,在 ... -
Linux上NFS配置
2011-08-20 18:41 1876一、rpm包准备 需要安装nfs-utils和portmap程 ... -
Windows下使用Jconsole远程监控Linux系统中java服务器资源占用情况
2011-08-18 22:43 14121、首先需要停止正在运行的服务:resin-XXX stop ... -
Linux部署java项目注意事项
2011-07-28 11:48 20451、java命令引入jar时可以-cp参数,但时-cp不能用通 ... -
Linux中的软链接和硬链接
2011-05-06 17:18 17301、创建方法 软链接:ln -s <源> < ... -
设置Linux环境变量的预备知识
2011-05-04 11:54 1575一、Linux的环境变量种 ... -
Linux压缩与解压缩-总结
2011-04-20 16:25 1531.tar(注:tar是打包,不 ... -
在Ubuntu 9.10上部署Larbin 2.6.3
2010-05-26 17:27 25721. 本机环境 gcc-4.4.1 Ubuntu-9.10 l ... -
Linux虚拟机上部署Web项目
2010-04-01 09:33 6785一、安装环境 1、安装JDK: 方法一、下载 ... -
VMware中如何配置网络环境?
2009-05-18 09:12 1989本地环境: 1、公司局域网,静态手动指定IP; 2、本机配置: ...
相关推荐
在这个名为"我的几个常用shell脚本"的压缩包中,包含了作者常用的Shell脚本集合,这些脚本可能涵盖日常系统管理、文件处理、数据备份等多个方面。 首先,了解Shell脚本的基本结构至关重要。一个简单的Shell脚本通常...
这个名为"常用shell脚本示例"的资源显然是为初学者设计的,目的是教授如何编写和使用基本到进阶的Shell脚本。 首先,让我们探讨一下什么是Shell脚本。Shell是操作系统提供的一个用户界面,允许用户通过命令行与系统...
常用shell脚本, Dos攻击防范(自动屏蔽攻击IP).sh 一键部署等等 Linux系统发送告警脚本.sh MySQL数据库备份单循环.sh MySQL数据库备份多循环.sh nginx 访问访问日志按天切割.sh nginx.conf nginx访问日志分析...
这个压缩包文件“常用shell脚本源码”显然包含了若干个可以用于日常任务的预编写脚本,这些脚本可以帮助用户自动化重复性工作,提高效率。下面我们将深入探讨shell脚本的一些核心知识点。 1. **基础语法**: - ...
在本资料包中,"linux常用shell脚本"包含了个人整理的运维必备脚本和配置,让我们一起深入探讨一下这个领域的知识。 1. **Shell基础知识** - **Shell类型**:主要有Bash(Bourne-Again SHell)、Sh(Bourne Shell...
"监控Oracle数据库的常用shell脚本" 监控Oracle数据库的常用shell脚本是DBA日常工作中不可或缺的一部分。本文将分享8个常用的shell脚本,涵盖了数据库实例的可用性、监听器的可用性、表空间的使用情况、无效对象的...
Linux运维必备工作常用shell脚本 本文档旨在提供了一系列实用的shell脚本,旨在帮助Linux运维工程师自动化日常工作,提高工作效率。该文档涵盖了多个方面的shell脚本,包括日志处理、服务健康检查、网络ping测试、...
本资源“常用shell脚本实战案例”聚焦于如何利用Shell脚本来解决实际问题,提升运维效率。下面我们将深入探讨其中涉及的一些关键知识点。 1. **基础语法**: - 变量:Shell脚本中的变量用于存储数据,如`name=...
监控 Oracle 数据库的常用 Shell 脚本 监控 Oracle 数据库的常用 Shell 脚本是 DBA 在日常工作中不可或缺的工具。这些脚本可以帮助 DBA 快速地检查 Oracle 数据库的可用性、监听器的可用性、日志文件中的错误信息、...
常用 shell 脚本,更加快捷的管理服务器 本文档将详细介绍常用的 shell 脚本,旨在帮助读者更加快速地管理服务器。shell 脚本是利用 Shell 的命令解释功能,对一个纯文本的文件进行解析,然后执行这些功能,也可以...
"运维人员-日常运维常用shell脚本.zip"这个压缩包很可能包含了多种适用于日常运维场景的脚本示例。 一、Shell脚本基础 Shell脚本由各种Linux或Unix命令组成,通过控制流语句(如if、for、while)进行逻辑处理。例如...
"运维 - 日常运维常用 shell 脚本.zip"这个压缩包文件显然包含了适用于运维人员的一系列实用shell脚本。以下将详细介绍这些脚本可能涉及的知识点。 1. **基础命令**:Shell脚本是基于Bash或其他Unix/Linux shell...
运维相关常用shell脚本.zip 包括了以下功能的脚本 1. zabbix 安装脚本 2. 查看系统状态的脚本:cpu、disk、iostat、load、memory、swap、vmstat 等 3. 安装 mariadb 的脚本 4. 安装 keeplived 的脚本 5. 安装 ...
Shell脚本集知识点总结 Shell脚本是一种脚本语言,经常用于自动化系统管理、数据处理和任务自动化等领域。下面是从给定的文件中提取的知识点: 1. 分割文件脚本 在给定的文件中,第一个脚本实现了文件分割的功能...
penguin Linux教程,主要内容:Linux 命令、Linux 系统运维、软件运维、精选常用Shell脚本项目资
linux常用命令以及shell脚本,常用技巧的使用
Shell脚本在一线工作中的应用非常广泛,本文总结了18个常用的Shell脚本,涵盖了文件的一致性检测、定时清空文件内容、检测网卡流量、计算文档每行出现的数字个数等多个方面。 一、检测两台服务器指定目录下的文件...
一些shell脚本,用于Linux服务器的运维,以及数据库的运维,在日常工作中很有用