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

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Aigtek大功率信号源怎么使用的

大功率信号源是在实验室、测试和通信系统中经常使用的重要设备。它能够提供高功率的信号,用于驱动各种设备和系统。在使用大功率信号源时,有一些关键的步骤和指南,可以确保安全、有效地操作设备并获得稳定的输出。本文将详细介绍大功率信号源…

如何使用docker部署Swagger Editor并实现无公网ip远程协作编辑文档

文章目录 Swagger Editor本地接口文档公网远程访问1. 部署Swagger Editor2. Linux安装Cpolar3. 配置Swagger Editor公网地址4. 远程访问Swagger Editor5. 固定Swagger Editor公网地址 Swagger Editor本地接口文档公网远程访问 Swagger Editor是一个用于编写OpenAPI规范的开源编…

whale-quant 学习 part6:量化择仓策略

量化择调仓策略 投资组合收益率衡量投资组合收益率计算方法投资组合的绝对收益率和相对收益率 投资组合的风险衡量最优方法计算投资组合的最佳仓位等权重市场加权最小方差组合最大分散度风险平价均值方差优化(最经典与常用)常见约束 python实现最佳仓库控制参考 投资组合收益率…

【C++】类和对象万字详解

目录 一、类与对象 1、类是什么 二、类和对象的基础知识 2.1 定义类:成员变量和成员函数 2.2 创建对象:实例化一个类的对象。 2.3对象的生命周期:构造函数和析构函数。 a. 构造函数 b. 析构函数 c.小结: 三、成员变量和…

车载语音交互赛道研究:大模型揭幕2.0时代 商业模式重塑

大模型正给车载语音交互赛道带来颠覆性变革。 根据高工智能汽车研究院调研获取的信息,核心原因为:1.0时代,车载语音交互玩家可使用自身的小模型;2.0时代,很可能需基于通用大模型(训练成本极为高昂&#xf…

LeetCode:49. 字母异位词分组

49. 字母异位词分组 1)题目2)代码3)结果 1)题目 给你一个字符串数组,请你将 字母异位词 组合在一起。可以按任意顺序返回结果列表。 字母异位词 是由重新排列源单词的所有字母得到的一个新单词。 示例 1: 输入: strs…

SAP 检验批QA32质检放行后使用程序RQEVAC50冲销报错:Material XXX is serialized

场景: 成品采购时,如果成品物料启用了序列号管理,此时使用程序RQEVAC50冲销时候,就会出现报错Material XXX is serialized 解决办法: 第一步:非限制库存转质检库存 使用MIGO A08转账过账 R10其他 移动…

BSV区块链将凭借Teranode的创新在2024年大放异彩

​​发表时间:2024年1月15日 2024年1月15日,瑞士楚格 – BSV区块链协会研发团队今日官宣了Teranode的突破性功能,这些功能将显著提升BSV区块链网络的效率和速度。在不久的将来,BSV区块链的交易处理能力将达到每秒100万笔交易。 T…

cilium-agent的DaemonSet启动流程

文章目录 概述架构分析configmount-cgroupapply-sysctl-overwritesmount-bpf-fsclean-cilium-stateinstall-cni-binariescilium-agent 总结参考资料 概述 本文主要分析 cilium-agent 作为 DaemonSet 在每个节点的启动流程。 架构分析 下面按照 cilium-agent 从 init-contain…

江科大stm32学习笔记9——OLED调试工具

一、OLED OLED:有机发光二极管,供电3~5.5V,0.96寸OLED通信协议:I2C/SPI,分辨率:128*64 二、调试方式 串口调试:通过串口通信,将调试信息发送到电脑端,电脑使用串口助手…

canvas的一些基础

在 Canvas 中,基本图形有两种:直线图形和曲线图形 直线图形:直线、矩形(描边矩形和填充矩形)、多边形 曲线图形:曲线和弧线(弧线是圆的一部分,曲线则不一定,弧线上的每个点都具有相同的曲率&…

npm ERR! reason: certificate has expired(淘宝镜像过期)

npm ERR! request to https://registry.npm.taobao.org/yauzl/-/yauzl-2.4.1.tgz failed, reason: certificate has expired 今天在执行npm install命令时,报错百度了下是淘宝证书过期原因 解决方法一 执行下面两个命令再进行npm install即可 npm cache clean --…

C语言中大小写字母的转化的方法

C语言中大小写字母的转化 介绍 在C语言中&#xff0c;我们经常需要在大小写字母之间进行转换。这篇文章将详细介绍如何在C语言中实现这个功能。 方法 C语言的标准库 <ctype.h> 提供了一些函数&#xff0c;可以帮助我们在大小写字母之间进行转换。这些函数包括 toupper…

PPT、PDF全文档翻译相关产品调研笔记

主要找一下是否有比较给力的全文档翻译 文章目录 1 百度翻译2 小牛翻译3 腾讯交互翻译4 DeepL5 languagex6 云译科技7 快翻:qtrans8 simplifyai9 officetranslator10 火山引擎翻译-无文档翻译1 百度翻译 地址: https://fanyi.baidu.com/ 配套的比较完善,对于不同行业也有区…

Qt代码添加日志管理的模块功能

在程序中一般需要添加日志管理的记录&#xff0c;在学习Httpserver的过程中&#xff0c;学习到了日志管理模块&#xff0c;将QtwebApp的日志模块提取出来可作为一般性程序的日志管理&#xff0c;记录实验的过程&#xff0c;项目源代码也附在后面。 项目运行结果 项目代码结构 参…

Spring Bean 定义常见错误

Spring 的核心是围绕 Bean 进行的。不管是 Spring Boot 还是 Spring Cloud&#xff0c;只要名称中带有 Spring 关键字的技术都脱离不了 Bean&#xff0c;而要使用一个 Bean 少不了要先定义出来&#xff0c;所以定义一个 Bean 就变得格外重要了。 当然&#xff0c;对于这么重要…

Jmeter分布式压测

Jmeter分布式压测 Jmeter分布式压测 分布式压测原理&#xff1a; image1140682 27.7 KB 1、安装从节点slave环境 保证slave与master所有jdk&jmeter都是同一个大版本jdk-11jmeter-5.6.2 2、禁用SSL连接模式 配置 JMETER_HOME/bin 目录下 user.properties文件 server.rm…

Docker本地部署可编辑开源导航页并发布公网分享好友可访问

文章目录 1. 使用Docker搜索镜像2. 下载镜像3. 查看镜像4. 启动容器5. 浏览器访问6. 远程访问6.1 内网穿透工具安装6.2 创建远程连接公网地址6.3 使用固定二级子域名地址远程访问 今天和大家分享如何使用Docker本地部署一个开源的简约风格网址导航页&#xff0c;支持五种搜索引…

TCP 了解

参考&#xff1a;4.2 TCP 重传、滑动窗口、流量控制、拥塞控制 | 小林coding TCP报文 其中比较重要的字段有&#xff1a;&#xff08;1&#xff09;序号&#xff08;sequence number&#xff09;&#xff1a;Seq序号&#xff0c;占32位&#xff0c;用来标识从TCP源端向目的端发…

8.DNS域名解析服务器

目录 1. 概述 1.1. 产生原因 1.2. 作用&#xff1a; 1.3. 连接方式 1.4. 因特网的域名结构 1.4.1. 拓扑&#xff1a; 1.4.2. 分类 1.4.3. 域名服务器类型划分 2. DNS域名解析过程 2.1. 分类&#xff1a; 2.2. 解析图&#xff1a; 2.2.1. 图&#xff1a; 2.2.2. 过…