Shell编程答案.docx
- 文档编号:11046412
- 上传时间:2023-02-24
- 格式:DOCX
- 页数:7
- 大小:15.94KB
Shell编程答案.docx
《Shell编程答案.docx》由会员分享,可在线阅读,更多相关《Shell编程答案.docx(7页珍藏版)》请在冰豆网上搜索。
Shell编程答案
Shell编程
1.用Shell编程,判断一文件是不是字符设备文件,如果是将其拷贝到/dev目录下。
参考程序:
#!
/bin/sh
FILENAME=
echo“Inputfilename:
”
readFILENAME
if[-c"$FILENAME"]
then
cp$FILENAME/dev
fi
2.请下列shell程序加注释,并说明程序的功能和调用方法:
#!
/bin/sh
#!
/bin/sh
#
#/etc/
#
#Start/stop/restarttheApachewebserver.
#
#TomakeApachestartautomaticallyatboot,makethis
#fileexecutable:
chmod755/etc/
#
case“$1″in
‘start’)
/usr/sbin/apachectlstart;;
‘stop’)
/usr/sbin/apachectlstop;;
‘restart’)
/usr/sbin/apachectlrestart;;
*)
echo“usage$0start|stop|restart”;;
esac
参考答案:
(1)程序注释
#!
/bin/sh定义实用的shell
#
#/etc/注释行,凡是以星号开始的行均为注释行。
#
#Start/stop/restarttheApachewebserver.
#
#TomakeApachestartautomaticallyatboot,makethis
#fileexecutable:
chmod755/etc/
#
case“$1″in#case结构开始,判断“位置参数”决定执行的操作。
本程序携带一个“位置参数”,即$1
‘start’)#若位置参数为start
/usr/sbin/apachectlstart;;#启动httpd进程
‘stop’)#若位置参数为stop
/usr/sbin/apachectlstop;;#关闭httpd进程
‘restart’)#若位置参数为stop
/usr/sbin/apachectlrestart;;#重新启动httpd进程
*)#若位置参数不是start、stop或restart时
echo“usage$0start|stop|restart”;;#显示命令提示信息:
程序的调用方法
esac#case结构结束
(2)程序的功能是启动,停止或重新启动httpd进程
(3)程序的调用方式有三种:
启动,停止和重新启动。
3.设计一个shell程序,添加一个新组为class1,然后添加属于这个组的30个用户,用户名的形式为stdxx,其中xx从01到30。
参考答案:
#!
/bin/sh
i=1
groupaddclass1
while[$i-le30]
do
if[$i-le9];then
USERNAME=stu0${i}
else
USERNAME=stu${i}
fi
useradd$USERNAME
mkdir/home/$USERNAME
chown-R$USERNAME/home/$USERNAME
chgrp-Rclass1/home/$USERNAME
i=$(($i1))
done
4.编写shell程序,实现自动删除50个账号的功能。
账号名为stud1至stud50。
参考程序:
#!
/bin/sh
i=1
while[$i-le50]
do
userdel-rstud${i}
i=$(($i1))
done
5.某系统管理员需每天做一定的重复工作,请按照下列要求,编制一个解决方案:
(1)在下午4:
50删除/abc目录下的全部子目录和全部文件;
(2)从早8:
00~下午6:
00每小时读取/xyz目录下x1文件中每行第一个域的全部数据加入到/backup目录下的文件内;
(3)每逢星期一下午5:
50将/data目录下的所有目录和文件归档并压缩为文件:
;
(4)在下午5:
55将IDE接口的CD-ROM卸载(假设:
CD-ROM的设备名为hdc);
(5)在早晨8:
00前开机后启动。
参考答案:
解决方案:
(1)用vi创建编辑一个名为prgx的crontab文件;
(2)prgx文件的内容:
5016***rm-r/abc/*
08-18/1***cut-f1/xyz/x1>;>;/backup/
5017***tarzcvf/data
5517***umount/dev/hdc
(3)由超级用户登录,用crontab执行prgx文件中的内容:
root@xxx:
#crontabprgx;在每日早晨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|grepbak`
if[-z"$DIRNAME"];then
mkdir/root/bak
cd/root/bak
fi
YY=`date%y`
MM=`date%m`
DD=`date%d`
BACKETC=$YY$MM$
tarzcvf$BACKETC/etc
echo“filebackfinished!
”
(2)编写任务定时器:
echo“001**/bin/sh/usr/bin/fileback”>;/root/etcbakcron
crontab/root/etcbakcron
或使用crontab-e命令添加定时任务:
01***/bin/sh/usr/bin/fileback
7.有一普通用户想在每周日凌晨零点零分定期备份/user/backup到/tmp目录下,该用户应如何做?
参考答案:
(1)第一种方法:
用户应使用crontab–e命令创建crontab文件。
格式如下:
00**suncp–r/user/backup/tmp
(2)第二种方法:
用户先在自己目录下新建文件file,文件内容如下:
0**suncp–r/user/backup/tmp
然后执行crontabfile使生效。
8.设计一个Shell程序,在/userdata目录下建立50个目录,即user1~user50,并设置每个目录的权限,其中其他用户的权限为:
读;文件所有者的权限为:
读、写、执行;文件所有者所在组的权限为:
读、执行。
参考答案:
建立程序Pro16如下:
#!
/bin/sh
i=1
while[i-le50]
do
if[-d/userdata];then
mkdir-p/userdata/user$i
chmod754/userdata/user$i
echo“user$i”
let“i=i1″(或i=$(($i+1))
else
mkdir/userdata
mkdir-p/userdata/user$i
chmod754/userdata/user$i
echo“user$i”
let“i=i1″(或i=$(($i+1))
fi
done
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Shell 编程 答案