linux切换到home主机,linux主机常用管理命令

1.杀掉MYSQL SHELL

ps aux|grep mysql|grep -v grep|awk '{print $2}'|xargs kill -9

2.删除当前目录下0字节的文件

find -type f -size 0 -exec rm -rf {} \;

3.匹配当data里包含"donald",输出第4列

awk '/donald/ {print $4}' data

扩展1:

awk '/donald|chin/ {print $1, $2}' data

扩展2:

awk '/a[rl]/ {print $1, $2}' data

使用"n"而不是空格做为分隔符

awk 'FS="n" {print $1}' data

4.截取对应的列数

awk -F":" '{ print $1 $7 }' /etc/passwd

5.对域名进行添加www.的shell

awk '{print"www."$1}' yuming.txt >yuming2.txt

6.清理maillog日志

find . -name maillog | xargs echo " " >maillog

7.1.txt文件前面添加序号

awk '{print NR,$0}' 1.txt

8.1.txt匹配test开头的行后,将字段2和字段3相加后输出结果

awk '$1 ~/test/{count = $2 + $3;print count}' 1.txt

9.用grep命令在当前目录下的所有普通文件中搜索hostnames这个词

find . -name \* -type f -print |xargs grep "hostname"

注意,在上面的例子中, \用来取消find命令中的*在shell中的特殊含义

10.文件删除清理

find . -name "*.conf"  -mtime +5 -ok rm {  } \;

< rm ... ./conf/httpd.conf > ? n

按y键删除文件,按n键不删除

11.在/var/log下拷贝小于100K的文件到/tmp下,如果有失败的发送邮件到635273926@qq.com,用shell/perl/python来实现。

#!/bin/bash

SDIR=/var/log/

DDIR=/tmp/

TMPFILE=/tmp/test.txt

find $SDIR -size -100k -type f > $TMPFILE

while read F_NAME

do

cp -r $F_NAME  $DDIR

if [ $? -eq 0 ]

then

echo "ok"  > /dev/null   2>&1

else

echo "cp is failed " | mail -s "Note:cp is failed ! " 635273926@qq.com

fi

done < $TMPFILE

12. 根据下面的信息提取每个人的总分 输出到/home/total.txt

oldboy  15   98

kqzj    23   87

wodi    16   89

awk '{print $1,$2+$3}' infor >/home/tital.txt

13.在不影响MYSQL正常服务的情况下,如何导出MYSQL数据

mysqldump -all-databases >allbackupfile.sql 备份数据库

mysql -hhostname -uusername -ppassword databasename < backupfile.sql 还原数据库

mysqldump -hhostname -uusername -ppassword databasename |gzip > backupfile.sql.gz 压缩备份数据库

gunzip < bckupfile.sql.gz |mysql -uusername -ppassword  databasename 还原压缩的文件包

mysqldump -hhostname -uusername -ppassword databasename specific_table1 specific_table2 >backupfile.sql  备份单个数据库表

mysqldump -hhostname -uusername -ppassword -databases databasename1 atabasename2 databasename3 >multibackupfile.sql  备份多个数据库

mysqldump -no-data -databases databasename1 databasename2 databasename3>structurbackupfile.sql   备份数据库结构

14.在一个文件夹下建立类似如下规律性的文件夹:

11 12 13 14 15 21 22 23 24 25 31 32 33 34 35 41 42 43 44 45 51 52 53 54 55

#!/bin/sh

for i in `echo {1..5}{1..5}`;do

mkdir -p ./$i

done

#!/bin/bash

#for i in `seq 11 55`;

for i in $(seq 11 55)

do

echo $i;

mkdir -p ./$i;

done

15.统计末年某月的天数

cal 09 2008 | xargs | awk '{print $NF}'

cal 09 2008 |sed -n '3,$p' |awk 'BEGIN{sum=0}{sum+=NF}END{print sum}'

16.统计文件大小的shell

ls -l $* | awk '

BEGIN { print "BYTES", "\t", "FILE" }

{ sum += $5

++filenum

print $5, "\t", $9

}

END { print "Total: ", sum, "bytes (" filenum " files)" }'

17.awk(基础)

====================================================

1.抽取域

awk -F: '{print $1}' /etc/passwd

2.保存输出

awk -F: '{print $1}' /etc/passwd | tee user 使用tee命令,在输出文件的同时,输出到屏幕

使用标准输出

awk -F: '{print $1}' /etc/passwd >user3

4.打印所有记录

awk -F: '{print $0}' /etc/passwd

5.打印单独记录

awk -F: '{print $1,$4}' /etc/passwd

6.打印报告头

awk -F: 'BEGIN {print "NAME\n"} {print $1}' /etc/passwd

7.打印结尾

awk -F: '{print $1} END {print "this is all users"}' /etc/passwd

条件操作符

1.匹配

awk -F: '{if($1~/root/) print }' /etc/passwd      //{if($1~/root/) print}表示如果field1包含root,打印它

2.精确匹配

使用等号 ==

awk -F: '{if($3=="0") print }' /etc/passwd

3.不匹配

!~

awk -F: '{if($1!~/linuxtone/) print }' /etc/passwd

!=

精确不匹配

awk -F: '{if($1!="linuxtone") print }' /etc/passwd

4.小于

<

5.小于等于

<=

6.大于

>

.........

7.设置大小写

awk '/[Rr]oot/' /etc/passwd

8.任意字符

awk -F: '{if($1~/^...t/) print}' /etc/passwd      //^...t表示第四个字幕是t

9.或关系匹配

awk -F: '{if ($1~/(squid|nagios)/) print}' /etc/passwd

10.行首

awk '/^root/' /etc/passwd       // ^root(行首包含root)

11.AND &&

awk -F: '{if($1=="root" && $3=="0") print}' /etc/passwd

12.OR ||

内置变量:

ARCC                                      命令行参数个数

ARGV                                      命令行参数排列

ENVIRON                                   支持队列中系统环境变量的使用

FNR                                       浏览文件的记录数

FS                                        置顶分隔符,等价于-F

NF                                        浏览记录的域的个数

NR                                        已读的记录数

OFS                                       输出域分隔符

ORS                                       输出记录分隔符

RS                                        控制记录分隔符

打印有多少行记录

awk 'END {print NR}' /etc/passwd

设置输入域到变量名

awk -F: '{name=$1; path=$7; if(name~/root/) print name  "\tpath is:" path}' /etc/passwd

域值比较操作

awk '{if($6

修改文本域只显示修改改记录

awk -F: '{if($1=="nagios") {$1="nagios server" ; print }}' /etc/passwd

文件长度相加

ls -l|awk '/^[^d]/ {print $9"\t" $5} {tot+=$5} END {print "total kb:"tot}'

内置的字符窜函数

gsub(r,s)                                                      在整个$0中用s替代r

gsub(r,s,t)                                                    在整个t中用s替代r

index(s,t)                                                     返回s中字符串t的第一位置

length(s)                                                      返回s长度

match(s,r)                                                     测试s中是否包含匹配r的字符串

split(s,a,fs)                                                  在fs上将s分成序列a

sub(s, )                                                       用$0中最左边也是最长的字符串替代

subtr(s,p)                                                     返回字符串s中从p开始的后缀部分

substr(s,p,n)                                                  返回字符串s中从p开始长度为n的后缀部分

1.gsub

awk 'gsub(/^root/,"netseek") {print}' /etc/passwd             将与root开头的root替换为netseek

awk 'gsub(/0/,2) {print}' /etc/fstab

awk '{print gsub(/0/,2) $0}' /etc/fstab

2.index

awk 'BEGIN {print index("root","o")}'  查询字符串root中o出现的第一位置

awk -F: '$1=="root" {print index($1,"o")" "$1}' /etc/passwd

awk -F: '{print index($1,"o") $1}' /etc/passwd

3.length

awk -F: '{print length($1)'} /etc/passwd

awk -F: '$1=="root" {print length($1)}' /etc/passwd

4.match (在ANCD中查找C的位置)

awk 'BEGIN {print match("ANCD",/C/)}'

5.split

返回字符串数组元素个数

awk 'BEGIN {print split("123#456#789", myarray, "#")}'

6.sub   只能替换指定域的第一个0

awk 'sub(/0/,2) {print }' /etc/fstab

7.substr

按照起始位置及长度返回字符串的一部分

awk 'BEGIN {print substr("www.linuxtone.org",5,9)}'  //第5个字符开始,取9个字符。

awk 'BEGIN {print substr("www.linuxtone.org",5)}'  //第5个位置开始,取后面的所有.

字符串屏蔽序列

\b                  退格键

\f                  走纸换页

\n                  新行

\r                  回车

\t                  tab

\c                  任意其他特殊字符

\ddd                八进制

很简单的例子

awk -F: '{print $1,"\b"$2,"\t"$3}' /etc/passwd 输出函数printf(注意是printf不是print,两者效果不同的)

printf函数拥有几种不同的格式化输出功能

printf修饰符

-                               左对齐

Width                        域的步长0表示0步长

.prec                          最大字符串长度,或小数点右边的位数

awk printf格式

%c                              ASCII字符

%d                              整数

%e                              浮点数,科学计数法

%f                               浮点数

%g                              awk决定使用哪种浮点数转换,e或者f

%o                              八进制数

%s                              字符串

%x                              十六进制数

1.字符串转换

echo "65" | awk '{printf"%c\n",$0}'

awk 'BEGIN {printf "%c\n",65}'

awk 'BEGIN {printf "%f\n",999}'

2.格式化输出

awk -F: '{printf "%-15s %s\n",$1,$3}' /etc/passwd

awk -F: 'BEGIN {printf"USER\t\tUID\n"} {printf "%-15s %s\n",$1,$3}' /etc/passwd

3.向一行awk命令传值

who | awk '{if ($1 == user) print $1 " you are connected to:" $2}' user=$LOGNAME

4.awk脚本文件 (在文件名字后面加后缀.awk方便区分)

#!/bin/awk -f

BEGIN{

FS=":"

print "User\t\tUID"

print"____________________________"

}

{printf "%-15s %s\n",$1,$3}

END{

print "END"

}

===============================================================================================================================================

18.从a.log文件中提取包含"WARNING"或"FATAL",同时不包含"IGNOR"的行,然后提取以":"分割的第 5个字段

grep -E 'WARNING|FATAL' a.log|grep -v ignor |awk -F ":" '{print $5}'

不断更新中。。。。。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值