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

news2025/1/31 2:51:56

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操作的进程或线程。

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

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

相关文章

JavaWeb前端——HTML/CSS

HTML/CSS概述 HTML:学习标签,CSS:学习样式 HTML 1. 不区分大小写。 2. 属性可以使用单引号/双引号 3. 在记事本/编辑器中编写html语言,通过浏览器解析渲染语言 4. 语法结构松散(编写时要尽量严谨) VSc…

github请求超时解决方法

github请求超时解决办法 我使用windows执行如下git命令,提示超时 git clone xxxxx命令行提示如下: Failed to connect to github.com port 443: Timed out问题排查 可我Chrome可以正常访问github甚至ChatGPT,但是为什么在命令行里面却无法访问&#…

AI大模型开发架构设计(7)——人人都需要掌握的AI编程及应用案例实战

文章目录 人人都需要掌握的AI编程及应用案例实战1 AI代码生成模型与AI编程助手介绍程序设计方式的发展自动代码生成AI编程工具 2 AI编程助手的代码生成模型架构剖析以 CodeGeeX 为例-发展过程以 CodeGeeX 为例-训练过程以 CodeGeeX 为例-大规模代码数据处理以 CodeGeeX 为例-模…

『C++成长记』string使用指南

🔥博客主页:小王又困了 📚系列专栏:C 🌟人之为学,不日近则日退 ❤️感谢大家点赞👍收藏⭐评论✍️ 目录 一、string类介绍 二、string类的常用接口说明 📒2.1string类对象的常…

线下店铺的商品如何查价

品牌渠道主要分为线上和线下,线上的价格查价方式可以通过系统完成,系统筛选不同平台的数据,然后做价格的比较,输出是否破价的监测报表,这个过程多依赖系统去操作,但线下店铺的产品价格查价方式则没有固定的…

Windows下Cloudreve WebDAV挂载失败解决方法

如果你正在使用Windows的资源管理器挂载WebDAV,并且发现挂载失败,无论你如何去配置他 首先,Cloudreve 中可以为每个用户组单独设置“是否允许使用WebDAV访问”的开关,但是这玩意儿默认是开启的,所以如果不小心手残关掉…

机器学习系列——(六)数据降维

引言 在机器学习领域,数据降维是一种常用的技术,旨在减少数据集的维度,同时保留尽可能多的有用信息。数据降维可以帮助我们解决高维数据带来的问题,提高模型的效率和准确性。本文将详细介绍机器学习中的数据降维方法和技术&#…

解锁文档处理的全新维度:ONLYOFFICE 文档开发者版

前言 相信大家对于 ONLYOFFICE 这款办公软件可能已经有所耳闻,最近因工作需要,我在众多办公协作工具中选择了 ONLYOFFICE,原因主要是它开源经济实惠,可以部署在自己的服务器上并且能够轻松集成到我们的平台中。在数字化信息时代&…

10、数据结构与算法——堆

一、什么是堆 堆是一种特殊的树形数据结构,通常实现为完全二叉树或满二叉树。堆又分为两种类型最大堆(Max Heap) 和 最小堆(Min Heap) 1.1、什么是二叉树 二叉树是一种数据结构,它是由n(n≥0&a…

Python 计算两个时间之间的耗时

博主按照自己的需求写的一个可以计算程序耗时的函数,各位有需要的自行改写哈 实现的大致功能 功能1 记录开始时间,返回一个时间字典。数据包括:开始时间的日期格式、文本格式 功能2 记录结束时间和耗时,返回一个时间字典。数据包…

Web3智能合约:重新定义商业合作的未来

随着区块链技术的飞速发展,Web3时代正逐渐到来,而其中的智能合约成为推动商业合作变革的关键力量。本文将深入探讨Web3智能合约的概念、特点以及对商业合作未来的巨大影响。 什么是Web3智能合约? 智能合约是一种以代码形式编写、自动执行合同…

Oracle 面试题 | 05.精选Oracle高频面试题

🤍 前端开发工程师、技术日更博主、已过CET6 🍨 阿珊和她的猫_CSDN博客专家、23年度博客之星前端领域TOP1 🕠 牛客高级专题作者、打造专栏《前端面试必备》 、《2024面试高频手撕题》 🍚 蓝桥云课签约作者、上架课程《Vue.js 和 E…

Flask 入门4:Flask 模板

1. 前言 Flask 拥有丰富的扩展方法,且都有统一的特点:简单和即学即用。当我们要实现某个功能之前,可以提前去搜一搜这个功能包是否已经存在,这样也能帮助我剩下很多时间。那么要去哪里找到这些扩展包呢,这里推荐两个方…

Android:RecyclerView跨行跨列的LayoutManager:Spannedgridlayoutmanager

前言: RecyclerView可以使用GridLayoutManager实现跨行,但是不能跨列;瀑布流布局可以跨列但是又不能跨行。原生自带的各个LayoutManager中并没有可以又跨行又能跨列的。网上搜寻了一番,找到了一个亲测可行好用的三方库&#xff1…

微信小程序可以一个人开发么?

随着移动互联网的飞速发展,微信小程序已经成为了人们日常生活中不可或缺的一部分。它以其便捷性和高效性赢得了广大用户的青睐。对于许多有志于进入小程序领域的开发者来说,一个常见的问题是:微信小程序可以一个人开发吗?答案是肯…

2024 Flutter 重大更新,Dart 宏(Macros)编程开始支持,JSON 序列化有救

说起宏编程可能大家并不陌生,但是这对于 Flutter 和 Dart 开发者来说它一直是一个「遗憾」,这个「遗憾」体现在编辑过程的代码修改支持上,其中最典型的莫过于 Dart 的 JSON 序列化。 举个例子,目前 Dart 语言的 JSON 序列化高度依…

【笔记】React-Native Navigation页面导航

/** * 须知:a bare React Native Project(not an Expo managed project) * * React官方文档:https://reactnative.dev/docs/navigation * * 当前文档基于6.x * React Navigation文档:https://reactnavigation.org/docs/getting-started * …

C++ Webserver从零开始:基础知识(七)——多进程编程

前言 在学习操作系统时,我们知道现代计算机往往都是多进程多线程的,多进程和多线程技术能大大提高了CPU的利用率,因此在web服务器的设计中,不可避免地要涉及到多进程多线程技术。 这一章将简要讲解web服务器中的多进程编程&#x…

AI与数字孪生

源自:译文 “人工智能技术与咨询”发布 AI和数字孪生 预测分析:网络安全水晶球 面对不断变化的威胁,提供自适应安全防护 自然语言处理:解码威胁语言 先进技术:人工智能作为数字孪生安全的基础 道德考量 …

关于v8垃圾回收机制以及与其相关联的知识点--还没整理版本

对于值类型b来说,就直接释放了其占用的内存,对于引用类型obj来说,销毁的只是变量obj对堆内存地址 1001 的引用,obj的值 { c: 3 } 依然存在于堆内存中。那么堆内存中的变量如何进行回收呢? V8的垃圾回收策略主要是基于…