Shell编程面试题


Posted in 面试题 onMay 30, 2012
1.用Shell编程,判断一文件是不是字符设备文件,如果是将其拷贝到 /dev 目录下。
参考程序:
#!/bin/sh
FILENAME=
echo “Input file name:”
read FILENAME
if [ -c "$FILENAME" ]
then
cp $FILENAME /dev
fi
2.请下列shell程序加注释,并说明程序的功能和调用方法:#!/bin/sh
#!/bin/sh
#
# /etc/rc.d/rc.httpd
#
# Start/stop/restart the Apache web server.
#
# To make Apache start automatically at boot, make this
# file executable: chmod 755 /etc/rc.d/rc.httpd
#
case “$1″ in
‘start’)
/usr/sbin/apachectl start ;;
‘stop’)
/usr/sbin/apachectl stop ;;
‘restart’)
/usr/sbin/apachectl restart ;;
*)
echo “usage $0 start|stop|restart” ;;
esac
参考答案:
(1)程序注释
#!/bin/sh 定义实用的shell
#
# /etc/rc.d/rc.httpd 注释行,凡是以星号开始的行均为注释行。
#
# Start/stop/restart the Apache web server.
#
# To make Apache start automatically at boot, make this

# file executable: chmod 755 /etc/rc.d/rc.httpd
#
case “$1″ in #case结构开始,判断“位置参数”决定执行的操作。本程序携带一个“位置参数”,即$1
‘start’) #若位置参数为start
/usr/sbin/apachectl start ;; #启动httpd进程
‘stop’) #若位置参数为stop
/usr/sbin/apachectl stop ;; #关闭httpd进程
‘restart’) #若位置参数为stop
/usr/sbin/apachectl restart ;; #重新启动httpd进程
*) #若位置参数不是start、stop或restart时
echo “usage $0 start|stop|restart” ;; #显示命令提示信息:程序的调用方法
esac #case结构结束
(2)程序的功能是启动,停止或重新启动httpd进程
(3)程序的调用方式有三种:启动,停止和重新启动。
3.设计一个shell程序,添加一个新组为class1,然后添加属于这个组的30个用户,用户名的形式为stdxx,其中xx从01到30。
参考答案:
#!/bin/sh
i=1
groupadd class1
while [ $i -le 30 ]
do
if [ $i -le 9 ] ;then
USERNAME=stu0${i}
else
USERNAME=stu${i}
fi
useradd $USERNAME
mkdir /home/$USERNAME
chown -R $USERNAME /home/$USERNAME
chgrp -R class1 /home/$USERNAME
i=$(($i 1))
done

4.编写shell程序,实现自动删除50个账号的功能。账号名为stud1至stud50。
参考程序:
#!/bin/sh
i=1
while [ $i -le 50 ]
do
userdel -r stud${i}
i=$(($i 1 ))
done
5.某系统管理员需每天做一定的重复工作,请按照下列要求,编制一个解决方案:
(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前开机后启动。
参考答案:
解决方案:
(1)用vi创建编辑一个名为prgx的crontab文件;
(2)prgx文件的内容:
50 16 * * * rm -r /abc/*
0 8-18/1 * * * cut -f1 /xyz/x1 >;>; /backup/bak01.txt
50 17 * * * tar zcvf backup.tar.gz /data
55 17 * * * umount /dev/hdc
(3)由超级用户登录,用crontab执行 prgx文件中的内容:
root@xxx:#crontab prgx;在每日早晨8:00之前开机后即可自动启动crontab。
6.设计一个shell程序,在每月第一天备份并压缩/etc目录的所有内容,存放在/root/bak目录里,且文件名为如下形式yymmdd_etc,yy为年,mm为月,dd为日。Shell程序fileback存放在/usr/bin目录下。
参考答案:
(1)编写shell程序fileback:
#!/bin/sh
DIRNAME=`ls /root | grep bak`
if [ -z "$DIRNAME" ] ; then
mkdir /root/bak
cd /root/bak
fi
YY=`date %y`
MM=`date %m`
DD=`date %d`
BACKETC=$YY$MM$DD_etc.tar.gz
tar zcvf $BACKETC /etc
echo “fileback finished!”
(2)编写任务定时器:
echo “0 0 1 * * /bin/sh /usr/bin/fileback” >; /root/etcbakcron
crontab /root/etcbakcron
或使用crontab -e 命令添加定时任务:
0 1 * * * /bin/sh /usr/bin/fileback
7.有一普通用户想在每周日凌晨零点零分定期备份/user/backup到/tmp目录下,该用户应如何做?
参考答案:(1)第一种方法:
用户应使用crontab –e 命令创建crontab文件。格式如下:
0 0 * * sun cp –r /user/backup /tmp
(2)第二种方法:
用户先在自己目录下新建文件file,文件内容如下:
0 * * sun cp –r /user/backup /tmp
然后执行 crontab file 使生效。
8.设计一个Shell程序,在/userdata目录下建立50个目录,即user1~user50,并设置每个目录的权限,其中其他用户的权限为:读;文件所有者的权限为:读、写、执行;文件所有者所在组的权限为:读、执行。
参考答案: 建立程序 Pro16如下:
#!/bin/sh
i=1
while [ i -le 50 ]
do
if [ -d /userdata ];then
mkdir -p /userdata/user$i
chmod 754 /userdata/user$i
echo “user$i”
let “i = i 1″ (或i=$(($i+1))
else
mkdir /userdata
mkdir -p /userdata/user$i
chmod 754 /userdata/user$i
echo “user$i”
let “i = i 1″ (或i=$(($i+1))
fi
done

Tags in this post...

面试题 相关文章推荐
求网格中的黑点分布
Nov 06 面试题
威盛公司软件C++工程师笔试题面试题
Jul 16 面试题
C++是不是类型安全的
Feb 18 面试题
Sql面试题
Mar 20 面试题
存储过程和sql语句的优缺点
Jul 02 面试题
使用索引有什么好处
Jul 27 面试题
网络安全方面的面试题
Nov 04 面试题
Linux管理员面试题 Linux admin interview questions
Nov 01 面试题
几个判断型的面试题
Jul 03 面试题
编程输出如下图形
Nov 24 面试题
Java程序员面试题
Sep 27 面试题
Java中采用什么结构来捕获、处理异常?各子句的顺序、功能如何
Oct 07 面试题
如何进行Linux分区优化
Feb 12 #面试题
一些Unix笔试题和面试题
Jan 22 #面试题
某/etc/fstab文件中的某行如下: /dev/had5 /mnt/dosdata msdos defaults,usrquota 1 2 请解释其含义
Sep 18 #面试题
在对linux系统分区进行格式化时需要对磁盘簇(或i节点密度)的大小进行选择,请说明选择的原则
Nov 24 #面试题
linux下进程间通信的方式
Dec 23 #面试题
linux系统都有哪些运行级别
Apr 15 #面试题
什么是符号链接,什么是硬链接?符号链接与硬链接的区别是什么?
Jan 19 #面试题
You might like
Win9x/ME下Apache+PHP安装配置
2006/10/09 PHP
使用php判断网页是否gzip压缩
2013/06/25 PHP
使用PHP curl模拟浏览器抓取网站信息
2013/10/28 PHP
神盾加密解密教程(二)PHP 神盾解密
2014/06/08 PHP
Linux系统下PHP-FPM的安装和配置教程
2015/08/17 PHP
PHP实现上传图片到 zimg 服务器
2016/10/19 PHP
ExtJS下grid的一些属性说明
2009/12/13 Javascript
javascript学习笔记(四) Number 数字类型
2012/06/19 Javascript
js 判断上传文件大小及格式代码
2013/11/13 Javascript
采用call方式实现js继承
2014/05/20 Javascript
JavaScript简单表格编辑功能实现方法
2015/04/16 Javascript
ubuntu下安装nodejs以及升级的办法
2015/05/08 NodeJs
js控制文本框输入的字符类型方法汇总
2015/06/19 Javascript
JS实现控制文本框的内容
2016/07/10 Javascript
Vue.js组件tree实现无限级树形菜单
2016/12/02 Javascript
vue2.0开发实践总结之疑难篇
2016/12/07 Javascript
javascript常用经典算法详解
2017/01/11 Javascript
浅谈jquery fullpage 插件增加头部和版权的方法
2018/03/20 jQuery
vue初始化动画加载的实例
2018/09/01 Javascript
JS二级菜单不同实现方法分析【4种方法】
2018/12/21 Javascript
使用webpack搭建vue项目实现脚手架功能
2019/03/15 Javascript
如何提升vue.js中大型数据的性能
2019/06/21 Javascript
在layui中对table中的数据进行判断(0、1)转换为提示信息的方法
2019/09/28 Javascript
2019最新21个MySQL高频面试题介绍
2020/02/06 Javascript
[33:33]完美世界DOTA2联赛PWL S2 FTD.C vs SZ 第二场 11.27
2020/11/30 DOTA
python将人民币转换大写的脚本代码
2013/02/10 Python
python的schedule定时任务模块二次封装方法
2019/02/19 Python
Python图片的横坐标汉字实例
2019/12/04 Python
Python实现图片查找轮廓、多边形拟合、最小外接矩形代码
2020/07/14 Python
欧洲顶级的童装奢侈品购物网站:Bambini Fashion(面向全球)
2018/04/24 全球购物
世界上第一个创建了罩杯系统的美国内衣品牌:Maidenform
2019/03/23 全球购物
Big Green Smile法国:领先的英国有机和天然产品在线商店
2021/01/02 全球购物
英国时尚首饰品牌:Missoma
2020/06/29 全球购物
先进个人获奖感言
2014/01/24 职场文书
机关单位工作失职检讨书
2014/11/20 职场文书
SSM VUE Axios详解
2021/10/05 Vue.js