试题一
一、操作题
1.假设你的用户账号是zheng,现在你登录进入linux系统,查看当前登录到系统中的用户,查看当前系统中运行的进程,然后再退出系统。
2.在当前目录/home/zheng下新建一个目录back,将当前目录改为back,在back下新建2个长度为0的文件test1、test2,然后把test2移到其父目录中并改名为file12。
3.现在需要统计当前目录/home/zheng下普通文件的数目并显示结果,如何实现?
4.假设你是系统管理员,需要增加一个新的用户账号zheng,为新用户设置初始密码,锁定用户账号uly,并删除用户账号chang。
5.若给需要将/home/zheng目录下的所有文件打包压缩成/tmp/zheng.tar.gz,你准备怎么做?当需要从压缩包中恢复时,又该如何处理? 二、简答和shell编程题
1.下面给出了一个SHELL程序,试对其行后有#(n)形式的语句进行解释,并说明程序完成的功能。 #!/bin/sh
DIRNAME=`ls /root | grep bak` if [ -z \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 \
2.填写标记代码行的意义,给出功能描述和前6行程序输出。 #include
#(4)
#(5)
#(1) #(2) #(3)
#(6)
1
#include
main(int argc, char *argv[]) { int pid,ppid;
int p_action( ), c_action( ); signal(SIGUSR1 , p_action); switch(pid=fork( )) {
case -1: perror(\
exit(1);
case 0: signal(SIGUSR1,c_action); ppid=getppid( );
for ( ; ; ) ;
default: { for( ; ; ) { pause; sleep(1);
kill(pid,SIGUSR1);
}
}
}
}
p_action( ) {
printf(\}
#(1)#(2)
#(3)2
c_action( ) {
printf(\ int ppid;
ppid = getppid(); kill(ppid, SIGUSR1); sleep(3); }
三、综合编程题
1.设计一个shell程序,添加一个新组为class1,然后添加属于这个组的30个用户,用户名的形式为stdxx,其中xx从01到30。
2.下面给出了一个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
#(4)
3