文章标签 ‘linux’

cd命令的几个小技巧

2011年9月5日 没有评论

话说cd这个命令是Linux上使用率最高的两个命令之一不为过吧(另一个当然是ls了),前两天看到了一个cd命令的小技巧是我一直都不知道的,呵呵,这里顺便记下来。

cd -		#回到上次所在目录,感觉还是比较有用,省略了很多输入。
cd !$		#把上个命令的参数作为输入。
cd  		#回到主目录
cd ~		#同样也是回到主目录
分类: Linux 标签: , ,

linux下find命令根据系统时间查找文件用法

2011年9月5日 没有评论

find 命令有几个用于根据您系统的时间戳搜索文件的选项。这些时间戳包括

mtime		文件内容上次修改时间
atime		文件被读取或访问的时间
ctime		文件状态变化时间

mtime 和 atime 的含义都是很容易理解的,而 ctime 则需要更多的解释。由于 inode 维护着每个文件上的元数据,因此,如果与文件有关的元数据发生变化,则 inode 数据也将变化。这可能是由一系列操作引起的,包括创建到文件的符号链接、更改文件权限或移动了文件等。由于在这些情况下,文件内容不会被读取或修改,因此 mtime 和 atime 不会改变,但 ctime 将发生变化。

这些时间选项都需要与一个值 n 结合使用,指定为 -n、n 或 +n。

N * 24
+1	表示	1 * 24 +24小时以外..
+0	表示	0 * 24 +24小时以外
1	表示	1 * 24 + 24 到 24 之间..
0	表示	0 * 24 + 24 到 0 之间..
-1	表示	0 * 24 +24 内,甚至为未来时间...

1.当前时间24小时—当前时间(昨天-今天)
#find . -mtime 0
2.当前时间48小时前–当前时间24小时前(前天-昨天)
#find . -mtime 1
3.当前时间48小时前(2天前)
#find . -mtime +1
4.当前时间24小时–当前时间(昨天-今天)
#find . -mtime -1

sed,awk使用小记

2011年8月25日 没有评论

awk 默认是用空格作为分隔符,后面的大括号需要用单引号引起来,不能用双引号,否则就得不到想要的结果,如果要指定分隔符,使用 -F 分隔符。例如从文本-rw-r–r– 1 root root 165 Aug 25 12:51 runAll.sh中获取165,可以使用命令:echo “-rw-r–r– 1 root root 165 Aug 25 12:51 runAll.sh” | awk -F” ” ‘{print $5}’,其中 awk -F” ” ‘可以省略.。

sed -e  patt 中的patt需要用引号引起来,单引号双引号都行。sed能很方便的将文本中指定字符串替换成另外的字符串,配合其他的命令可以一次性把一个目录下所有文件进行替换操作。例如把文本 “start zhou yang end”替换成“start yang zhou  end”, 即把yang前面的一个单词和与yang换位置,可以使用命令:

echo "start zhou yang end" | sed -e 's/ \(.*\) \(yang\)/ \2 \1/g'

。命令:

grep "114.87.189.33"  * -R | awk -F: '{print $1}' |sort |uniq | xargs sed -i "s/114.87.189.33/214.187.189.33/g"

则会把当前目录下所有文件的114.87.189.33替换成214.187.189.33。注意sed的patt里很多符号需要转义的,比喻()等,g表示替换全部。

关于sed,awk的用户可以参看 linux下监控网卡流量的shell脚本 中的用法。

另外在shell中把命令的输出结果存放在一个变量可以用以下两种方式

1,$var = `cmd`

2,  $var = $(cmd)

分类: Linux 标签: , ,

linux下监控网卡流量的shell脚本

2011年8月25日 没有评论

linux下可以很容易获取网卡信息,使用命令 cat /proc/net/dev 即可。该命令详细列出当前网卡流入流出的字节总数,要监控网络的流量,只需要按一定的时间间隔去读取流量信息,然后做一下简单的四则运算即可。附完整的脚本如下:

#!/bin/bash

usage() {
        echo "Useage : $0"
        echo "eg. sh $0 eth0 2"
        exit 1
}

if [ $# -lt 2 ]
then
        usage
fi

eth=$1
timer=$2

in_old=$(cat /proc/net/dev | grep $eth | sed -e "s/\(.*\)\:\(.*\)/\2/g" | awk '{print $1 }')
out_old=$(cat /proc/net/dev | grep $eth | sed -e "s/\(.*\)\:\(.*\)/\2/g" | awk '{print $9 }')

while true
do
        sleep ${timer}
        in=$(cat /proc/net/dev | grep $eth | sed -e "s/\(.*\)\:\(.*\)/\2/g" | awk '{print $1 }')
        out=$(cat /proc/net/dev | grep $eth | sed -e "s/\(.*\)\:\(.*\)/\2/g" | awk '{print $9 }')
        dif_in=$(((in-in_old)/timer))
        dif_in=$((dif_in/1024))
        dif_out=$(((out-out_old)/timer))
        dif_out=$((dif_out/1024))
        ct=$(date +"%F %H:%M:%S")
        echo "${ct} -- IN: ${dif_in} KByte/s     OUT: ${dif_out} KByte/s"
        in_old=${in}
        out_old=${out}
done

exit 0
分类: Linux 标签: , ,

linux下sort命令使用笔记

2011年8月25日 没有评论

sort,顾名思义就是用来排序的,不关可以对已存在的文件中的行进行排序,也能够对管道输出进行排序。该命令常用的参数有如下一些:

-f		将小写字母与大写字母同等对待,即忽略大小写
-n		按数字(算术值)大小排序
-r		降序的形式来排序,默认是升序
-o		排序的结果输出到指定文件,如果输出文件是输入文件之一,
		sort先将该文件的内容写入一个临时文件,然后再排序和写输出结果。
-i		比较中忽略任何非显示字符
-t"sepchar"	指定sepchar为单一的字段分隔符,把行分割成多个列,
		可以对指定列一个或多个列来作为排序字段
+pos1 -pos2	pos为列的index,指定一个或几个字段作为排序关键字,
		字段位置从posl开始,到pos2为止(包括posl,不包括pos2
		也可以通过-k来达到+pos1 -pos2的选择关键列的目的

sort默认是把一行的所有信息都作为排序关键字,下面通过例子来说明按任意字段来作为关键字的排序

例如文本(文件名为test.txt)如下:

yams:104
turnips:8
potatoes:15
carrots:104
green beans:32
radishes:5
lettuce:15

需要按照“:”后面的数值大小进行排序,第一步要找到一个字符来作为分隔符,这里一目了然的就可以选择“:”,第二步确定该列是第几列,注意列的编号是从0开始的,所以这里排序的关键字段就是第一列,另外需要注意的是按照数字的大小来排序,所以不能忘记 -n,否则得到的结果不是预期的,按字符排序的话108 < 15 < 32 < 5。根据分析得到的命令就是:sort -t: +1 -2 -n test.txt 执行的结果如下:

radishes:5
turnips:8
lettuce:15
potatoes:15
green beans:32
carrots:104
yams:104

同样可以使用 -k来代替 +1 -2指定排序关键列,例如:sort -t: -k2 -n test.txt, 注意: -k指定的列是编号是从1开始的。

分类: Linux 标签: ,

Centos下连接打印机

2011年8月24日 没有评论

利用cups能正确连接到打印机。在浏览器中输入 http://localhost:631/ 后出来配置界面,选择 “Add Printer”,在name中输入打印机的名字(本地显示的名字),Location输入打印机的IP地址,下一步是选择设备,在Device中选择打印机对应的设置,例如:AppScoket/HP JetDirect,下一步,Device URI填写socket://打印机的IP,再下一步在Make中选择HP(实际根据打印机的型号来选择),下一步出来的Model中选择对应的驱动,然后点 “Add Printer”即完成打印机的连接。

另外通过系统-〉管理-〉正在打印 中可以看到刚才安装的打印机。

分类: Linux 标签: , ,

windows下使用SecureCRT登陆AWS EC2服务器

2011年8月17日 2 条评论

SecureCRT是windows下一款连接linux服务器的优秀软件,通过它可以方便的操作多台服务器,如果是自己的服务器,知道帐号密码,很轻松就能连上服务器,AWS的EC2服务器不是采用用户名加密码的认证方式,而是用密钥来认证,在创建instance时,会提示使用以前(如果存在)或创建一个新的key pair,同时会提示下载一个xxx.pem的密钥文件到本地硬盘,在Linux下使用terminal登陆aws的ec2很容易,例如:ssh -i xxx.pem ec2-user@public dns,用户名固定是ec2-user,注意xxx.pem的权限是600,public dns在web的管理后台选中某个instance,在Description可以找到,但是SecureCRT中不能直接使用xxx.pem,需要借助linux系统创建一个xxx.pem对应的xxx.pem.pub文件,具体操作如下:

1 上传文件到linux系统下,确保其权限是600, 命令 chmod 600 xxx.pub
2 改写密钥格式为 OpenSSH,如果询问passphrase可以留空(直接回车)命令 ssh-keygen -p -f xxxx.pem
3 生成公密钥 .pub 文件 命令 ssh-keygen -e -f xxxx.pem > xxxx.pem.pub

至此,就创建了在SecureCRT中所使用的验证文件.

在SecureCRT选连接->新建会话->协议选择ssh2 下一步 -> 主机名填写public dns 下一步,用户名填写ec2-user 下一步 -> 完成.
在连接的列表中找到刚创建的连接,右键属性,左边树中选择SSH2,然后选择右边鉴权中公钥,点属性,在出来的对话框中选择使用身份或证书文件,通过浏览文件指定到刚在Linux下生成的文件即可.注意xxx.pem.pub和xxx.pem要在同一文件夹下,而且公钥的文件名一定要是下载下来的文件名后加.pub,否则会提示找不到私钥的.

分类: Linux 标签: , , , ,

linux下shell的浮点数四则运算

2011年8月14日 没有评论

shell下的四则运算有两种方式,一个是使用expr,另外一个用$(()),例如 expr 数1 运算符(+-*/)  数2或$(( 数1 运算符(+-*/)  数2)),需要注意的是使用expr时操作符的前后需要一个空格.但是上述两个都不能进行浮点数的运算,为了达到计算浮点数,可以借助命令awk来实现.例如 awk ‘BEGIN{print 7.01/5+2.3 }’执行后结果为3.702.如果两个操作数是保存在变量中,必然 a=2.2,b=5,需要计算a除以b该怎么操作呢? awk ‘{print $a/$b}’,很可惜,这样是不行的,似乎在awk里面无法通过$a来获取变量的值,但是可以通过echo的方式把变量值传入, echo “$a $b” | awk ‘{print $1/$2}’,这样就可以了,如果还是操作数,都加在echo中就行了.

分类: Linux 标签: , , , ,

linux rsync 文件备份

2011年8月12日 没有评论

rsync可以让两个目录的内容一致,它同步只会同步有更新过的文件,减少传输量。可以是本机上的两个目录,也可以是本机的目录同步到服务器上,还可以是把服务器上的目录同步到本机上。

基本命令是 rsync 命令的参数 源目录 目的目录

rsync可以基于ssh协议来做,这样就省去了很多配置rsync server的麻烦,如果两个机器已经实现ssh无密码登陆,那么rsync就会提示输入密码,还有一种是通过密钥文件来实现免密码,例如下面

1、rsync -vzrtopg –progress -e ssh –delete 用户名@服务器IP:/var/www/dirA/ /var/bak/

2、rsync -vzrtopg –progress -e “ssh -i /path/pwd.pem” –delete 用户名@服务器IP:/var/www/dirA/ /var/bak/

就是把服务器上的dirA目录同步到本地的/var/bak目录下,其中方法1是用户已经做了ssh免密码登陆,方法2是通过密钥(存放在/path 下的pwd.pem文件)来同步

分类: Linux 标签: , , ,

无觅相关文章插件,快速提升流量