Linux运维工程师面试题第五套

简介:

本次试题全部都是写脚本,一共有十道题,说是面试,其实都是基础的东西,enjoy it~

1、编写个shell脚本将当前目录下大于10K的文件转移到/tmp目录下。

1
2
3
4
5
6
7
8
9
10
11
#Author:Name
#E-mail:E-mail Address
#Description:Move some files        #写程序的时候加上姓名,联系方式和描述是一个好习惯。
#!/bin/bash
ls  -l| awk  '$5>10240 {print $9}'  >name.txt     #先把大于10K的文件名都保存到name.txt的文件
for  filename  in  $( cat  name.txt)     #for循环,注意$()
     do
         mv  $filename  /tmp
         echo  $filename  "is ok."
     done
ls  /tmp


【评析】第一套里的第十题跟这道题是一样的,bash是可以使用find语句的,那样写比较省事。而且要注意像答案那么写的话,文件夹也是有可能被选中,但是不用担心,文件夹不会被mv,会提示“略过目录”。

2、编写shell脚本获取本机的网络地址。

1
2
3
4
5
6
7
8
#Auther:ChrisChan
#E-mail:chenx1242@163.com
#Description:Check IP address and Netmask
#!/bin/bash
IP=$(  ifconfig  eth0| grep  inet| head  -1| cut  -d : -f 2| sed  's/Bcast//g'  )
echo  "这台机器的IP地址是" $IP
NETMASK=$(  ifconfig  eth0| grep  inet| head  -1| cut  -d : -f 3| sed  's/Mask//g'  )
echo  "这台机器的网关是" $NETMASK


【评析】一条命令,用三个方法去不断的缩小范围,直到最后确定那几个数字。

3、用Shell编程,判断一文件是不是字符设备文件,如果是将其拷贝到 /dev 目录下。

1
2
3
4
5
6
7
8
9
10
11
12
#Auther:ChrisChan
#E-mail:chenx1242@163.com
#Description:Jurde a file is a c-file or not
#!/bin/bash
read  -t 10 -p  "请输入一个文件名:"  Fname
if  [ -c $Fname ]
     then
     cp  $Fname  /dev
    else
        echo  "WRONG!"
        exit  88
fi


【评析】给一个变量赋值有两种方法,一种就是上面列出的read -p的形式,还有一种是这样的

wKiom1dAazrg_AzcAAA7WN0jQ3A251.png

4.请为下列shell程序添加注释,并说明程序的功能和调用方法:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
#!/bin/sh    #这是一个bash语言
# /etc/rc.d/rc.httpd    #启动Apache
# Start/stop/restart the Apache web server.    #启动/停止/重启Apache
# To make Apache start automatically at boot, make thisfile executable: chmod 755 /etc/rc.d/rc.httpd    #若要apache开机自启动,就要让rc.httpd这个文件有755
case  "$1"  in
  
'start' )   #若第一个变量是start
  
/usr/sbin/apachectl  start ;;     #apache就启动
  
'stop' )     #若第一个变量是stop
  
/usr/sbin/apachectl  stop ;;     #apache就停止
  
'restart' )     #若第一个变量是restart
  
/usr/sbin/apachectl  restart ;;     #apache就重启
  
*)     #若第一个变量不是上面的任意一个
  
echo  "usage $0 start|stop|restart"  ;;     #提示操作人员
  
esac     #结构结束,这是case的反写


功能就是控制apache程序的,调用方法就是启动/停止/关闭

5、设计一个shell程序,添加一个新组为class1,然后添加属于这个组的30个用户,用户名的形式为stdxx,其中xx从01到30。

开头略

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
! #/bin/sh    #解释器是sh
groupadd class1     #建立一个群组
i=1
while  [ i - le  30 ]
     do 
     if  [i - le  9 ]
     then
         Username=std0$i
     else
         Username=std$i
     fi
     Useradd $Username
     mkdir  /home/ $Username
     chown  -R $Username  /home/ $Username     #-R是改变用户和群组
     chgrp  -R class1  /home/ $Username
     let  i =i+1     #我喜欢用这个叠加,简单粗暴还好用但是要注意格式。
done


6、编写shell程序,实现自动删除50个账号的功能。账号名为stud1至stud50。

#开头省略

1
2
3
4
5
6
7
#!/bin/bash
i=1
while  [ $i - le  50 ]
     do
     userdel -r stud$i     #这里使用stud${i}
     let  i=i+1
     done



7.某系统管理员需每天做一定的重复工作,请按照下列要求,编制一个解决方案:

(1)在下午4 :50删除/abc目录下的全部子目录和全部文件;

(2)从早8:00~下午6:00每小时读取/xyz目录下x1文件中每行第一个域的全部数据加入到/backup目录下的bak01.txt文件内;

(3)每逢星期一下午5:50将/data目录下的所有目录和文件归档并压缩为文件:backup.tar.gz;

(4)在下午5:55将IDE接口的CD-ROM卸载(假设:CD-ROM的设备名为hdc);

(5)在早晨8:00前开机后启动。

#crontab -e先

(1)50 16 * * * rm -rf /abc/*

(2)1 8-18/1 * * * cut /xyz/x1 -f 1 >>/backup/bak01.txt

(3)50 17 * * 1 tar zcvf backup.tar.gz /data

(4)55 17 * * * umount /dev/hdc

(5)这个需要在root用户登录的前提下操作, 而且这题出的有问题,不知道要启动什么。

【评析】每个用户都会生成一个自己的crontab文件,这个文件一般位于/var/spool/cron,这个文件里的计划任务是专门针对于root这个用户的,如果使用#crontab -r那就会删除掉当前用户的crontab的文件。


8、有一普通用户想在每周日凌晨零点零分定期备份/user/backup到/tmp目录下,该用户应如何做?

crontab -e

0 0 * * 0 cp /user/backup /tmp

【评析】五个*里最后一个*的取值范围是0~7,其中0和7都是代表星期天,可以写成sun,/etc/crontab的文档原话是这么写的:day of week (0 - 6) (Sunday=0 or 7) OR sun,mon,tue,wed,thu,fri,sat


9、设计一个Shell程序,在/userdata目录下建立50个目录,即user1~user50,并设置每个目录的权限,其中其他用户的权限为:读;文件所有者的权限为:读、写、执行;文件所有者所在组的权限为:读、执行。

1
2
3
4
5
6
7
8
9
#开头略
#!/bin/bash 
i=1
while  [ i - le  50 ]
     do
         mkdir  -p -m 764  /userdata/user $i
         echo "第" $i "个目录已经生成,权限是764."
         let  i=i+1
     done

【评析】mkdir -p是递归生成目录,再加上-m 就是在生成目录的时候直接赋予权限。

如果要是使用mkdir下生成一个树形的目录,mkdir -vp BBB/{CCC/,EEE/{FFF/,GGG/},KKK/,III/{OOO/,PPP/}},这样生成了一个树形文件。

如果只是在/userdata/下生成user1~user50的文件,其实不用那么费劲,#cd /userdata/ && touch user{1..50}即可。


10、设计一个shell程序,在每月第一天备份并压缩/etc目录的所有内容,存放在/root/bak目录里,且文件名为如下形式yymmdd_etc,yy为年,mm为月,dd为日。Shell程序fileback存放在/usr/bin目录下。

做一个脚本先

#cd /usr/bin

#vim fileback.sh

1
2
3
4
5
#!/bin/bash
YY=$(  date  + %y )
MM=$(  date  + %m )
DD=$(  date  + %d )     #注意格式,注意格式~
tar  -zcvf  /root/bak/ $YY$MM$DD  /etc/ *     #将/etc目录下的所有文件都打包压缩成etc.bak文件

保存之后,添加计划任务

#crontab -e

1 1 1 * * sh /usr/bin/fileback.sh



 本文转自 苏幕遮618 51CTO博客,原文链接:http://blog.51cto.com/chenx1242/1743037


相关文章
|
7天前
|
图形学 开发者 存储
超越基础教程:深度拆解Unity地形编辑器的每一个隐藏角落,让你的游戏世界既浩瀚无垠又细节满满——从新手到高手的全面技巧升级秘籍
【8月更文挑战第31天】Unity地形编辑器是游戏开发中的重要工具,可快速创建复杂多变的游戏环境。本文通过比较不同地形编辑技术,详细介绍如何利用其功能构建广阔且精细的游戏世界,并提供具体示例代码,展示从基础地形绘制到植被与纹理添加的全过程。通过学习这些技巧,开发者能显著提升游戏画面质量和玩家体验。
34 3
|
29天前
|
存储 运维 监控
运维.Linux下执行定时任务(中:Cron的常用替代方案)
本文是关于Linux下执行定时任务系列的第二部分,主要探讨除了Cron之外的常用替代方案。介绍了Systemd Timers、Anacron及at命令三种工具,它们分别适用于不同场景下的定时任务需求。文章详细分析了每种工具的特点、工作原理、基本使用方法及其高级功能,并对比了它们各自的优缺点,帮助读者根据实际情况选择最适合的定时任务解决方案。此外,还提供了指向具体实例和进一步阅读材料的链接。
57 4
运维.Linux下执行定时任务(中:Cron的常用替代方案)
|
2月前
|
存储 运维 Linux
|
1月前
|
Linux 数据安全/隐私保护 Perl
解锁Linux高手秘籍:文件操作+命令解析大揭秘,面试场上让你光芒万丈,技术实力惊艳四座!
【8月更文挑战第5天】Linux作为服务器与嵌入式系统的基石,其文件管理和命令行操作是技术人员必备技能。本文从文件操作和基础命令两大方面,深入浅出地解析Linux核心要义,助你在面试中脱颖而出。首先探索文件系统的树状结构及操作,包括使用`ls -la`浏览文件详情、`touch`创建文件、`rm -r`慎删目录、`cp`与`mv`复制移动文件、以及利用`find`搜索文件。接着掌握命令行技巧,如用`cat`、`more`和`less`查看文件内容;借助`grep`、`sed`与`awk`处理文本;运用`ps`、`top`和`kill`管理进程;并通过`chmod`和`chown`管理文件权限。
60 8
|
8天前
|
运维 监控 Linux
深入理解Linux系统运维:命令行与脚本的奥秘
【8月更文挑战第30天】在Linux的世界里,命令行是运维人员的灵魂之窗。掌握命令行,就像握住了一把钥匙,能开启系统管理的宝藏箱。本文将带你走进Linux的命令行世界,通过实际代码示例,解锁那些高效管理和维护系统的秘籍。你将学到不仅仅是命令本身,更是如何将这些命令编织成强大的脚本,让日常的运维工作变得游刃有余。准备好跟随我的步伐,一起深入探索Linux命令行与脚本的奥秘吧!
|
1月前
|
运维 Linux Shell
从Linux小白到大神的逆袭之路:解锁高级自测秘籍,让你的Linux技能瞬间燃爆,成为运维界的超级英雄!
【8月更文挑战第5天】Linux作为开源世界的基石,凭借其强大功能与高度可定制性,吸引着众多技术爱好者与专业人士。对于希望精进Linux系统管理的学习者来说,“Linux高级自测学习”是一次技术深潜之旅,也是对个人极限的挑战。本学习路径首先回顾基础操作,并进阶至LVM磁盘管理、系统性能优化、复杂网络配置与安全、自动化运维及容器化技术等领域。通过实践与探索,你将逐步解锁Linux潜力,成为高手。技术之路永无止境,保持好奇与求知心至关重要。
43 4
|
1月前
|
监控 Linux 数据安全/隐私保护
Linux大神养成记:掌握这些逆天命令与快捷方式,面试秒变MVP,让你的技术实力燃爆全场!
【8月更文挑战第5天】Linux作为开源领域的核心,熟悉其基本命令对系统管理员和技术人员至关重要。本文精选了面试中常考的Linux命令,覆盖文件管理、文本处理、进程监控及权限调整等关键领域,并介绍了提高效率的快捷方式。通过掌握如`ls -l`、`grep "error"`、`top`、`chmod 755`等实用命令,以及Tab自动补全、历史命令浏览等功能,不仅能显著提升日常工作效能,还能在求职面试时展现出扎实的技术功底。
44 4
|
1月前
|
运维 Kubernetes 关系型数据库
云计算运维工程师面试技巧
【8月更文挑战第6天】
130 1
|
2月前
|
弹性计算 运维 Linux
运维工程师必备的摸鱼神器:阿里云智能助手OS Copilot
OS Copilot 概述与体验评测摘要 阿里云的OS Copilot是一款基于大模型的智能操作系统助手,作为高级运维工程师,体验者发现它在系统诊断和性能优化上尤其有用,简化了如重置ECS密码和安全组配置等任务,提升了工作效率。 OS Copilot的易用性和安全性得到肯定,操作手册详细且交互性强,减少了用户在不同页面间切换的需要。在辅助编程方面,它能帮助非专业开发者编写和理解代码,对运维工作中的开发技能补充有很大帮助。与GitHub Copilot等产品相比,OS Copilot的独特之处在于结合了Linux操作的支持。
171 3
运维工程师必备的摸鱼神器:阿里云智能助手OS Copilot
|
15天前
|
运维 监控 搜索推荐
在Linux中,运维人员与运营人员工作职责分别是什么?
在Linux中,运维人员与运营人员工作职责分别是什么?
下一篇
DDNS