linux shell 编程

awk
找出第一列重复的行 awk -F’\t’ ‘{a[$1]++;if(a[$1] > 1){print $0};}’ pm.txt
`awk -F\”\\t\” ‘{ if (NF> 0 && \$12 != “-”) {print \$12\”\\t\”\$11} }’ $cookie_sort_file_path/cookie_sort*.log > url.log`;

找出第一行的元素个数:
awk ‘{if(length(a[$1])==0){a[$1]=0;num++;}} END{print num}’ opentc_top_site.20110709

每行的第一个字段都是url,第二个字段是ruleid,找出每个ruleid影响的url数目。
awk ‘{a[$2]++}END{for (j in a) if(a[j] > 10000 ){print j,a[j]}}’ mask_url_hadoop.1

awk脚本是由模式和操作组成的:pattern {action} 如$ awk ‘/root/’ test,或$ awk ‘$3 < 100′ test。

Sed
每行插入一行代码 echo “\n”; sed a’echo “\\n”;’ str.php > str2.php
将文件中的非打印字符用ASCII码打出:sed l str.php
打印出含有LC的行: sed -n -e ‘/.*LC.*/p’ str.php
将str.php含有LC的行,中的TIME替换成tttttttt: sed -e ‘/LC/s/TIME/tttttttttttttttt/’ str.php

Shell
for i in 09 10 11 12 13 14 15 16 ;do mkdir 201003$i ;done
sh -x filename
Shell编程:
设置编程时的不同模式;
${var:-value};
双圆括号结构:允许算术扩展和赋值、在Bash中使用C语言风格变量操作的一种处理机制;
local_backup_path=”$(pwd).backup”
current=`date “+%Y%m%d%H%M%S”`

enca

enca -L zh_CN file 检查文件的编码

enca -L zh_CN -x UTF-8 file 将文件编码转换为”UTF-8″编码

enca -L zh_CN -x UTF-8 < file1 > file2 如果不想覆盖原文件可以这样

sort

`sort result.log | uniq -c | sort -gr > result_sort.log`;

Grep

Grep -E http://[^/]*$

在命令提示符下无法直接按TAB键输入制表符,你是怎么输出来的?

先按 CTRL+V,再按 Tab 键

Vimdiff

-O 垂直显示     -o 水平上下显示

]c 跳到下一个差异点 [c跳回上一个差异点
dp 把一个差异点中当前文件的内容复制到另一个文件里。

Do 把另一个文件的内容复制到当前行中。

:diffupdate 手工来刷新比较结果。

Mail

cat sql  |mail -s “请验证” yanlichun@baidu.com

perl

查看已经安装的perl包,140行的代码

安装NET::SSH

perl -MCPAN -e shell

cpan> install NET::SSH

i /NET::SSH/

ssh

远程执行grep时,正则表达式要经过转义。(是否是所有命令都要对参数转义,不止是grep?)

Ssh host Grep –E \\\burllist filename

Grep

OK: grep -E “\b以下输fdf     ” /home/mis/mis/urlmask/file/sensitive_government_exact

NO: grep -E “\b斤斤计较斤斤计较斤斤计较斤斤计较      ” /home/mis/mis/urlmask/file/sensitive_government_exact

Posted in linux by pangyt. No Comments

du

du -s /usr/* | sort -rn 字节排序
du -sh /usr/* | sort -rn M排序
du -s /usr/* | sort -rn | head
du -s /usr/* | sort -rn | tail

Posted in linux by pangyt. No Comments

Find

find ./ -type d -name “CVS” -exec rm -r {} \;
find . -type f -perm 644 -group root -exec ls -l { } \;
find logs -type f -mtime +5 -exec rm { } \;
find . -name “admin.log[0-9][0-9][0-9]” -atime -7 -ok
find . -perm -7 -print | xargs chmod o-w
find ./ -name “*.html” -exec sed -i ‘s/law.baidu.com/tc-test-aos00.tc.baidu.com:8080\/mis/’ {} \;
find ./ -name “*.html” |xargs sed -i ‘s/law.baidu.com/tc-test-aos00.tc.baidu.com:8080\/mis/’

Posted in linux by pangyt. No Comments

Linux Locale

[语言[_地域][.字符集] [@修正值]。
LC_ALL > LC_* >LANG

Posted in linux by pangyt. No Comments

======================== 同步到主干-==========================

先co主干代码,然后在主干的末端执行,svn merge trunk_url tag_url,这两个tag 分别是主干和你要同步的tag的url
然后ci,
再打一个PD_BL_MAIN的tag,再回到这里点同步到主干按钮就ok了
拿这个例子,就是写1.0.4.1的url,然后打一个tcopen_1-0-4-1_PD_BL_MAIN的tag就行
1、pangyt_svn co https://svn.baidu.com/app/wise/trunk/transcoder/tcopen
2、cd tcopen;
3、pangyt_svn merge https://svn.baidu.com/app/wise/trunk/transcoder/tcopen https://svn.baidu.com/app/wise/tags/transcoder/tcopen/tcopen_1-0-3-4_PD_BL
4、pangyt_svn ci;
5、pangyt_svn cp https://svn.baidu.com/app/wise/trunk/transcoder/tcopen https://svn.baidu.com/app/wise/tags/transcoder/tcopen/tcopen_1-0-3-4_PD_BL_MAIN

Posted in linux by pangyt. No Comments

Date

昨天 (前一天)
date –date=’1 days ago’ “+%Y-%m-%d”
date -d ’1 days ago’ “+%Y-%m-%d”
date -d yesterday “+%Y-%m-%d”
明天 (後一天)
date –date=’1 days’ “+%Y-%m-%d”
date -d ’1 days’ “+%Y-%m-%d”
date -d tomorrow “+%Y-%m-%d”
1小時前
date –date=’1 hours ago’ “+%Y-%m-%d %H:%M:%S”
1小時後
date –date=’1 hours’ “+%Y-%m-%d %H:%M:%S”
1分鐘前
date –date=’1 minutes ago’ “+%Y-%m-%d %H:%M:%S”
1分鐘後
date –date=’1 minutes’ “+%Y-%m-%d %H:%M:%S”
1秒前
date –date=’1 seconds ago’ “+%Y-%m-%d %H:%M:%S”
1秒後
date –date=’1 seconds’ “+%Y-%m-%d %H:%M:%S”

Posted in linux by pangyt. No Comments

Netstat 端口占用

netstat –apn
netstat –tln
netstat 查看已经连接的服务端口
netstat –a 查看所有的服务端口
sudo netstat –ap 查看所有的服务端口并显示对应的服务程序名
netstat -an | grep :80 |wc –l
netstat -nlp | grep 80
lsof –I :8088 这个端口属于哪个程序
netstat -ln |grep 894*

Posted in linux by pangyt. No Comments

linux文件扩展属性

linux文件系统属性也可以叫linux文件扩展属性,linux文件系统特殊属性属性有:a(仅追加),c(压缩),d(不转储),i(不可更改),j(数据日志),s(安全删除),t(无尾部合并),u(不可删除),A(不更新访问时间atime),D(同步目录更新),S(同步更新),T(目录层级结构顶部)
使用chattr命令可修改文件属性、使用lsattr可以查看文件属性

Posted in linux by pangyt. No Comments

Linux文件系统

权限与属性放到inode中,数据则放到block区块中。另外,还有一个超级区块(super block)会记录整个文件系统的整体信息,包括 inode与block的总量、使用量、剩余量等等等。

  • · superblock:记录此 filesystem 的整体信息,包括inode/block的总量、使用量、剩余量, 以及文件系统的格式与相关信息等;
    · inode:记录文件的属性,一个文件占用一个inode,同时记录此文件的数据所在的 block 号码;
    · block:实际记录文件的内容,若文件太大时,会占用多个 block 。

这种数据存取的方法我们称为索引式文件系统(indexed allocation)。

文件系统一开始就将 inode 与 block 规划好了,除非重新格式化(或者利用 resize2fs 等指令变更文件系统大小),否则 inode 与 block 固定后就不再变动。

在整体的规划当中,文件系统最前面有一个启动扇区(boot sector),这个启动扇区可以安装开机管理程序, 这是个非常重要的设计,这样我们就能够将不同的开机管理程序安装到个别的文件系统最前端,而不用覆盖整颗硬盘唯一的 MBR, 这样也才能够制作出多重引导的环境啊!

Superblock 是记录整个 filesystem 相关信息的地方, 没有 Superblock ,就没有这个 filesystem 了。他记录的信息主要有:
· block 与 inode 的总量;
· 未使用与已使用的 inode / block 数量;
· block 与 inode 的大小 (block 为 1, 2, 4K,inode 为 128 bytes);
· filesystem 的挂载时间、最近一次写入数据的时间、最近一次检验磁盘 (fsck) 的时间等文件系统的相关信息;
· 一个 valid bit 数值,若此文件系统已被挂载,则 valid bit 为 0 ,若未被挂载,则 valid bit 为 1 。

Directory不是文件,我们可以看作是文件系统中的一个属性,只是用来关连文件名与Inode number。

Posted in linux by pangyt. No Comments

Linux系统版本号

Linux内核的版本号分为主版本号、次版本号和扩展版本号等。
根据稳定版本、测试版本和开发版本定义不同版本序列。
稳定版本的主版本号用偶数表示,例如:2.2、2.4、2.6。每隔2~3年启动一个Linux稳定主版本号。
紧接着是次版本号,例如:2.6.30、2.6.31、2.6.32。次版本号不分奇偶数,顺序递增。每隔1~2个月发布一个稳定版本。
然后是升级版本号,例如:2.6.32-5、2.6.32-6、2.6.32-7。升级版本号不分奇偶数,顺序递增。每周几次发布升级版本号,修正最新的稳定版本的问题。
另外一种是测试版本。在下一个稳定版本发布之前,每个月发布几个测试版本,例如:2.6.30-rc1。通过测试,可以使内核正式发布的时候更加稳定。
还有一类是开发版本。开发版本的主版本号用奇数表示,例如:2.3、2.5。也有次版本号,例如:2.5.32、2.5.33。开发版本是不稳定的,适合内核开发者在新的稳定的主版本发布之前使用。

Posted in linux by pangyt. No Comments