1 追加、重定向文本
追加用>> 不改变文件内容 仅在文件尾追加内容
重定向> 覆盖文件的内容

echo 'I am studying linux.'>>/data/oldboy.txt 

 >>/data/oldboy.txt<<EOF 
I am studying linux. 
EOF 

2 删除N天前的文件或目录 一般用于删除日志和备份文件
 . -type f -mtime +15 |xargs  -f #删除当前目录下15天以前的文件 
find . -type d -mtime +30 |xargs rm -rf # 删除当前目录下30天以前的目录

3 过滤文件中除XX字符的所有文本
grep -v XX test.txt

4 分析图片服务日志,把日志(每个图片访问次数*图片大小的总和)排行,取top10,也
就是计算每个url的总访问大小
本题需要输出三个指标: 【访问次数】 【访问次数*单个文件大小】 【文件名(可以带URL)】 
利用把url文件名和文件大小组合排重,然后在通过awk做计算。
 -d' ' -f 7,10 access_2010-12-8.log | sort | uniq -c | awk '{print $1*$3" "$1" "$2}'|sort -rn -k1|head -10 

5 将当前目录以.sh为结尾的文件中的某个字段替换为另外一个字段
find . -name “.sh”  |xargs sed -i 's#./hostlists.txt#../idctest_iplist#g'

6 配置sudo日志审计
yum install -y sudo  syslog
[root@nosql01 etc]# rpm -aq|egrep "sudo|syslog"
rsyslog-3.22.1-7.el5
sudo-1.7.2p1-13.el5

echo "local2.debug    /var/log/sudo.log">>/etc/syslog.conf
tail -1 /etc/syslog.conf    #&r;查看配置结果
local2.debug    /var/log/sudo.log
echo "Defaults        log=/var/log/sudo.log">>/etc/sudoers
echo "10.0.2.164 logserver" >> /etc/hosts             #日志服务器地址。
echo "*.info   @logserver" >> /etc/syslog.conf       
7 一条命令同时修改并备份源文件
[root@zxz ~]# sed -i.bak '$a #test' /root/zxz.txt 
#最后添加一行#test 同时备份文件为filename.bak

8 添加用户并设定密码
echo "qq:31333741"|passwd --stdin oldboy 


9 awk多分隔符
awk -F '[(/]' '{print $2}'  []中的”(”和”\”都是分隔符
显示的是”(”和”\”中间的那部分字段

10awk利用substr取特定字符串
取出第二行的IP地址

[root@BJS0-089 ~]# ifconfig
bond0     Link encap:Ethernet  HWaddr 18:A9:05:42:26:48  
          inet addr:10.199.80.102  Bcast:10.199.80.255  Mask:255.255.255.0
          inet6 addr: fe80::1aa9:5ff:fe42:2648/64 Scope:Link
          UP BROADCAST RUNNING MASTER MULTICAST  MTU:1500  Metric:1
          RX packets:1545497 errors:0 dropped:0 overruns:0 frame:0
          TX packets:1244 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0 
          RX bytes:1485361831 (1.3 GiB)  TX bytes:88927 (86.8 KiB)

eth0      Link encap:Ethernet  HWaddr 18:A9:05:42:26:48  
          UP BROADCAST RUNNING SLAVE MULTICAST  MTU:1500  Metric:1
          RX packets:1545497 errors:0 dropped:0 overruns:0 frame:0
          TX packets:1244 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:1485361831 (1.3 GiB)  TX bytes:88927 (86.8 KiB)
          Interrupt:28 Memory:fb000000-fb7fffff 

lo        Link encap:Local Loopback  
          inet addr:127.0.0.1  Mask:255.0.0.0
          inet6 addr: ::1/128 Scope:Host
          UP LOOPBACK RUNNING  MTU:16436  Metric:1
          RX packets:0 errors:0 dropped:0 overruns:0 frame:0
          TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0 
          RX bytes:0 (0.0 b)  TX bytes:0 (0.0 b)

[root@BJS0-089 ~]# ifconfig |sed -n '2p'|awk '{print substr($2,6,21)}'
10.199.80.102
用Sed输出第二行
用Awk输出第二列的第6到第21个字符
[root@BJS0-089 ~]# ifconfig |sed -n '2p'|awk '{print substr($2,6)}'   
10.199.80.102
用Awk输出第二列的第6到分隔符结束


10 查找当前目录下所有文件,并把文件中的A字符串替换成B
find . -type f | xargs sed -i 's/A/B/g'

11 配置sudo权限
[root@backup www]# tail -2  /etc/sudoers 
oldboy  ALL = /usr/sbin/setup, /bin/vi /etc/sysconfig/network-scripts/ifcfg-eth0, /etc/init.d/network, /usr/sbin/usermod, /usr/sbin/useradd, /usr/sbin/userdel, /sbin/fdisk, /sbin/parted

12如何通过账户设置让一个已有的系统用户无法远程登录。 
usermod -s /sbin/nologin xxx

13 oracle重复执行语句的循环判断
sqlplus /nolog << EOF
conn / as sysdba
declare
  iMax      pls_integer;
  currid    pls_integer;
begin
  select max(id) into iMax from sysmaintenancelog;
  
  while true loop
    select sysmaintenancelog_id.nextval into currid from dual;
    
    if currid>iMax then
      exit;
    end if;
  end loop;
end;
/
EOF
注释
sqlplus /nolog << EOF  
conn / as sysdba
declare #定义变量
  iMax     pls_integer; #定义变量的名称(iMax)和字符类型
  currid    pls_integer; #定义变量的名称(currid)和字符类型
begin
  select max(id) into iMax from sysmaintenancelog;
 #从sysmaintenancelog表中取最大值赋予iMax变量
  
  while true loop                      #执行循环判断
    select sysmaintenancelog_id.nextval into currid from dual; 
#从dual表中取sysmaintenancelog_id.nextval值赋予currid变量
    if currid>iMax then #如果currid>iMax则退出 如果currid<iMax则继续执行循环
      exit;
    end if;#
  end loop;#
end;
/
EOF

14 查看进程按内存从大到小排列
ps -e  -o "%C  : %p : %z : %a"|sort -k5 -nr|head -10
老男孩老师提示:
CODE   NORMAL   HEADER
%C     pu     %CPU
%a     args     COMMAND
%p     pid      PID
%z     vsz      VSZ
更多: ......

1,检查除了当前用户的进程状态
ps aux | grep –v `whoami`
非当前用户占用进程前10的进程
ps aux –sort=-%cpu | grep –m 11 –v `whoami`
2,替换多个文件的相同内容
替换当前目录test开头文件的所有Windows为Linuxs
perl –i –pe ‘s/Windows/Linux/;’ test*
替换当前目录所有.txt文件中Windows字符串为Linux
find . –name ‘*.txt’ –print | xargs perl –pi –e ‘s/Windows/Linux/ig’*.txt
3,修复终端的异常
reset
4,备份web站点
如果只想备份一个目录改变的内容到另一个目录,可以使用rsync命令,需要在远程主机有个ssh账号
rsync –vare ssh jone@192.168.0.2:/home/jono/importantfiles/* /home/jono/backup
5,找出最大的文件
在当前目录找到最大的文件
ls –lSrh
同样可以找出最大的目录
du –kx | egrep –v ‘\./.+/’ | sort –n
6,碎片整理
mysqlcheck –o
7,并行编译
make编译时每次编译超过一个子进程
make –j 4;make –j4 modules
8,远程访问你的程序
从windows主机访问linux主机程序,首先在/etc/ssh/sshd_config开启X11转发:
X11Forwarding yes
可以远程linux的GIMP程序
ssh –X 192.168.0.2 gimp
9,卸载繁忙的设备
lsof +D /mnt/windows
输入这个命令之后,将返回进程ID的列表,然后使用kill命令杀掉他们
10,查找和执行
当有大量的gz压缩包,如何检测是否是正常文件
find . –name ‘*.gz’| xargs gunzip –vt
11,备份启动扇区
dd if=/dev/had of=bootsector.img bs=512 count=1
恢复
dd if=bootsector.img of=/dev/hda
12,保护日志文件
在linux设置文件仅能添加
 +a filename
13,找出特出权限位的文件
找出文件有setuid,setgid或bit属性的文件
find / -perm+600 –type f –exec ls –ld {} \;> setuid.txt &
14,查看系统位数
uname -m
/lib64代表64位 /lib代表32位
file /sbin/init
15,查看文件哪个进程占用
lsof — -f /var/log/messages
16,占用内存前10的进程
ps -eo comm,pmem | sort -nrk2 | head -10 | awk ‘{print $1}’
更牛的命令:ps -eo comm,size –sort -size | head -10
17,TCP状态统计

netstat -at | awk ‘/^tcp/ {++S[$NF]}END{for (a in S)print a,S[a]}’
18,匹配内容所在的行数

sed -n ‘/root/ =’ /etc/passwd
19,占用cpu前10 的进程
ps -eo comm,pcpu –sort –pcpu | head -10
20,强制刷新mac地址表
 arping -I eth0 -c 2 192.168.100.112 网关IP

查看服务器网络连接情况; 
netstat -pant |awk '/^tcp/ {++state[$6]} END {for(key in state) printf("%-10s\t%d\n",key,state[key]) }'