三.简答题:
1. 简述linux的几个运行级别及其相应的含义。 0-关机模式,
1-单用户模式,单用户只有系统管理员可以登录。
2-多用户模式,但是不支持文件共享,例如不支持NFS服务.这种模式不常用。 3-完全的多用户模式,支持NFS服务.最常用的用户模式,默认登录到系统的字符界面。 4-保留模式。
5-完全多用户模式,默认登录到X-window系统,也就是登录到linux图形界面。 6-重启模式,也就是执行关闭所有运行的进程,然后重新启动系统。 2.什么是链接符号链接与硬链接的区别是什么
链接是指用一个i节点对应多个文件名。硬链接是把文件的i节点号指向该i节点,
且链接计数器值加1。删除链接文件时计数器值减1,当其值为0时,i节点被释放。
符号链接是只有文件名的一个链接文件,并不指向一个真正的i节点。 在删除符号链接文件时与硬链接文件有区别。
3.使用进程调度启动,指定30分钟后(或在2008年12月28日晚上20点30分)将/home/stu目录里的文件备份并压缩为并放到/home/temp目录里(当前/home/temp目录并不存在)。
(1) 编辑一个文件,如:atfile,内容如下: mkdir /home/temp
tar –czvf /home/temp/ /home/stu/* (2) 执行at命令
at –f atfile now +30 minutes 解答2: (1) 执行at命令 at now +30 minutes
(2) 回车出现at>提示符后,继续输入要做的命令 at> mkdir /home/temp
at> tar –czvf /home/temp/ /home/stu/* at>
4.Shell程序中,对用户变量赋值有哪些方式简要说明每种赋值方式的使用方法。
(1) 等号赋值
1)在等号前后均不能有空格。
2)当需要将一个包含空格的字符串赋给用户变量时,应用单引号将该字符串括起来。
(2) 键盘赋值
由read命令来实现的。用法为:read 用户变量名
当shell程序执行到该行时,将等待用户从键盘输入,
当用户按下回车键时shell把你输入的内容赋给用户变量。 (3) 命令替换赋值 用法为:用户变量=`命令`
该语句将首先执行反向单引号之间的命令,
然后将其执行后输出的内容赋给该用户变量,在这种赋值方式中,
等号前后同样不能有空格,而且必须用反向单引号(即重音号)把命令括起来。
四、综合应用:
1.编写1个弹出式菜单的shell程序并实现其简单的菜单功能: ******************************************************* * MENU * * * * *
* *
*******************************************************
即用户按下数字1,则提示用户输入源和目的文件名后执行复制;输入数字2,则提示用户输入要更名的文件或目录后执行更名操作;输入数字3,则提示用户输入要删除的文件并执行删除操作;输入数字4,则提示用户输入要查找的文件并执行查找操作;输入数字5,则退出该菜单shell程序的执行。 #! /bin/sh - clear
while [ 0 ]; do
echo \echo \echo \echo \echo \echo \echo
echo -n \read choice echo
case $choice in
1)
echo -n \read src echo
echo -n \read des
cp -arf $src $des if $; then
echo \
else
echo \
fi;;
2)
echo -n \read src echo
echo -n \read des mv $src $des if $; then
echo \
else
echo \
fi;;
3)
echo -n \read src rm -rf $src if $; then
echo \
else
echo \
fi;;
4)
echo -n \read src
find $HOME -name $src;;
5) exit;;
*) echo \
esac done
2. 编写shell程序,实现自动删除50个用户账号的功能。账号名为stud1至stud50 #!/bin/sh i=1
while [ $i -le 50 ] do
userdel -r stud${i} i=$(($i+1 )) done echo \ else echo \ fi;;
3.用shell编写小九九乘法表程序,程序执行结果如下:
#! /bin/sh – for i in 1 2 3 4 5 6 7 8 9 do for j in 1 2 3 4 5 6 7 8 9 do if ( test $j -le $i ) then echo -ne `expr $i \\* $j` \ else echo break fi done done