Linux常用指令

一、awk

① 基本使用

[root@localhost ~]# cat /var/log/nginx/access.log | awk ‘substr($9,1,3)!=200‘
#查看访问日志中,过滤非200状态码的日志请求;
# substr($4,20)  :表示从第四个字段里的第20个字符开始,一直到设定的分隔符 结束;
# substr($4,1,3) :表示从第四个字段里的第1个字符开始,截取3个字符结束;
# substr($4,3,6) : 表示从第四个字段里的第3个字符开始,截取6个字符结束;

[root@localhost ~]# awk -F \‘ ‘$1=="menuentry " {print i++ " : " $2}‘ /etc/grub2.cfg
0 : CentOS Linux (3.10.0-862.el7.x86_64) 7 (Core)
1 : CentOS Linux (0-rescue-732d2ab46c8c49608f5c11b59d037204) 7 (Core)

# \‘:对单引号进行转义,表示以单引号进行分隔;
# $1=="menuentry:表示如果位置1变量的值是menuentry;
# {print i++ " : " $2}:则打印$2的值,i++表示在输出的信息开头增加序列号;

② awk查找特定时间段的日志

# 日志格式如下
10.252.201.136 - - [27/Apr/2020:00:00:01 +0800] "POST /api-stkp/callback HTTP/1.1" 200 221 "-" "Java/1.8.0_77"
# 过滤2020年4月29日的7:00到10:30的日志
$ cat access.log | awk ‘$4 >= "[29/Apr/2020:07:00:00" && $4 <= "[29/Apr/2020:10:30:35"‘ > nginx.log

③ 使用awk统计nginx日志中每个独立ip的访问次数

$ awk ‘{print $1}‘ access.log | sort | uniq -c  | sort -rn

二、getopts

getopts指定参数,获取值。同样还有一个作用类似的选项getopt,可以自行百度查看其区别。

[root@localhost ~]# vim test.sh
#!/bin/bash
while  getopts  “:h:p:”  optname;do
        case “$optname”  in
        “h”)
        host_ip=$OPTARG
        ;;
        “p”)
        host_port=$OPTARG
        ;;
        “?” )
        echo “不知道此选项”
        ;;
        “:”)
        echo “此选项没有值”
        ;;
        “*”)
        echo “错误信息”
        ;;
        esac
done
echo "IP是${host_ip},端口是${host_port}"
[root@localhost ~]# sh test.sh -h 192.168.1.1 -p3306
IP是192.168.1.1,端口是3306

在上面的脚本中,while后面的getopts关键字是必须的,引号中的h、p是可选自定义的,对应的是命令行-h、-p等指定的选项,optname也是自定义的,只要和case语句后引用的变量名称对应即可。在case语句下,需要给哪些选项赋值,则写多少就行,一般和getopts后面指定的选项对应。

三、sed

[root@localhost ~]# nslookup www.baidu.com | sed -n -e ‘4,$p‘ | awk ‘/Address/{print $2}
#获取域名解析的ip地址

四、ss

[root@localhost ~]# ss -tan state time-wait | wc -l
#查看timewait的连接数

五、获取本机内网IP

[root@localhost ~]# ip addr | grep inet | egrep -v ‘(127.0.0.1|inet6|docker)‘ | awk ‘{print $2}‘ | tr -d "addr:" | head -n 1 | cut -d / -f1

六、显示目录各级的权限

[root@localhost ~]# namei -om /var/log/messages
f: /var/log/messages
 dr-xr-xr-x root root /
 drwxr-xr-x root root var
 drwxr-xr-x root root log
 -rw------- root root messages

七、dig

此工具和nslookup功能一样,用于域名解析,但比nslookup要好用。

选项:

  • @<服务器地址>:指定进行域名解析的域名服务器;
  • -b<ip地址>:当主机具有多个IP地址,指定使用本机的哪个IP地址向域名服务器发送域名查询请求;
  • -f<文件名称>:指定dig以批处理的方式运行,指定的文件中保存着需要批处理查询的DNS任务信息;
  • -P:指定域名服务器所使用端口号;
  • -t<类型>:指定要查询的DNS数据类型;
  • -x<IP地址>:执行逆向域名查询;
  • -4:使用IPv4;
  • -6:使用IPv6;
[root@localhost ~]# dig www.baidu.com       
#使用 /etc/resolv.conf文件指定的dns服务器去解析baidu.com的记录
[root@localhost ~]# dig www.baidu.com @114.114.114.114   
#指定114.114.114.114作为dns服务器去解析baidu.com
[root@localhost ~]# dig www.baidu.com -t cname @114.114.114.114   
#这里新增-t选项,只显示cname记录

八、使CPU使用率接近百分百

for i in `seq 1 $(cat /proc/cpuinfo |grep "physical id" |wc -l)`; do dd if=/dev/zero of=/dev/null & done

九、yum下载某个服务所需的包文件并安装

此功能用于服务器不能和外网通信,安装某个服务时需要先在能上外网的主机上下载rpm包,然后进行安装。

# 在本机未安装此服务时使用以下指令:
$ yum install --downloadonly --downloaddir=/tmp/httpd/ httpd
# 仅下载httpd服务所需的rpm包,而不安装
# --downloaddir:指定下载的rpm包存放路径
# 若本机已安装此服务,则使用reinstall选项即可
$ yum reinstall --downloadonly --downloaddir=/tmp/httpd/ httpd
# 当rpm包下载后打包到其他主机上,可以使用以下指令安装
$ yum -y localinstall /tmp/httpd/*

十、查找占用内存资源最多的前10个进程

$ ps -auxf | sort -nr -k 4 | head -10
# sort指令中的“-k”选项是以空格为间隔,要依据第几列进行排序

十一、查找占用CPU资源最多的前10个进程

$ ps -auxf | sort -nr -k 3 | head -10

十二、fgrep

$ fgrep -c "hello" test.txt    #显示hello字符在test.txt文件中匹配行的数目
$ fgrep -l "hello" test.txt     #显示匹配hello的文件名

十三、pkill

$ pkill -kill -t pts/1    #断掉连接当前终端的用户

十四、显示目录结构各级的权限

$ namei -om /var/log/messages

十五、获取阿里云epel源

$ wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo

十六、查看服务器出口IP地址

$ curl ipconfig.io

十七、服务器设置临时IP、网关

$ ifconfig ens@196 192.168.207.47/24         # 设置临时IP地址,不加子网掩码,默认是32位
$ route add default gw 192.168.207.1         # 设置临时网关

Linux常用指令

上一篇:2.6 使用VMware Workstation 14 Pro模拟ESXi主机


下一篇:linux开关机