当前位置: 首页 > news >正文

Linux系统管理和Shell脚本笔试题

1、写一个sed命令,修改/tmp/input.txt文件的内容,要求:(1) 删除所有空行;(2) 在非空行前面加一个"AAA",在行尾加一个"BBB",即将内容为11111的一行改为:AAA11111BBB

#写入内容到/tmp/input.txt

[root@node1 ~]# echo -e "Hello\nWorld\nThis is a test\n\nAnother line\n\nLast line" > /tmp/input.txt

[root@node1 ~]# cat /tmp/input.txt

语句分析:

  • '/^$/ d'是一个删除操作,匹配空行(由^$表示)并删除。
  • s/([a-Z].*)/AAA\1BBB/是一个替换操作,匹配任何以大写字母开头的行,并将其替换为AAA、原始行内容和BBB

[root@node1 ~]# sed -r '/^$/ d; s/([a-Z].*)/AAA\1BBB/' /tmp/input.txt

 2、周一下午三点将/tmp/logs目录下面的后缀为*.log的所有文件rsync同步到备份服务器192.168.1.100中同样的目录下面,crontab配置项该如何写:

思路:1.创建文件   

           2. 配置免密登入   

           3. rsync将文件传入指定服务器下

           4. 编写 crontab

[root@node1 ~]# mkdir /tmp/logs

[root@node1 ~]# mkdir /tmp/logs/{1..6}.log

[root@node1 ~]# ll /tmp/logs/

语句分析:

ssh-keygen是一个用于生成、管理和转换SSH密钥的工具。在你提供的命令ssh-keygen -f ~/.ssh/id_rsa -N '' -q中:

  • ssh-keygen是命令本身,用于生成SSH密钥。
  • -f ~/.ssh/id_rsa是-f选项后面跟着的参数,表示生成的密钥文件的路径,这里是~/.ssh/id_rsa。
  • -N ''是-N选项后面跟着的参数,表示密钥的密码,这里是空字符串(''),表示没有密码。
  • -q选项表示安静模式,不显示任何信息。

所以,这个命令的意思是在~/.ssh/id_rsa路径下生成一个没有密码的SSH密钥,并且在生成过程中不显示任何信息

[root@node1 ~]# ssh-keygen -f ~/.ssh/id_rsa -N '' -q

[root@node1 ~]# ssh-copy-id root@192.168.78.130

  • # rsync是命令本身,用于同步文件和目录。

[root@node1 ~]# rsync -avz /tmp/logs/*.log 192.168.78.130:/tmp/logs/

[root@node3 ~]# mkdir /tmp/logs/

[root@node3 ~]# ll /tmp/logs/

编写计划任务:

0 15 * * 1 rsync -avz /tmp/logs/*.log 192.168.78.130:/tmp/logs/

[root@node3 ~]# crontab -e

[root@node3 ~]# crontab -l

3、找到/tmp/目录下面的所有名称以"_s1.jpg"结尾的普通文件,如果其修改日期在一天内,则将其打包到/tmp/back.tar.gz文件中

[root@node1 ~]# vim find.sh

#!/bin/bash

#查看/tmp/back.tar.gz 文件是否存在,存在则删除

[ -f /tmp/back.tar.gz ] &&  rm -f /tmp/back.tar.gz

find /tmp/ -type f -name '*_s1.jpg' -mtime -1 -exec tar rf /tmp/back.tar.gz {} \;  2>/dev/null

#查看压缩文件的内容

tar tvf /tmp/back.tar.gz

语句分析:

find /tmp/ -type f -name '*_s1.jpg' -mtime -1 -exec tar rf /tmp/back.tar.gz {} \;  2>/dev/null

  • find:这是一个用于在文件系统中查找文件的命令。
  • -type f:这个选项告诉find只查找文件(不包括目录)。
  • -name '*_s1.jpg':这个选项告诉find只查找名字以'_s1.jpg'结尾的文件。
  • -mtime -1:这个选项告诉find只查找在过去24小时内修改过的文件。
  • -exec:这个选项允许你对找到的每个文件执行一个命令。在这里,命令是tar rf /tmp/back.tar.gz {} \;,这将把找到的每个文件添加到名为/tmp/back.tar.gz的tar存档中。
  • 2>/dev/null:这个部分将错误输出重定向到/dev/null,也就是说,任何错误信息都会被丢弃,不会显示在控制台上。
  • 所以,整个命令的意思是:在当前目录及其子目录中查找所有在过去24小时内修改过并且名字以'_s1.jpg'结尾的文件,然后把这些文件添加到名为/tmp/back.tar.gz的tar存档中,同时丢弃所有错误信息。

[root@node1 ~]# bash find.sh

4、写出SHELL函数RevertInput,函数必须获取三个参数,然后将三个参数倒序echo打印出来,函数必须检查参数个数的合法性,如果参数非法,打印 ”Illegal parameters”

RevertInput “this is para1” para2 para3

应该输出:

para3

para2

this is para1

(注:需要注意第一个参数中的空格)

[root@node1 ~]# vim Illegal.sh 

#!/bin/bash

RevertInput() {

 if [ $# -ne 3 ]                             # ne 是not equal 不等于

 then

     echo "Illegal parameters"

 else

     for ((i=3;i>=1;i--))

     do

        echo ${!i}                         #变量的间接引用 “{!}”

     done

  fi

}

RevertInput "this is para1" para2 para3

[root@node1 ~]# cat  Illegal.sh 

 [root@node1 ~]# sh Illegal.sh            #执行脚本

5、如果一个系统使用LVM进行分区管理,请写出调整一个逻辑卷分区大小的命令:

[root@node1 ~]# vgcreate VG1 /dev/sda             

  Physical volume "/dev/sda" successfully created.

  Volume group "VG1" successfully created

[root@node1 ~]# lvcreate -n LV1 -L 5g VG1

  Logical volume "LV1" created.

#  lsblk是一个在Linux中用于列出所有连接到系统的块设备的命令。

[root@node1 ~ ]# lsblk

#  lvextend是命令本身,用于扩展逻辑卷的大小。

#  -L +1G是-L选项后面跟着的参数,表示要增加的大小,这里是+1G,表示增加1GB

[root@node1 ~]# lvextend -L +1G /dev/VG1/LV1

  Size of logical volume VG1/LV1 changed from 5.00 GiB (128nts) to 6.00 GiB (1536 extents).

  Logical volume VG1/LV1 successfully resized.

[root@node1 ~]# lsblk  

#  lvreduce是一个用于减小逻辑卷大小的命令

#  -L -2G是-L选项后面跟着的参数,表示要减少的大小,这里是-2G,表示减少2GB

[root@node1 ~]# lvreduce -L -2g /dev/VG1/LV1

  WARNING: Reducing active logical volume to 4.00 GiB.

  THIS MAY DESTROY YOUR DATA (filesystem etc.)

Do you really want to reduce VG1/LV1? [y/n]: y

  Size of logical volume VG1/LV1 changed from 6.00 GiB (153nts) to 4.00 GiB (1024 extents).

  Logical volume VG1/LV1 successfully resized.

[root@node1 ~]# lsblk

 6、如何找出当前系统中磁盘I/O读写占用最高的程序:

[root@node1 ~]# yum install iotop -y 

 [root@node1 ~]# iotop -o

  -o, --only: 只显示正在进行I/O操作的进程或线程。

相关文章:

Linux系统管理和Shell脚本笔试题

1、写一个sed命令,修改/tmp/input.txt文件的内容,要求:(1) 删除所有空行;(2) 在非空行前面加一个"AAA",在行尾加一个"BBB",即将内容为11111的一行改为:AAA11111BBB #写入内…...

docker 搭建 Seafile 集成 onlyoffice

docker-compose一键部署yaml文件 version: "3"services:db:image: mariadb:10.11container_name: seafile-mysqlenvironment:- MYSQL_ROOT_PASSWORDdb_dev # Requested, set the roots password of MySQL service.- MYSQL_LOG_CONSOLEtruevolumes:- /share/ZFS18_D…...

【Spring Boot 3】【JPA】嵌入式对象

【Spring Boot 3】【JPA】嵌入式对象 背景介绍开发环境开发步骤及源码工程目录结构总结背景 软件开发是一门实践性科学,对大多数人来说,学习一种新技术不是一开始就去深究其原理,而是先从做出一个可工作的DEMO入手。但在我个人学习和工作经历中,每次学习新技术总是要花费或…...

STM32控制DS18B20温度传感器获取温度

时间记录:2024/1/28 一、DS18B20温度传感器介绍 (1)测温范围-55℃~125℃,在-10℃到85℃范围内误差为0.4 (2)返回的温度数据为16位二进制数据 (3)STM32和DS18B20通信使用单总线协议…...

服务器常遇的响应状态码

服务器常遇的响应状态码 状态码 500 表示服务器内部错误。 这种状态码意味着服务器在尝试执行请求时遇到了意外情况。在处理这种状态码时,我们需要联系服务器管理员或服务提供商以获取更多信息。 处理方法:联系服务器管理员或服务提供商以获取更多信息…...

云原生业务全流程DevOps配置预研与实践

背景 我在一个二线城市(山东济南),相对与北上广深杭这些IT业发达的城市来说,济南IT业对于业内新技术的接受度是有点慢的,国内很多一线大厂早先几年前就开始实践使用的技术,我们这边也是近两年才开始慢慢兴…...

SouthLeetCode-打卡24年01月第5周

SouthLeetCode-打卡24年01月第5周 // Date : 2024/01/39 ~ 2024/01/31 031.删除链表的倒数第 N 个结点 (1) 题目描述 031#LeetCode.19.#北岸计划2024/01/29 (2) 题解代码 Version1.0 class Solution {public ListNode removeNthFromEnd(ListNode head, int n) {if(head …...

【国产MCU】-CH32V307-通用DMA控制器及使用

通用DMA控制器及使用 文章目录 通用DMA控制器及使用1、通用DMA控制器介绍2、DMA驱动API介绍3、DMA使用实例直接存储器访问控制器(DMA)提供在外设和存储器之间或存储器和存储器之间的高速数据传输方式,无须CPU 干预,数据可以通过DMA 快速地移动,以节省CPU 的资源来做其他操…...

mysql8.0-cnf文件

一、my.cnf 文件 注意:根据自己环境进行参数的调整。 [client] port 3307 socket /data/mysql8.0.35/3307/tmp/mysql.sock[mysqldump] quick max_allowed_packet 64M[mysql] prompt"\u\h: \R:\m:\s [\d]> " no-auto-rehash[mysqld] ###### BASIC…...

MySQL进阶45讲【11】怎么更好地给字符串字段加索引?

1 前言 现在,几乎所有的系统都支持邮箱登录,如何在邮箱这样的字段上建立合理的索引,是我们今天要讨论的问题。 假设,现在维护一个支持邮箱登录的系统,用户表是这么定义的: mysql> create table SUser…...

​(三)hadoop之hive的搭建1

下载 访问官方网站https://hive.apache.org/ 点击downloads 点击Download a release now! 点击https://dlcdn.apache.org/hive/ 选择最新的稳定版 复制最新的url 在linux执行下载命令 wget https://dlcdn.apache.org/hive/hive-3.1.3/apache-hive-3.1.3-bin.tar.gz 2.解压…...

Spring事务传播机制

Spring事务传播机制 回顾简单介绍事务的传播机制有哪些Propagation.REQUIREDPropagation.SUPPORTSPropagation.MANDATORYPropagation.REQUIRES_NEWPropagation.NOT_SUPPORTEDPropagation.NEVERPropagation.NESTED 实例REQUIREDREQUIRES_NEWNEVERNESTEDREQUIRED和NESTED的区别 回…...

智能分析网关V4+EasyCVR视频融合平台——高速公路交通情况的实时监控和分析一体化方案

随着2024年春运帷幕的拉开,不少人的返乡之旅也即将开启,从这几日的新闻来看,高速上一路飘红。伴随恶劣天气,加上激增的车流,极易导致高速瘫痪,无法正常使用。为解决此问题,助力高速高效运营&…...

Vue3.0(一):Vue的引入-options api-模板语法

Vue的引入方式 CDN方式进行引入 将以下 script标签引入即可 <script src"https://unpkg.com/vue3/dist/vue.global.js"></script><!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8" /><met…...

API网关-Apisix多节点搭建(RPM包方式)

文章目录 前言一、介绍1. 端口介绍2. APISIX节点介绍3. apisix单机安装配置教程(选看) 二、准备1. 配置集群免密登录2. 搭建etcd集群 三、安装apisix节点1. 复制脚本2. 增加执行权限3. 分发脚本4. 执行脚本5. 配置apisix的etcd集群地址 四、安装apisix-dashboard1. 复制脚本2. …...

HAL库配置片内FLASH读写

一、FLASH简介 不同型号的 STM32F40xx/41xx&#xff0c;其 FLASH 容量也有所不同&#xff0c;最小的只有 128K 字节&#xff0c;最大 的则达到了 1024K 字节。我们的探索者开发板选择的是 STM32F407ZGT6 的 FLASH 容量为 1024K 字节。 主存储器&#xff0c;存放代码和数据常数&…...

日志记录——单片机可执行文件合并

一&#xff1a;需求场景 现在有一片单片机&#xff0c;执行程序包括自定义boot和应用程序app, 在将打包好的固件给到生产是有以下问题&#xff0c;由于要通过jlink烧录boot&#xff0c;然后上电启动boot&#xff0c;通过boot烧录初始化程序&#xff0c;过程过于复杂&#xff0…...

2024数模美赛C题F题完整代码结果展示

C&#xff1a;Momentum in Tennis 实在精力有限&#xff0c;完整讲解可以移步去看我的讲解视频啦&#xff1a; 美赛C题每一问代码结果讲解及进度说明 F&#xff1a;Reducing lllegal Wildlife Trade 实在精力有限&#xff0c;完整讲解可以移步去看我的讲解视频啦&#xff1a; ​…...

H5调用安卓原生相机API案例

1、在activity_main.xml文件里添加webview标签 <WebViewandroid:id="@+id/webview"android:layout_width="match_parent"android:layout_height="match_parent"> </WebView> 2、AndroidManifest.xml(权限和活动声明) 开启访问…...

Java面试——计网篇

一、基础篇 1、 TCP/IP 网络模型 对于同一台设备上的进程间通信&#xff0c;有很多种方式&#xff0c;比如有管道、消息队列、共享内存、信号等方式&#xff0c;而对于不同设备上的进程间通信&#xff0c;就需要网络通信&#xff0c;而设备是多样性的&#xff0c;所以要兼容多…...

在软件开发中正确使用MySQL日期时间类型的深度解析

在日常软件开发场景中&#xff0c;时间信息的存储是底层且核心的需求。从金融交易的精确记账时间、用户操作的行为日志&#xff0c;到供应链系统的物流节点时间戳&#xff0c;时间数据的准确性直接决定业务逻辑的可靠性。MySQL作为主流关系型数据库&#xff0c;其日期时间类型的…...

spring:实例工厂方法获取bean

spring处理使用静态工厂方法获取bean实例&#xff0c;也可以通过实例工厂方法获取bean实例。 实例工厂方法步骤如下&#xff1a; 定义实例工厂类&#xff08;Java代码&#xff09;&#xff0c;定义实例工厂&#xff08;xml&#xff09;&#xff0c;定义调用实例工厂&#xff…...

JVM暂停(Stop-The-World,STW)的原因分类及对应排查方案

JVM暂停(Stop-The-World,STW)的完整原因分类及对应排查方案,结合JVM运行机制和常见故障场景整理而成: 一、GC相关暂停​​ 1. ​​安全点(Safepoint)阻塞​​ ​​现象​​:JVM暂停但无GC日志,日志显示No GCs detected。​​原因​​:JVM等待所有线程进入安全点(如…...

Mysql8 忘记密码重置,以及问题解决

1.使用免密登录 找到配置MySQL文件&#xff0c;我的文件路径是/etc/mysql/my.cnf&#xff0c;有的人的是/etc/mysql/mysql.cnf 在里最后加入 skip-grant-tables重启MySQL服务 service mysql restartShutting down MySQL… SUCCESS! Starting MySQL… SUCCESS! 重启成功 2.登…...

规则与人性的天平——由高考迟到事件引发的思考

当那位身着校服的考生在考场关闭1分钟后狂奔而至&#xff0c;他涨红的脸上写满绝望。铁门内秒针划过的弧度&#xff0c;成为改变人生的残酷抛物线。家长声嘶力竭的哀求与考务人员机械的"这是规定"&#xff0c;构成当代中国教育最尖锐的隐喻。 一、刚性规则的必要性 …...

深入解析 ReentrantLock:原理、公平锁与非公平锁的较量

ReentrantLock 是 Java 中 java.util.concurrent.locks 包下的一个重要类,用于实现线程同步,支持可重入性,并且可以选择公平锁或非公平锁的实现方式。下面将详细介绍 ReentrantLock 的实现原理以及公平锁和非公平锁的区别。 ReentrantLock 实现原理 基本架构 ReentrantLo…...

【大厂机试题解法笔记】矩阵匹配

题目 从一个 N * M&#xff08;N ≤ M&#xff09;的矩阵中选出 N 个数&#xff0c;任意两个数字不能在同一行或同一列&#xff0c;求选出来的 N 个数中第 K 大的数字的最小值是多少。 输入描述 输入矩阵要求&#xff1a;1 ≤ K ≤ N ≤ M ≤ 150 输入格式 N M K N*M矩阵 输…...

Ubuntu 可执行程序自启动方法

使用 autostart&#xff08;适用于桌面环境&#xff09; 适用于 GNOME/KDE 桌面环境&#xff08;如 Ubuntu 图形界面&#xff09; 1. 创建 .desktop 文件 sudo vi ~/.config/autostart/my_laser.desktop[Desktop Entry] TypeApplication NameMy Laser Program Execbash -c &…...

Ansys Maxwell:线圈和磁体的静磁 3D 分析

本博客展示了如何在 Ansys Maxwell 中执行静磁 3D 分析&#xff0c;以计算载流线圈和永磁体之间相互作用产生的扭矩。在这个例子中&#xff0c;线圈中的电流产生一个沿 Y 轴指向的磁场&#xff0c;而永磁体沿 X 轴被磁化。这种配置导致围绕 Z 轴的扭矩。分步工作流程包括构建几…...

matlab模糊控制实现路径规划

路径规划是机器人和自动驾驶系统中的重要问题之一&#xff0c;它涉及确定如何在给定环境中找到最优路径以达到特定目标。模糊控制是一种有效的控制方法&#xff0c;可以应用于路径规划问题。 路径规划算法的目标是在避免障碍物的情况下&#xff0c;找到机器人或车辆从起点到终…...