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]) }'