1.从a.log 文件中提取包含―WARNING‖或‖FATAL‖,同时不包含―IGNOR‖的行,然后, 提取以―:‖分割的第五个字段?
2.添加一个新组为class01,然后,添加属于这个组的30 个用户,用户名的形式为stdXX, 其中,XX 从01 到30?
3.在每个月的第一天备份并压缩/etc 目录下的所有内容,存放在/root/backup 目录里, 且文件名为如下形式yymmdd_etc,yy 为年,mm为月,dd 为日。shell 程序fileback 存放在/usr/bin 目录下?
4.用shell 编程,判断一文件是不是字符设备文件,如果是将其拷贝到/dev 目录下? 参考答案:
#!/bin/bash directory=/dev for file in anaconda-ks.cfg install.log install.log.syslog do if [ -f $file ] then cp $file $directory/$file.bak echo " HI, $LOGNAME $file is backed up already in $directory !!" fi done
5.某系统管理员需要每天做一定的重复工作,编制一个解决方案:
(1).从下午4:50 删除/abc 目录下的全部子目录和全部文件;
(2).从早上8:00~下午6:00 每小时读取/xyz 目录下x1 文件中每行第一个域的全部数 据加入到/backup 目录下的back01.txt 文件内;
(3).每逢周一下午5:50 将/data 目录下的所有目录和文件归档并压缩为文件
backup.tar.gz;
(4).在下午5:55 将IDE 接口的CD-ROM 缷载(假设CD-ROM 的设备名为hdc);
(5).在早上8:00 前开机后启动。
6、下面给出了一个SHELL程序,试对其行后有#(n)形式的语句进行解释,并说明程序完成的功能。
#!/bin/bash #(1) dir=$1 #(2) if [ -d $dir ] #(3) then cd $dir #(4) for file in * do if [-f $file ] #(5) then cat $file #(6) echo ?end of file $file? fi done else echo ?bad directory name $dir? fi
答:#(1)使用/bin/bash解释脚本
#(2)将位置变量1赋值给变量dir
#(3)如果dir所指为目录
#(4)将当前目录改为dir
#(5)如果循环变量file所指是普通文件
#(6)显示文件file的内容 6分
程序功能:若命令行参数是一个合法目录则显示该目录下所有普通文件的内容,否则显示错误的目录名信息。2分
7、在Linux系统中运行下面程序,最多可产生多少个进程?画出进程家族树。
main() { fork(); fork(); fork();
}
答:最多可以产生7个进程 3分
家族树如右 3分
8、试编写一个SHELL程序,该程序能接收用户从键盘输入的100个整数,然后求出其总和、最大值及最小值。
答:
#!/bin/sh read max min=$max sum=$max i=1 while [$i –lt 100] do read x sum=`expr $sum + $x` if [ $max –lt $x ] then max=$x fi if [ $ x –lt $min ] then min=$x fi i=`expr $i + 1` done echo “sum = $sum ; max = $max min = $min “
转载请注明:21运维 » shell学习笔记第六天(shell脚本练习巩固,练为主)