大厂linux面试题攻略三之Shell编程

news2024/11/15 13:59:45

一、Shell编程文本截取类

1.有一个b.txt文本(内容如下),要求将所有域名截取出来,并统计重复域名出现的次数
        http://www.baidu.com/index.html
        https://www.atguigu. com/index.html
        http://www.sina.com.cn/1024.html
        https://www.atguigu.com/2048.htm.
        http://www.sina.com.cn/4096.html
        https://www.atguigu.com/8192.html

shell编程类面试题主要考察的是:shell语言基础与编程思想

本题考察的是字符串截取与排序

题目答案

[root@localhost ~]# cat b.txt | cut -d "/ " -f 3 | sort | unig -c | sort -nr
        3 www.atguigu.com
        2 www.sina.com.cn
        1 www.baidu.com

命令解释
        cut -d "/" -f 3        用”/"作为分隔符,截取第3字段
        sort                      第一次排序
        unig -c                 显示该行重复次数
        sort -nr                按照数值从大到小排序

2.统计当前服务器正在连接的IP地址,并按连接次数排序

答案

netstat -an | grep ESTABLISHED | awk '{print $5}' | cut -d ":" -f 1 | sort -n | unig -c | sort -nr

二、Shell编程随机字符串类

1.使用循环在/atquigu目录下创建10个txt文件,要求文件名称曲6位随机小写字母加固定字符事(_gg)组成,例如: pzjebg_gg.txt。

考察循环语句、考察随机字符串生产方法
编程思想类面试题

随机字符串生成:
        /dev/random        依赖系统中断生成随机字符串,可以保证数据的随机性
                                    但生成数据慢,会占用系统进程资源
        /dev/urandom      不依赖系统中断生成随机字符串,生成数据速度快
                                    但数据随机性不足(一般使用/dev/urandom )

tr命令:可以对来自标准输入的字符进行替换、压缩和删除。它可以将一组字符变成另一组字符。
        -c:        取代所有不属于第一字符集的字符
        -d:        删除所有属于第一字符集的字符
        例如:从输入文本中,把不在字符集中的字符删除

[root@localhost ~]# echo "aa...+1 b2c /* $dd 3 ls 4" | tr -dc '0-9 \n'
        1 2 3 4

答案:

#!/bin/bash
if [ ! -d /atguigu ]                #判断测试目录是否建立
then
        mkdir /atguigu

fi
cd /atguigu                #进入测试目录
for (( i=1;i<=10;i++ ))                #循环10次,每次循环建立6位随机数文件
do
        filename=$(tr -dc 'A-Za-z0-9' < /dev/urandom | head -c 6)
        touch "$filename" _gg.txt
done

2.生成随机数字

$RANDOM                #此系统变量可以默认随机生成0-32767的数字

[root@localhost ~]# echo $RANDOM
#生成0-32767随机数

[root@localhost ~]# echo $(($RANDOM%1000))
#生成1000以内的随机数

三、Shell编程网站检测类

1.批量检查多个网站是否可以正常访问,要求使用shell数组实现,检测策略尽量模拟用户真实访问模式。
        http://www.atguigu.com
        http://www.gulixueyuan.com
        http://www.baidu.com

考察数组的概念、监控程序思路、网站连接测试
编程思想类面试题

数组声明

方法一:[root@localhost~]# array_n=(1 2 3)

方法二:
[root@localhost~]# array_n=(1
2
3)

方法三:
[root@localhost~]# array_n[0]=1
[root@localhost~]# array_n[1]=2
[root@localhost~]# array_n[2]=2

curl命令:开源的用于数据传输的命令行工具。可以用于http访问,上传下载、用户认证、代理访问等

命令格式:curl[选项] url或IP地址
选项:
        -o:                                  将命令输出保存在指定文件
        -s:                                  Silent模式。不输出任务内容
        -w:                                 按指定格式输出内容,例如 :-w %http code}: 输出http状态码
        --connect-timeout :        连接超时时间

HTTP状态码是一个三位数的数字,用于表示客户端和服务器之间的通信状态。以下是常见的HTTP状态码及其含义:

        1xx:信息类状态码

        2xx:成功类状态码

        3xx:重定向类状态码

        4xx:客户端错误类状态码

        5xx:服务器错误类状态码

答案:

#!/bin/bash
web=(
        http://www.atguigu.com
        http://www.gulixueyuan.com
        http://www.baidu.com
        1.1.1.1

)
#定义数组
for i in ${web[*]}    #按照数组中值的个数循环,每次循环把数组中值赋予变量i
do
    code=S( curl -o /dev/null -s --connect-timeout5 -w '%{http_code}' $i | grep -E "200|302")    #检测curl状态码
    if["$code"!=""]    #变量$code值不为空,则证明网页可以访问
    then
        echo "$i is ok" >> /root/ok.log
    else    #变量$code值为空,则休眠10秒,重新检测
        sleep 10
        code=$(curl -o /dev/null -s --connect-timeout5 -w "%{http_code}' $i | grep -E "200|302")
        if["$code"!=""]
        then
            echo "$i is ok" >> /root/ok.log
        else
            echo "$i is error" >> /root/error.log
        fi
    fi
done

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1963928.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

二百四十八、Linux——删除/etc/.sudoers文件进程或修改/etc/.sudoers文件内容

一、目的 安装国产化数据库OceanBase的时候&#xff0c;需要创建用户&#xff0c;并在/etc/.sudoers文件中赋予用户root权限 二、删除/etc/.sudoers文件进程 1 报错 W10: Warning: Changing a readonly file E325: ATTENTION Found a swap file by the name "/etc/.su…

二叉树的性质证明

文章目录 二叉树的概念二叉树的性质1. 若规定根结点的层数为1&#xff0c;则一棵非空二叉树的第i层上最多有 2 i − 1 2^{i-1} 2i−1 个结点.2. 若规定根结点的层数为1&#xff0c;则深度为h的二叉树的最大结点数是 2 h − 1 2^h-1 2h−1.3. 对任何一棵二叉树, 如果度为0其叶结…

C++:函数模板与类模板详解

1.函数模板 在构造函数的时候&#xff0c;我们常常会考虑传入的参数的数据类型&#xff0c;比如我们写一个大小比较的函数mycmp(class1 a,class1 b)&#xff0c;则可以写出class1为int,float,double,string等各个种类的mycmp函数&#xff0c;这样会很麻烦&#xff0c;且当我们…

hot100-7-链表1

160相交链表 206反转链表 234回文链表 可以反转后半部分链表或者反转全部链表&#xff0c;然后对比输出 141环形链表 142环形链表2

大模型RAG入门及实践

前言 在大语言模型&#xff08;LLM&#xff09;飞速发展的今天&#xff0c;LLMs 正不断地充实和改进我们周边的各种工具和应用。如果说现在基于 LLM 最火热的应用技术是什么&#xff0c;检索增强生成&#xff08;RAG&#xff0c;Retrieval Augmented Generation&#xff09;技…

【JVM】JVM的组成与执行流程

JVM 由哪些部分组成&#xff0c;运行流程是什么&#xff1f; JVM 是什么 Java Virtual Machine Java程序的运行环境&#xff08;java二进制字节码的运行环境&#xff09; 好处&#xff1a; 一次编写&#xff0c;到处运行自动内存管理&#xff0c;垃圾回收机制 JVM的组成 我…

redis集群 高可用

目录 主从复制 主从复制的流程 部署主从复制 步骤 哨兵模式 数据流向 步骤 故障恢复 cluster集群 数据流向 步骤 redis集群的三种模式&#xff1a; 主从复制 奇数台 1主2从 哨兵模式 奇数台 1主2从 cluster 集群 6 台 主从复制 原理&#xff1a;主可以…

(四)延时任务篇——redisson实现延迟任务实战

前言 上一节内容中介绍了如何使用redis的zset结构实现延迟任务的实战内容&#xff0c;从使用角度来说还是略显繁琐&#xff0c;而且定时任务的方式扫描redis获取过去的任务也会存在任务空转的问题。在此基础上&#xff0c;我们可以使用redisson的阻塞队列&#xff0c;完成延迟…

探索 Python 的新世界:funcy 库的神奇之旅

文章目录 探索 Python 的新世界&#xff1a;funcy 库的神奇之旅背景&#xff1a;为何 funcy 如此迷人&#xff1f;简介&#xff1a;funcy 库是什么&#xff1f;安装&#xff1a;如何将 funcy 纳入你的项目&#xff1f;功能&#xff1a;funcy 的五大法宝应用&#xff1a;funcy 在…

图方法与机器学习实战:从理论到应用的全景指南

《动手学图机器学习》并不是一本纯粹介绍图机器学习理论的著作&#xff0c;Alessandro Negro 博士作为科学家和 Reco4 公司的 CEO&#xff0c;长期维护图数据源的推荐系统。他结合机器学习工程和图机器学习方法&#xff0c;通过推荐引擎、欺诈检测和知识图谱等案例&#xff0c;…

一键式RWKV RAG、RWKV-Keras、新论文...RWKV社区7月动态速览!

大家好&#xff0c;《RWKV 社区最新动态》迎来了第三期内容&#xff0c;本期统计了 RWKV 社区 7 月的重要动态&#xff0c;一起来看看吧&#xff01; 省流版本&#xff1a; RWKV 官方公告 RWKV-6-World 14B 模型已发布RWKV 中文官网 rwkv.cn 正式上线 RWKV 社区新项目 RWKV R…

LeetCode删除链表的倒数第 N 个结点

给你一个链表&#xff0c;删除链表的倒数第 n 个结点&#xff0c;并且返回链表的头结点。 示例 1&#xff1a; 输入&#xff1a;head [1,2,3,4,5], n 2 输出&#xff1a;[1,2,3,5] 示例 2&#xff1a; 输入&#xff1a;head [1], n 1 输出&#xff1a;[] 示例 3&#x…

C++进阶(12)智能指针

个人主页&#xff1a;仍有未知等待探索-CSDN博客 专题分栏&#xff1a;C 一、概述 智能指针在构造的时候开辟空间&#xff0c;当智能指针生命周期结束则会自动调用析构函数释放空间。 解决问题&#xff1a;对于new开辟的时候出现异常&#xff0c;导致之前开辟的空间没有手动释放…

VMware虚拟机安装Windows7教程(超详细)

目录 1. 下载2. 安装 VMware3. 安装 Window73.1 新建虚拟机3.2 安装操作系统 4. 设置共享文件夹5. 安装 VMware Tools5.1 下载&安装缺少驱动5.2 开始安装 VMware Tools 6. 未&#x1f414;&#x1f525;解决 创作不易&#xff0c;禁止转载抄袭&#xff01;&#xff01;&…

MyBatis代码生成器:SpringBoot 引入MybatisGenerator

1. 引入插件 <plugin><groupId>org.mybatis.generator</groupId><artifactId>mybatis-generator-maven-plugin</artifactId><version>1.3.5</version><configuration><!--generator配置⽂件所在位置--><configurati…

7.5 grafana上导入模板看图并讲解告警

本节重点介绍 : blackbox_exporter grafana大盘导入和查看告警配置讲解 grafana大盘 grafana 上导入 blackbox_exporter dashboard 地址 https://grafana.com/grafana/dashboards/13659举例图片http总览图value_mapping设置 展示设置阈值&#xff0c;展示不同背景色 告警配…

过滤和筛选树形结构数据

场景 在平时项目开发中经常会遇到树形数据的处理&#xff0c;如树形数据根据条件值过滤掉不符合条件的选项&#xff0c;如果是最后的子数据符合条件那么就会保存这条树形链路的所有直属数据并过滤掉所有非直属的数据。如果是符合条件的数据还有子元素&#xff0c;那么就保留所…

算法强训day18

一、压缩字符串 链接&#xff1a;压缩字符串(一)_牛客题霸_牛客网 #include<iostream> using namespace std; #include<vector> class Solution { public:/*** 代码中的类名、方法名、参数名已经指定&#xff0c;请勿修改&#xff0c;直接返回方法规定的值即可***…

mac电脑不能快速传输文件的原因是什么 mac无法拷贝文件到移动硬盘的原因是什么 macbook传输速度慢

新买的移动硬盘连接上Mac电脑&#xff0c;想要将Mac上的文件拷贝到移动硬盘里&#xff0c;但是Mac无法拷贝文件到移动硬盘里&#xff0c;直接拖拽、剪切都不行&#xff0c;尤其是一些大的安装包或视频文件的拷贝&#xff0c;需要花费大量的时间&#xff0c;给Mac用户造成了很多…

Excel文档受损打不开,还能修复吗?

Excel作为最常用的表格文件&#xff0c;在我们日常的工作当中使用尤其频繁&#xff0c;且经常涉及到一些重要数据文件的编辑和保存。然而&#xff0c;有时我们会遇到Excel文档受损而无法打开的情况&#xff0c;这无疑会给我们的工作带来诸多不便。那么&#xff0c;当Excel文档受…