北京某大厂Linux系统管理和Shell脚本笔试题

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

#创建一个测试文件
[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 
Hello
World
This is a testAnother lineLast line
[root@node1 ~]# sed -i '/^$/d;s/^/AAA/;s/$/BBB/' /tmp/input.txt 
AAAHelloBBB
AAAWorldBBB
AAAThis is a testBBB
AAAAnother lineBBB
AAALast lineBBB

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

#创建测试文件
[root@node1 ~]# mkdir /tmp/logs[root@node1 ~]# touch /tmp/logs/{1..5}.log#node2  IPV4:192.168.110.143
[root@node1 ~]# mkdir -p /tmp/logs#配置免密访问192.168.110.143服务器
[root@node1 ~]# ssh-keygen -f ~/.ssh/id_rsa -N '' -q[root@node1 ~]# ssh-copy-id root@192.168.110.143
/usr/bin/ssh-copy-id: INFO: Source of key(s) to be installed: "/root/.ssh/id_rsa.pub"
/usr/bin/ssh-copy-id: INFO: attempting to log in with the new key(s), to filter out any that are already installed
/usr/bin/ssh-copy-id: INFO: 1 key(s) remain to be installed -- if you are prompted now it is to install the new keysAuthorized users only. All activities may be monitored and reported.
root@192.168.110.143's password: Number of key(s) added: 1Now try logging into the machine, with:   "ssh 'root@192.168.110.143'"
and check to make sure that only the key(s) you wanted were added.#测试``
[root@node1 ~]# rsync -avz /tmp/logs/ *.log 192.168.110.143:/tmp/logsAuthorized users only. All activities may be monitored and reported.
sending incremental file list
1.log
2.log
3.log
4.log
5.logsent 303 bytes  received 111 bytes  276.00 bytes/sec
total size is 0  speedup is 0.00#node2:192.168.110.143
[root@node2 ~]# ll /tmp/logs/
total 0
-rw-r--r--. 1 root root 0 Jan 27  2024 1.log
-rw-r--r--. 1 root root 0 Jan 27  2024 2.log
-rw-r--r--. 1 root root 0 Jan 27  2024 3.log
-rw-r--r--. 1 root root 0 Jan 27  2024 4.log
-rw-r--r--. 1 root root 0 Jan 27  2024 5.log#配置计划任务内容为0 15 * * 1 rsync -avz /tmp/logs/ *.log 192.168.110.143:/tmp/logs
[root@node1 ~]# crontab -e 
no crontab for root - using an empty one
crontab: installing new crontab[root@node1 ~]# crontab -l
0 15 * * 1 rsync -avz /tmp/logs/ *.log 192.168.110.143:/tmp/logs

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

#创建测试文件
[root@node1 ~]# touch /tmp/test{1..3}_s1.jpg
[root@node1 ~]# vim find.sh
#!/bin/bash#检查/tmp/back.tar.gz文件是否存在,如果存在则删除
[ -f /tmp/back.tar.gz ] && rm -f /tmp/back.tar.gz#查找以_s1.jpg结尾的文件并压缩归档到/tmp/back.tar.gz,这里r为来将文件添加到已经存在的归档文件中,如果用c的话就归档一个文件就无法再添加
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
[root@node1 ~]# bash find.sh 
-rw-r--r-- root/root         0 2024-01-27 19:50 tmp/test3_s1.jpg
-rw-r--r-- root/root         0 2024-01-27 19:50 tmp/test2_s1.jpg
-rw-r--r-- root/root         0 2024-01-27 19:50 tmp/test1_s1.jpg

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

RevertInput “this is para1” para2 para3 应该输出:
para3
para2
this is para1 (注:需要注意第一个参数中的空格)

[root@node1 ~]# vim RevertInput.sh
#!/bin/bash
RevertInput() {#检测参数设否合法$#为参数长度if [ $# -ne 3 ]thenecho 'Illegal parameters'elseecho "$3"echo "$2"echo "$1"fi
}
RevertInput "this is para1" para2 para3
:wq[root@node1 ~]# sh RevertInput.sh 
para3
para2
this is para1## 5.如果一个系统使用LVM进行分区管理,请写出调整一个逻辑卷分区大小的命令:```c
[root@node1 ~]# vgcreate VG1 /dev/sdb   #创建逻辑卷组Volume group "VG1" successfully extended[root@node1 ~]# lvcreate -n LV1 -L 5g VG1  #创建逻辑卷大小为5GLogical volume "LV1" created.[root@node1 ~]# lsblk 
NAME                     MAJ:MIN RM  SIZE RO TYPE MOUNTPOINTS
sda                        8:0    0   20G  0 disk 
├─sda1                     8:1    0    1G  0 part /boot
└─sda2                     8:2    0   19G  0 part ├─openeuler_node1-root 253:0    0   17G  0 lvm  /└─openeuler_node1-swap 253:1    0    2G  0 lvm  [SWAP]
sdb                        8:16   0   20G  0 disk 
└─VG1-LV1                253:2    0    5G  0 lvm  
sr0                       11:0    1 17.1G  0 rom  
[root@node1 ~]# lvextend -L +1G /dev/VG1/LV1    #扩容,这里不写"+"意思为扩大到多少,但不能比本身小Size of logical volume VG1/LV1 changed from 5.00 GiB (1280 extents) to 6.00 GiB (1536 extents).Logical volume VG1/LV1 successfully resized.[root@node1 ~]# lsblk
NAME                     MAJ:MIN RM  SIZE RO TYPE MOUNTPOINTS
sda                        8:0    0   20G  0 disk 
├─sda1                     8:1    0    1G  0 part /boot
└─sda2                     8:2    0   19G  0 part ├─openeuler_node1-root 253:0    0   17G  0 lvm  /└─openeuler_node1-swap 253:1    0    2G  0 lvm  [SWAP]
sdb                        8:16   0   20G  0 disk 
└─VG1-LV1                253:2    0    6G  0 lvm  
sr0                       11:0    1 17.1G  0 rom 
[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]: ySize of logical volume VG1/LV1 changed from 6.00 GiB (1536 extents) to 4.00 GiB (1024 extents).Logical volume VG1/LV1 successfully resized.[root@node1 ~]# lsblk
NAME                     MAJ:MIN RM  SIZE RO TYPE MOUNTPOINTS
sda                        8:0    0   20G  0 disk 
├─sda1                     8:1    0    1G  0 part /boot
└─sda2                     8:2    0   19G  0 part ├─openeuler_node1-root 253:0    0   17G  0 lvm  /└─openeuler_node1-swap 253:1    0    2G  0 lvm  [SWAP]
sdb                        8:16   0   20G  0 disk 
└─VG1-LV1                253:2    0    4G  0 lvm  
sr0                       11:0    1 17.1G  0 rom  

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

#通过iotop命令检测
[root@node1 ~]# yum install iotop -y #默认没有这个命令
[root@node1 ~]# iotop -o  #动态检测系统示正在进行I/O操作的进程或线程默认从大到小排序iotop命令详细参数
iotop是一个实时系统监视工具,它可以显示系统中哪些进程在I/O操作上消耗最多的CPU时间。以下是一些常见的选项:• -h, --help: 显示帮助信息并退出。• -o, --only: 只显示正在进行I/O操作的进程或线程。• -b, --batch: 非交互模式。• -n NUM, --iter=NUM: 结束前的迭代次数(无限)。• -d SEC, --delay=SEC: 迭代之间的延迟(1秒)。• -p PID, --pid=PID: 要监视的进程或线程的ID(所有)。• -u USER, --user=USER: 要监视的用户(所有)。• -P, --processes: 只显示进程,不显示所有线程。• -a, --accumulated: 显示累计I/O而不是带宽。• -k, --kilobytes: 使用千字节而不是人类友好的单位。• -t, --time: 在每行添加时间戳(隐含--batch)。• -q, --quiet: 抑制一些头部行(隐含--batch)。

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

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

相关文章

现货黄金做日内交易和波段交易有何差异?

在现货黄金投资中,日内交易和波段交易都是投资者常用的手段。但投资者其实搞不懂两者有何区别,有时甚至不清楚自己做的是日内交易还是波段交易,下面我们就来讨论一下这两种交易方法的异同。 两者的区别主要是在持仓的时间上。日内交易顾名思义…

Python中的`__all__`魔法函数使用详解

概要 Python是一门灵活而强大的编程语言,提供了各种机制来控制模块的导入和访问。其中,__all__魔法函数是一种用于限制模块导入的机制,可以明确指定哪些变量、函数或类可以被导入。本文将深入探讨__all__的作用、用法以及示例,以…

C++:类和对象(中)

类的6个默认成员函数 如果一个类中什么成员都没有,简称为空类。 空类中真的什么都没有吗?并不是,任何类在什么都不写时,编译器会自动生成以下6个默认成员函数。默认成员函数:用户没有显式实现,编译器会生成…

ES文档索引、查询、分片、文档评分和分析器技术原理

技术原理 索引文档 索引文档分为单个文档和多个文档。 单个文档 新建单个文档所需要的步骤顺序: 客户端向 Node 1 发送新建、索引或者删除请求。节点使用文档的 _id 确定文档属于分片 0 。请求会被转发到 Node 3,因为分片 0 的主分片目前被分配在 …

【AI绘画】stablediffusion图生图教程!!

**手把手教你入门绘图超强的AI绘画,用户只需要输入一段图片的文字描述,即可生成精美的绘画。给大家带来了全新保姆级教程资料包 (文末可获取) ** 目录 一、图生图 1.图生图原理 2.图生图三个步骤 ①图生图基本三步法 ②提示…

深度学习如何入门,如何快速理解深度学习

深度学习是机器学习的一个分支,它使用深度神经网络来模拟人脑的工作方式,通过学习样本数据的内在规律和表示层次,让机器能够具有类似于人类的分析学习能力。深度学习的最终目标是实现人工智能的普及化,使机器能够识别、处理、分析…

Leetcode—2859. 计算 K 置位下标对应元素的和【简单】

2023每日刷题&#xff08;九十一&#xff09; Leetcode—2859. 计算 K 置位下标对应元素的和 内置函数__builtin_popcount方法实现代码 class Solution { public:int sumIndicesWithKSetBits(vector<int>& nums, int k) {int n nums.size();int ans 0;for(int i …

mac电脑安卓文件传输工具:Android File Transfer直装版

Android File Transfer&#xff08;AFT&#xff09;是一款用于在Mac操作系统上与Android设备之间传输文件。它允许用户将照片、音乐、视频和其他文件从他们的Android手机或平板电脑传输到Mac电脑&#xff0c;以及将文件从Mac上传到Android设备。 下载地址&#xff1a;https://w…

怎样编写高性能C/C++程序

本文主要讨论高性能编程&#xff0c;而且是那种“极致性能需求”。按照本人的粗浅认识&#xff0c;应该已经覆盖了绝大多数技术要点&#xff0c;但缺点是不够详细&#xff08;篇幅有限&#xff09;。本文共分为4个部分&#xff1a;总体论述、高性能网络编程、高性能数值计算、常…

【揭秘】ForkJoinTask全面解析

内容摘要 ForkJoinTask的显著优点在于其高效的并行处理能力&#xff0c;它能够将复杂任务拆分成多个子任务&#xff0c;并利用多核处理器同时执行&#xff0c;从而显著提升计算性能&#xff0c;此外&#xff0c;ForkJoinTask还提供了简洁的API和强大的任务管理机制&#xff0c…

常规的管理系统除了适用该有的范儿一定要有!气质上不能输

hello宝子们...我们是艾斯视觉擅长ui设计和前端开发10年经验&#xff01;希望我的分享能帮助到您&#xff01;如需帮助可以评论关注私信我们一起探讨&#xff01;致敬感谢感恩&#xff01; 常规的管理系统除了适用该有的范儿一定要有!气质上不能输 在现今快速发展的商业环境中…

Error:Resource not found: openni2_launch

报错信息 Resource not found: openni2_launch ROS path [0]/opt/ros/melodic/share/ros ROS path [1]/media/zhangdama/F4ACC8D7C3CD6C91/kobuki_gazebo_imitation/mount/vln-pano2real-ros/src ROS path [2]/opt/ros/melodic/share The traceback for the exception was wri…

Android音量调节修改

前言 今日公司&#xff0c;安卓设备的音量显示不正常&#xff0c;让我来修复这个bug&#xff0c;现在已修复&#xff0c;做个博客&#xff0c;记录一下&#xff0c;以后碰到类似一下子就好解决。 Android音量调节相关 路径 frameworks\base\services\core\java\com\android…

NIO-Selector详解

NIO-Selector详解 Selector概述 Selector选择器&#xff0c;也可以称为多路复⽤器。它是Java NIO的核⼼组件之⼀&#xff0c;⽤于检查⼀个或多个Channel的状态是否处于可读、可写、可连接、可接收等。通过⼀个Selector选择器管理多个Channel&#xff0c;可以实现⼀个线程管理…

Spring boot + Azure OpenAI 服务 1.使用 GPT-35-Turbo

Azure OpenAI 服务使用 GPT-35-Turbo 先决条件 maven 注意 beta.6 版本 <dependency><groupId>com.azure</groupId><artifactId>azure-ai-openai</artifactId><version>1.0.0-beta.6</version></dependency>问答工具类 pack…

C++的关键字,命名空间,缺省参数,函数重载以及原理

文章目录 前言一、C关键字(C98)二、命名空间命名空间介绍命名空间的使用 三、C输入【cin】& 输出【cout】四、缺省参数缺省参数概念缺省参数分类缺省参数的使用小结一下 五、函数重载函数重载介绍函数重载类型 六、C支持函数重载的原理--名字修饰(name Mangling)【重点】 前…

二分算法模版

二分算法模版 实数二分算法模版实数二分模版题 整数二分算法模版向上取整二分模版向下取整二分模版二分模版的注意点二分模版中check函数的实现能够使用二分的条件 二分主要分两类&#xff0c; 一类是对实数进行二分&#xff0c;一类是对整数进行二分 对整数二分又分成2种&…

python-自动化篇-运维-监控-简单实例-道出如何使⽤Python进⾏系统监控?

如何使⽤Python进⾏系统监控&#xff1f; 使⽤Python进⾏系统监控涉及以下⼀般步骤&#xff1a; 选择监控指标&#xff1a; ⾸先&#xff0c;确定希望监控的系统指标&#xff0c;这可以包括 CPU 利⽤率、内存使⽤情况、磁盘空间、⽹络流量、服务可⽤性等。选择监控⼯具&#x…

react如果创建了类似于 Icketang元素,那么该如何实现 Icketang类

要实现一个类似于 "Icketang" 的类&#xff0c;首先需要考虑该类的属性和方法。根据上下文&#xff0c;可以假设 "Icketang" 是一个卡片或票据类&#xff0c;可以包含以下属性和方法&#xff1a; 属性&#xff1a; card_number&#xff1a;卡片编号amoun…

Java实现加权平均分计算程序WeightedAverageCalculator

成绩加权平均分计算程序&#xff0c;带UI界面和输入保存功能。 因为本人对成绩的加权均分有所关注&#xff0c;但学校的教务系统查分时往往又不显示个人的加权均分&#xff0c;加之每次手动敲计算器计算很麻烦就花了点时间写了一个加权均分计算程序自用&#xff0c;顺便开源。…