常用shell集锦
原文链接 : http://www.cnblogs.com/serendipity/articles/2112828.html
1、lsof -i:9160 :查看9160端口的占用情况 。
2、grep /query/report/list *.do 1>hell0 2>world 查询,正确输入到hello文件中,错误到world中
3、ls | wc -l 显示文件的个数
4、tail -fn 100 stdout.log
5、sudo apt-get install unrar 安装unrar命令
6、chmod -R a+x hadoop-0.21 给文件夹以及其所有子文件执行的权限
7、tar zxvf hadoop-0.18.3.tar.gz
8、tar -czvf hadoop_001 hadoop-0.21 压缩后文件名字,要压缩文件夹 只打包,不压缩
9、scp id_rsa.pub dev@10.0.0.22:/home/dev 远程复制的命令 将本地的id_rsa.pub复制到10.0.0.22的/home/dev目录下 。
10、 grep -B 7 'publishTime=' logs/newsinfo.log.20120131 |grep -E 'publishTime=|com.gemantic.analyse.news.service.impl.IndexServiceImpl' |awk '{print $1$2}' |awk '{if(NR%2==0)print $0;else printf $0 "##"}'
将两行内容显示在一行,用##连接起来
11、date +%s 显示当前时间的秒数,详见 man date
12、打包但不压缩的命令:tar -cvf hadoop_001 hadoop-0.21 压缩后文件名字,要压缩文件夹
解开打包的命令:tar -xvf hadoop_001 将打的hadoop_001按照原有的文件目录解压开 。
13、pwd 显示当前目录路径
14、crontab -l 查询本机上所有定时执行的脚本
15、netstat -an | grep 8080 查看端口
16、tail -fn 100 stdout.log |grep ‘’ 重定向tail的结果并搜索,可以动态查看自己想要看的一部分 。
17、top 统计cpu以及内存的使用情况 。
18、du -sh 文件夹名称 :查看该文件(夹)的占用空间 。
19、ps -eo pid,tty,user,comm,stime,etime :查询进程的开始时间、结束时间 。
20、shift :在shell中每使用一次,变量的位置就会向前提前一下(原来$3变成$2,原来的$2,变成$1,原来的$1变成$0) ,还有一种用法默认shell只能使用9个参数$1-$9 ,但shell可以传多个,使用shift就可以使用后面的参数 。
21、sort exception.2011-08-31 |uniq -c 先将文件exception.2011-08-31中的每行数据按照字母序排列,然后通道传给uniq ,在统计一样的个数 。
22、grep 'optimized query' logs/stdout.log |grep -v "stock:mark" |grep 'stock:' |grep '2011/10/24'| awk '{ print substr($2,1,8) }'|uniq -c
grep后的数据格式:2011/10/24 12:10:41.230 INFO [com.gemantic.query.QueryProducer] [] optimized query:+stock:长青集团 +(+MARK:mark -type:xhnewsflash -type:xhpriceflash) ,统计每毫秒的查询的个数 。
23、sudo chown -R dev.dev opt 更改文件夹opt的用户和相应的组
24、for gdocfile in `ls /data/gdoc/|awk '{print $0}'|sort` ;do
java ${JAVA_ARGS} ${MAIN_CLASS} $gdocfile >"$gdocfile".log
done
for 循环,注意`ls /data/gdoc/|awk '{print $0}'|sort` 两边的两个引号。
26、取当天日期为`date +%Y%m%d`
取昨天日期为`date -d yesterday +%Y%m%d`
取两天前日期为`date -d -2day +%Y%m%d`
27、grep -E '20197|COMMAND' stdout.log 多个条件 或关系 的grep
28、grep 'masterId=' newsinfo.log.20111115 | sort | uniq -c |sort -k1n -k2n -k3n
结果统计后按照统计的个数排序 ,其中 uniq -c 是对连续出现的id进行累计计算,并把总数放到前面。
-k1n -k2n -k3n 的作用是窃取结果的第一列、第二列,第三列 进行排序并且按数字排序(n的作用), -r 是反序。
29、cat ../logs/newsinfo.log.* | grep -B 7 "masterId=$categoryid" |awk '{if ($0 ~ /pageId=/) print $0}' |sort |uniq -c |awk -F '=' '{ if (NR<15 && $2 != $categoryid) print "<a href=\"http://info.gemantic.com:9085/news/detail.do?id=" $2 "\">" $2 "</a><br>"}'>>$filename
在newsinfo.log.* 中查找,然后awk,然后去重,然后awk判断(使用外面的变量categoryid)
30、cat /proc/cpuinfo |grep -E 'processor|physical id|core id' |awk '{if(0==NR%3)printf("%s\n",$0);else printf("%s\t",$0)}'
31、grep 三行,然后通过后面的awk将列转换成行
bin=`dirname "$0"`
bin=`cd "$bin"; pwd`
以上两个命令用于shell脚本中,第一个是得到该脚本所在的目录名称(.),第二行:进入该目录然后调用pwd得到该目录的绝对路径 。
32、
判断字符串是否为空
if [ "$str" = "" ]
if [ x"$str" = x ]
if [ -z "$str" ]
echo $counter
((counter++))
echo $counter
let counter++
echo $counter
counter=$(expr $counter + 1)
echo $counter
while read line
do
echo $line
done < file(待读取的文件)
----------------------------------------------------------------------------
----------------------------------------------------------------------------
#!/bin/bash
cat file(待读取的文件) | while read line
do
echo $line
done
----------------------------------------------------------------------------
----------------------------------------------------------------------------
for line in `cat file(待读取的文件)`
do
echo $line
done
----------------------------------------------------------------------------
说明:
for逐行读和while逐行读是有区别的,如:
$ cat file
aaaa
bbbb
cccc dddd
----------------------------------------------------------------------------
$ cat file | while read line; do echo $line; done
aaaa
bbbb
cccc dddd
----------------------------------------------------------------------------
$ for line in $(<file); do echo $line; done
aaaa
bbbb
cccc
dddd
do
case "$optname" in
"F")
echo "Option $optname is specified $OPTARG"
;;
"C")
echo "Option $optname has value $OPTARG"
;;
esac
echo "OPTIND is now $OPTIND"
done
end_time=`date +"%Y-%m-%d %H:%M:%S"`
start_time=`date -d "${end_time} 30 minute ago" +"%Y-%m-%d %H:%M:%S"`
exception=`ssh $host cat $log_file | awk -F "," -v
st="$start_time" -v et="$end_time" '{if($1>=st &&
$1<=et){print $0}}' | grep -E 'Exception|Error ' | tail -n10`
42、查看cpu时间的详细情况
http://www.cnblogs.com/ggjucheng/archive/2012/01/05/2312625.html
标签:
上一篇: 使用maven创建web项目
下一篇: awk 命令详解