欢迎大家分享自己的文档,请点击查阅:分享方法,![]() 如果你喜欢这文章,可以点击文章结尾处百度分享,分享到你的各种社区收藏,或推荐给朋友……
老男孩的实用命令
1 追加、重定向文本 追加用>> 不改变文件内容 仅在文件尾追加内容 重定向> 覆盖文件的内容 echo 'I am studying linux.'>>/data/oldboy.txt cat >>/data/oldboy.txt<<EOF I am studying linux. EOF 2 删除N天前的文件或目录 一般用于删除日志和备份文件 find . -type f -mtime +15 |xargs rm -f #删除当前目录下15天以前的文件 find . -type d -mtime +30 |xargs rm -rf # 删除当前目录下30天以前的目录 3 过滤文件中除XX字符的所有文本 grep -v XX test.txt 4 分析图片服务日志,把日志(每个图片访问次数*图片大小的总和)排行,取top10,也 就是计算每个url的总访问大小 本题需要输出三个指标: 【访问次数】 【访问次数*单个文件大小】 【文件名(可以带URL)】 利用把url文件名和文件大小组合排重,然后在通过awk做计算。 cut -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 #→查看配置结果 local2.debug /var/log/sudo.log echo "Defaults logfile=/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 pcpu %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设置文件仅能添加 chattr +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 -lnat | 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 http://bbs.linuxtone.org/thread-16-1-1.html 查看服务器网络连接情况; netstat -pant |awk '/^tcp/ {++state[$6]} END {for(key in state) printf("%-10s\t%d\n",key,state[key]) }' Web服务器报错 http://michaelkang.blog.51cto.com/blog/1553154/922407 转载请注明linux系统运维: |