linux命令

一、awk

分段去格式化输出文本的工具。

awk -F ':' '$3>500 {print $1,$3}' /etc/passwd#以:作为分隔符分隔段,每行的第三段的值大于500 就打印出第一段和第三段的值。

awk -F ':' '$3>“500” {print $1,$3}' /etc/passwd#加入引号的500就是字符串,会以字符串的方式进行处理

awk -F ':|#' '{print $2}' 1.txt#本例的分隔符可以是:也可以是#,截取指定段。

awk -F ':' '$1 ~ "abc"' 1.txt#过滤出第一段包含的abc的行,其中abc可以是一个正则表达式

awk -F ':' '$1 ~ "^ro+"' 1.txt#过滤出第一段包含以ro开头(如ro roo rooo...)的行
#多个语句同时使用
awk -F ':' '$1 ~ "root" {print $1,$3};$3>100 {print $1,$2}' 1.txt#两个条件的内容都被过滤出,并执行了相应的打印

#如果不指定分隔符,则以空白字符作为分隔符,在awk中可以用&&表示并且,用||表示或者。$0会输出整行
awk '$3<100 && $7 ~ "bash" {print $0}' 1.txt#多个条件

#内置变量
awk -F ':' '{print NF,NR}' 1.txt
#NF为段数,NR为行数

#数学运算
awk -F ':' '$7=$3+$4 {print $0}' 1.txt#因为$7的值被重新定义了,所以打印¥0时,并不会包含分隔符,等然也可以定义分隔符

awk -F ':' -v OFS='#' '$7=$3+$4 {print $0}' 1.txt#-v定义变量,OFS也是一个内置变量,它表示输出的结果的分隔符
#计算某一段的总和
awk -F ':' '{(tot=tot+$3)};END {print tot}' 1.txt

二、sort排序

语法:sort [-t 分隔符][-kn1,n2][-nru]

n1<n2

-t分隔符:作用跟cut的-d一个意思

-n 使用纯数字排序

-r:反向排序

-u:去重复

head -n5 /etc/passwd |sort#sort默认按照ASCII码升序输出
head -n5 /etc/passwd |sort -t: -k3 -n#以:分隔符的第三个区使用纯数字进行排序
head -n5 /etc/passwd |sort -t: -k3,5 -r#表示从第3到第5区域间的字符串排序,-r表示反向排序

三、uniq去重复

使用uniq之前需要先给文件排序,否则不管用

sort test.txt|uniq#去重输出
sort test.txt|uniq -c#输出去重后的的结果并显示重复行数

四、iptables工具

在CentOS系统中有一个叫做netfilter的防火墙,它可以对进入或者即将离开网卡的数据包进行处理。最常见的用法就是封IP,在CentOS7系统里服务名是firewalld

1、查看filter表的iptables规则

#iptables -nvL -t filter

在centOS7上的netfilter有5个表,分别是:filter、nat、mangle、raw、security。而我们用的比较多的是是前两个,该命令中的-t filter可以省略,默认用的是filter表。

2、增加规则

iptables -A INPUT -p tcp --dport 80 -s 1.1.1.1 -j DROP

-A表示增加规则,INPUT为filter表里的一个链,除此之外还有OUTPUT链和FORWARD链。

五、Linux系统状态

1、w命令查看当前系统的负载

 第一行从左到右依次显示:时间、系统运行时间、登录用户数、平均负载。

第二行:当前登录用户名以及登录地址等。

load average:第一个值表示1分钟内系统的平均负载值;第二个值表示5分钟内系统的平均负载值;第三个值表示15分钟内系统的平均负载值。值越大表示服务器压力越大。一般情况下,这个值只要不超过服务器的cpu数量就没有关系。

cat /proc/cupinfo# 查看系统cpu数量

grep -c 'processor' /proc/cpuinfo#2*n(n表示内核数),如果一个cpu有四个内核,则数值显示是7

查看有几颗物理CPU时,则需要查看关键字physcal id。

2、vmstat命令监控系统的状态

  • procs显示进程的相关信息

r(run):表示运行或等待CPU时间片的进程数。实际上某一时刻1个CPU只能有一个进程占用,其他进程只能排着队等着,如果该数值如果长期大于服务器cpu的个数,则说明cpu资源不够用了。

b(block):表示等待资源的进程数,这个资源指的是I/O、内存等。该数值如果长时间大于1,则需要关注下。

  • memory显示内存的相关信息

swpd:表示切换到交换分区中的内存数量,单位为KB

free:表示当前空闲的内存数量,单位为KB

buff:表示(即将写入磁盘的)缓冲大小,单位为KB

cache:表示(从磁盘中读取的)缓存大小,单位为KB

  • swap显示内存的交换情况

si:表示由交换区写入内存的数据量,单位为KB

so:表示由内存写入交换区的数据量,单位为KB

  • io显示磁盘的使用情况

bi:表示从块设备读取数据的量(读磁盘),单位为KB

bo:表示从块设备写入数据的量(写磁盘),单位为KB

  • system显示采集间隔内发生的中断次数

in:表示在某一时间间隔内观测到的每秒设备的中断次数。

cs:表示每秒产生的上下文切换次数。

  • cpu显示CPU的使用状态

us:显示用户下所花费CPU的时间百分比

sy:显示系统花费CPU的时间百分比

id:表示CPU处于空闲状态的时间百分比

wa:表示I/O等待所占用CPU的时间百分比

st:表示被偷走的CPU所占百分比(一般为0,不用关注)

vmstat 1 5#每隔一秒输出一次状态,共输出5次

vmstat 1#每隔一秒输出一次状态,一直输出,CTRL+C终止

3、top显示进程所占的系统资源 

top -bn1|head#一次性输出所有信息

top#每隔3秒变一次,q结束

4、sar命令监控系统状态

sar -n DEV#查看网卡流量

sar -n DEV -f /var/log/sa/sa03#查看某一天的网卡流量历史

sar -q#查看历史负载

5、nload查看网卡流量

yum install -y epel-release;yum install -y nload#非系统自带

6、free查看内存使用状况

free -m#(以MB为单位);-g以GB为单位 

7、ps查看系统进程

ps aux|grep -c sshd 

8、netstat查看网络状况

netstat -lnp

netstat -an |head -n 20#只显示前20行 

六、shell脚本

自定义脚本可放在/usr/local/sbin目录,方便管理

#! /bin/bash表示该文件使用的是bash语法
#表示注释,不写也没问题,只是随着时间推移,害怕慢慢忘记所以最好有注释

 1、date命令

date+%Y:表示以四位数字格式打印年份

date+%y:表示以两位数字格式打印年份

date+%m:表示月份

date+%d:表示日期

date+%H:表示小时

date+%M:表示分钟

date+%S:表示秒

date+%w:表示星期,结果显示0则表示周日

date +"%Y-%m-%d %H:%M:%S"#表示当前的日期

date -d "-1 day" +%d#表示一天前的日期

date -d "-1 hour" +%H#表示一小时前

date -d "-1 min" +%M#表示一分钟前

 2、变量

使用到的反引号,表示把引号中的字符串当成shell命令执行,返回命令的执行结果

变量名=变量的值,使用变量时,需在变量名前加$

3、数学运算

#vim sum.sh
#! /bin/bash
a=1
b=2
sum=$[$a+$b]
echo "$a+$b=$sum"

sh sum.sh

4、和用户交互

#cat read.sh
#! /bin/bash
##Using 'read' in shell script
read -p "Please input a number:" x
read -p "Please input another number:" y
sum=$[$x+$y]
echo "The sum of the two number is: $sum"

5、shell脚本预设变量

echo "$1 $2 $0" #$0代表脚本本身

###结果是#####

1 2 option.sh

 6、shell脚本中的逻辑判断

1)if...else...

#vim if3.sh
#! /bin/bash
read -p "Please input  your score:" a
if ((a<60)); then
echo "You didn't pass the exam."
elif ((a>=60)) && ((a<85)); then
echo "Good! You pass the exam."
else
echo "Very good! Your score is ver high!"
fi


###&&表示并且,||表示或者
###判断数值大小除了可以使(())外,还可以使用[];当使用[]时,就不能使用>、<、=这样的符号了,需要使用-lt(小于)、-gt(大于)、-le(小于或等于)、-ge(大于或等于)、-eq(等于)、-ne(不等于)。

注:(())中的变量是不加$的,[]中的变量是加$的 

2)和文档相关的判断

-e:判断文件或目录是否存在

-d:判断是不是目录以及是否存在

-f:判断谁不是普通文件以及是否存在

-w:判断是否有写权限

-x:判断是否可执行

if [-d /home/]; then echo ok; fi

3)case

#vim  case.sh
#! /bin/bash
read -p "Input a number: " n
a=$[$n%2]
case $a in
 1)
  echo "The number is odd."
  ;;
 0)
  echo "The number is even."
  ;;
 *)
  echo "It's not a number!"
  ;;
esac

 7、shell脚本中的循环

1)for循环

###打印1到5的一个序列
#vim for.sh
#! /bin/bash
for i in `seq 1 5`;do 
    echo $i
done

#for file in `ls`; do echo $file; done
#打印当前文件夹中文件名

2)while循环

#cat while.sh
#! /bin/bash
a=5
while [$a -ge 1]; do
    echo  $a
    a=$[$a-1]
done

#以下是死循环
while :; do
    command
    sleep 3
done

8、shell脚本中的函数

1)函数

#vim func.sh
#! /bin/bash
function  sum()
{
    sum=$[$1+$2]
    echo $sum
}

#调用方式一:
sum $1 $2


#调用方式二:
sh func.sh 1 2
#结果是3

2)中断和继续

break表示退出一层循环;continue表示退出本次循环,并继续

exit表示退出整个shell脚本

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值