date1=`date "+%Y-%m-%d %H:%M:%S"` ==》2015-05-11 17:06:48
0:free -m 内存使用状态
1:tail -f 不断的刷新日志信息 例如 tail -f logs.log 退出Ctrl+c
2:ssh -l 用户名 ip 登录到指定的主机 exit退出
3:把bin目录下的文件打包 cd bnms(bin在bnms目录中) ls : bin conf data logs (cd到bin的上级目录) http://blog.chinaunix.net/uid-13745643-id-2873882.html
tar -cvf bin.tar bin/ (打包后的文件名为bin.tar)
tar -tvf bin.tar (列出bin.tar中的文件)
4:uname -a 显示系统名称、结点名称(电脑名称)、操作系统的发型版号、操作系统版本、运行系统的机器ID号
5:zpro=`ps aux |grep -v grep | grep /echnweb/cluster/nginxweb/sbin/nginx | awk '{print $8}'| grep "^Z" | wc -l`
(1):awk '{print $4}'假设你读入的是abcdef gh i j,那么$1="abc", $2 = "def", $3 = "gh", $4 =i, $5 = j, $0 = "abc def gh i j"(awk 默认以空格分割 自定义的话用 例如以“/"分割 :awk -F '/' '{print $2}')
(2):grep -v grep 在文档中过滤掉包含有grep字符的行s
(3):grep "^Z" 匹配以Z开头的(ps aux Z是僵尸进程)
(4):wc –l 显示一个文件的总行数
(5):if [[ $zpro -eq 0 ]]$?是shell变量,表示"最后一次执行命令"的退出状态.0为成功,非0为失败,意思就是if语句前一个命令执行成功,就怎么样
awk中的BEGIN和 END
在 awk中两个特别的表达式,BEGIN和 END,这两者都可用于 pattern中,提供 BEGIN 和 END 的作用是给程序赋予初始状态和在程序结束之后执行一些扫尾的工作。任何在 BEGIN 之后列出的操作(在{}内)将在 awk 开始扫描输入之前执行,而 END 之后列出的操作将在扫描完全部的输入之后执行。因此,通常使用BEGIN来初始化变量,使用END 来输出最终结果。Awk中的循环语句与C很相似,包括do…while,for,continue/break,while等,条件语句与C相似,但它有更好地支持。
例:cat zhang.txt |awk-F '/' 'BEGIN {count=0;}{if($2!=""&&$2!="000000"){count=count+1;}}END {print count}' 和cat zhang.txt |awk -F '/' '{print $2}' |wc -l此处的BEGIN END实现的和wc -l的功能一样 ,统计行数的 不过是BEGIN,END 中可以添加条件
cat zhang.txt |awk 'BEGIN { FS="/";count=0;}{if($2!=""&&$2!="000000"){count=count+1;}}END {print count}'
echo "1 2"|awk '{print $1, $2 ";" $2}' 输出1 2 ;2 如果$1和$2中间没有,则输出12;2
[bnms@zj-web1 bin]$ vi zengtest2.sh #读入的两个数,赋给两个变量i1 i2
#!/bin/sh
echo "1 2"|awk '{print $1,$2}'|while read i1 i2
do
echo "i1=${i1} i2= ${i2}"
done
输出:i1=1 i2= 2
6:du -sh *查看当前目录下的所有文件(夹)大小
语法格式
du [-ahskm] 文件或者目录名
参数解释
-a : 列出所有的文件与目录容量,因为默认仅统计目录的容量而已
-h :以人们较易读的容量格式呈现(G/M/K)显示,自动选择显示的单位大小
-s :列出总量,不列出每个个别的目录占用容量
-k :以KB为单位显示
-m:以MB为单位显示
实例:
查看每个文件目录下的文件大小
du -h
查看当前目录大小
du -sh ./
查看某一指定目录大小
du -sh dirName
在指定目录下显示5个占用空间最大(最小)的目录或文件
最大:
du -sh * | sort -nr | head
最小:
du -sh * | sort -n | head
7:cp命令
CP命令
格式: CP [选项] 源文件或目录 目的文件或目录
选项说明:-b 同名,备分原来的文件
-f 强制覆盖同名文件
-r 按递归方式保留原目录结构复制文件
cp -r /tmp/a /root/a 记得有空格
8:cut (http://www.cnblogs.com/siqi/p/3608893.html)
参数列表:
-b 按字节选取 忽略多字节字符边界,除非也指定了 -n 标志
-c 按字符选取
-d 自定义分隔符,默认为制表符。
-f 与-d一起使用,指定显示哪个区域。
that contains no delimiter character, unless
the -s option is specified
--complement 补全选中的字节、字符或域
-s, --only-delimited 不打印没有包含分界符的行
--output-delimiter=字符串 使用指定的字符串作为输出分界符,默认采用输入
的分界符
范围控制:
n:只有第n项
n-:从第n项一直到行尾
n-m:从第n项到第m项(包括m)
-m:从一行的开始到第m项(包括m)
-:从一行的开始到结束的所有项
cat /etc/passwd | cut -b1-3 #取每行的第1-3字字节
cat /etc/passwd | cut -b1-3,5-7,8 #取每行的第1-3,5-7,8的字节(后面的数字会先进行从小到大的排列) 需要事先知道具体字节,很容易出错
cat song.txt |cut -nb 1,2,3#当 -b 添加 -n 后则不会分割多字节 (我的系统是utf-8,所以需要用三个字节来表示一个汉字)
cat /etc/passwd | cut -c1,3 #适用于中文
cat /etc/passwd | cut -d : -f 3 #以:分割,取第三段
cat /etc/passwd | cut -d '' #以空格进行分割,且是一个空格
缺点: 有的时候分隔符很难确定
例如:tail -n 2 zhang.txt| head -n 1|awk '{print $1}'|cut -d"/" -f5 //读取zhang.txt文件最后两行的第一行(倒数第二行)以空格分割 取第一段 第一段再以"/"分割 取第5段
例如:zhang.txt内容:
sh/bnms/appagent/bin/tb_srvloga.sh 20141203
sh/bnms/appagent/bin/tb_srvlogb.sh 20141203
sh/bnms/appagent/bin/tb_srvlogc.sh 20141203
执行结果为:tb_srvlogb.sh
tail -n +1 zhang.txt // 或tail -1 zhang.txt 执行结果(从第一行开始):
sh/bnms/appagent/bin/tb_srvloga.sh 20141203
sh/bnms/appagent/bin/tb_srvlogb.sh 20141203
sh/bnms/appagent/bin/tb_srvlogc.sh 20141203
tail -n 1 zhang.txt (最后一行)
sh/bnms/appagent/bin/tb_srvlogc.sh 20141203
除了最后2行的全部内容:head -n -2 zhang.txt
sh/bnms/appagent/bin/tb_srvloga.sh 20141203
第14行:head -n 14 dblocktest.txt |tail -n 1 //或head -14 dblocktest.txt(head -n 14 前14行或head -14 ;tail -n 1 最后一行)
(总结:
tail -n +数字:从第多少行开始的数据
tail -n 数字:最后多少行的数据
head -n -数字:除了最后多少行的数据
head -n 数字:前多少行的数据
)
9:grep
在linux下如果要查找包含某个关键字的文件,如要在/root/目录下搜索带有关键字“www”的文件,在终端下运行命令:
区别:(1)find命令是根据文件的属性进行查找,如文件名,文件大小,所有者,所属组,是否为空,访问时间,修改时间等。
(2)grep是根据文件的内容进行查找,会对文件的每一行按照给定的模式(patter)进行匹配查找。
find /root/ –type f |xargs grep "www" //可以用通配符* 例如"www*"
grep -r "test" /root/
查找关键字出现在第几行
grep -n kerword filename
10:tar
tar 解压缩命令
tar
-c: 建立压缩档案
-x:解压
-t:查看内容
-r:向压缩归档文件末尾追加文件
-u:更新原压缩包中的文件
这五个是独立的命令,压缩解压都要用到其中一个,可以和别的命令连用但只能用其中一个。下面的参数是根据需要在压缩或解压档案时可选的。
-z:有gzip属性的
-j:有bz2属性的
-Z:有compress属性的
-v:显示所有过程
-O:将文件解开到标准输出
下面的参数-f是必须的
-f: 使用档案名字,切记,这个参数是最后一个参数,后面只能接档案名。
# tar -cf all.tar *.jpg
这条命令是将所有.jpg的文件打成一个名为all.tar的包。-c是表示产生新的包,-f指定包的文件名。
# tar -rf all.tar *.gif
这条命令是将所有.gif的文件增加到all.tar的包里面去。-r是表示增加文件的意思。
# tar -uf all.tar logo.gif
这条命令是更新原来tar包all.tar中logo.gif文件,-u是表示更新文件的意思。
# tar -tf all.tar
这条命令是列出all.tar包中所有文件,-t是列出文件的意思
# tar -xf all.tar
这条命令是解出all.tar包中所有文件,-x是解开的意思
压缩
tar –cvf jpg.tar *.jpg //将目录里所有jpg文件打包成tar.jpg
tar –czf jpg.tar.gz *.jpg //将目录里所有jpg文件打包成jpg.tar后,并且将其用gzip压缩,生成一个gzip压缩过的包,命名为jpg.tar.gz
tar –cjf jpg.tar.bz2 *.jpg //将目录里所有jpg文件打包成jpg.tar后,并且将其用bzip2压缩,生成一个bzip2压缩过的包,命名为jpg.tar.bz2
tar –cZf jpg.tar.Z *.jpg //将目录里所有jpg文件打包成jpg.tar后,并且将其用compress压缩,生成一个umcompress压缩过的包,命名为jpg.tar.Z
rar a jpg.rar *.jpg //rar格式的压缩,需要先下载rar for linux
zip jpg.zip *.jpg //zip格式的压缩,需要先下载zip for linux // zip -r activemq.zip ./activemq/ 压缩activemq文件夹下所有文件
解压
tar –xvf file.tar //解压 tar包
tar -xzvf file.tar.gz //解压tar.gz
tar -xjvf file.tar.bz2 //解压 tar.bz2
tar –xZvf file.tar.Z //解压tar.Z
unrar e file.rar //解压rar
unzip file.zip //解压zip
总结
1、*.tar 用 tar –xvf 解压
2、*.gz 用 gzip -d或者gunzip 解压
3、*.tar.gz和*.tgz 用 tar –xzf 解压
4、*.bz2 用 bzip2 -d或者用bunzip2 解压
5、*.tar.bz2用tar –xjf 解压
6、*.Z 用 uncompress 解压
7、*.tar.Z 用tar –xZf 解压
8、*.rar 用 unrar e解压
9、*.zip 用 unzip 解压
tar -cvf 文件名.tar ./collProcess/ //压缩当前目录(ls -ltr)collProcess文件夹下的文件 命名为 "文件名.tar"
tar -xvf 文件名.tar //解压
11:find
Linux下的Find命令查找文件名的用法 如需要查找redhat-lsb-3.1.121.rpm这个包 :find /bnms -name "lsb*" //在/bnms文件下查找文件
12:get ,put
sftp bomc@10.155.0.5
ls
get/put 文件名 //下载和上传文件
13:sed
1. 删除file.txt的1~3行
sed -i '1,3d' file.txt
-i 选项用于直接修改原文件。
2. 删除file.txt第4行及之后的所有行
sed -i '4,$d' file.txt
$表示文件的最后一行。
3 如果是要删除第三行:
sed -i '3d' 1.txt
4 如果删除以Love开头的行
sed -i '/^Love/d' 1.txt
5 删除包含Love的行
sed -i '/Love/d' 1.txt
查看文件的第90行到100行:
sed -n '90,100p' wang.txt
如果查看某一行用:
sed -n '100,1p' wang.txt即可
sed -n 'a,bp' song.txt读取自第a行到第b行的数据
if(a > b ) return 第a行
例:查找一个文件关键字首次出现在哪一行,并删除1至这一行 :
grep -n 2015-12-28 insertservinvokeapp1.sql|head -n 1
输出结果:4727524
sed -i '1,4727524d' insertservinvokeapp1.sql
14:date用法
linux date 昨天
date -d '-1 day' +%Y%m%d-%H%M%S
取前一个小时
date -d '-1 hour' +%Y%m%d-%H%M%S