这几天登录了下实验楼,看到有个楼赛,然后就参加了,这里记录一下。
虽然一直用Linux,但是基本没专门去上过之类的课,最早还是智能信息课的实验机房里搭Hadoop用到的,然后还挺喜欢的,以至于后来卸了Win把笔记本装了Ubuntu,用的开源软件,也没有盗版的困扰了。
呐,就是这样说的,当然没打算拿奖,里面高手估计多得是,所以也是求个体验。
楼赛一共有三题,虽然比较简单,不过比较实用,太难的屠龙之术也就没啥必要丢出来以论轩轾了。
第一题 备份日志文件
描述如下:
这个就是写个每天自动备份打包完成任务的脚本,不过里面不让写脚本,这个里面虽然说了,但是还是花了很多时间才放弃写脚本。
时间输出
首先是要获得当前时间,以确定两点开始备份。通常是使用date
命令。
首先查看一下date的参数:
后面比较多就不贴了,主要是获取年月日,好给打包文件命名。
能获取出来这一步基本就OK了。
自动化任务
使用cron命令实现自动化。
首先编辑crontab文件,在其中加入执行时间和执行命令,即备份并打包文件。
比较简单,就直接贴代码了:
然后启动一下cron服务:
或者
第二题 批量创建删除用户和组
描述如下:
批量创建删除用户和组,按照里面的要求,大概是创建一个脚本,可以实现创建和删除用户的功能,输入为四个参数,对于已经创建的用户显示星号。
确保输入正确
输入正确包括
- 参数数目正确
|
|
- 学生数量正确
|
|
功能参数正确
即必须是del
或者add
参数,即删除或者添加用户组。可以最后加个else
处理这个部分。学生名称前缀正确
即学生名称前缀只允许包含小写字母。
|
|
随机数的生成
一共要生成六位随机数,虽说linux自带RANDOM,但是都是小于等于五位数的,且不能确保多少位,所以使用urandom
来获取随机数。
|
|
大致思路是这样,然后贴代码了。
第三题 获取系统信息
描述如下:
获取系统信息,包括系统各部分硬件信息和软件信息。
CPU信息
CPU信息可以通过查看Linux的cpuinfo获取,不过并没有直接给出CPU数量,虽然可以直接看出。
这里通过把processor的数量加1得到
内存信息
内存信息可以通过很多方式查看,比如top,还有就是Linux的meminfo,还有就是free命令。但是要求自定义单位,所以这里用free。
磁盘信息
磁盘信息一般使用df
命令,这里要获取根目录的磁盘大小,根目录一般在输出中第一行,所以需要获取其位置:
不过这个只是碰运气,有的不在第一行,就会出错了,但是grep直接过滤掉根目录是没用的,这里需要精确匹配根目录/
,所以需要用到grep -w
系统信息
获取系统位数,直接:
进程数
查看当前所有进程可以用ps
命令实现,但是没有计数的功能,也不必为此单独创建一个命令,可以结合wc
命令实现该功能:
软件数目
和上面一样,可以通过dpkg
命令查询所有安装的软件,再结合wc
命令实现计数:
网卡信息
查询IP很简单,一句ifconfig
可以解决,但是输出格式不满足要求,需要删掉输出信息中多余的字符,可以用awk
命令。
最后这题全部代码如下: