2023年8月3日发(作者:)
Linux期末考试题整理综合
1.假设你的用户账号是zheng,现在你登录进入linux系统,查看当前登录到系统中的用户,查看当前系统中运行的进程,然后再退出系统。
答:login:zheng
Password:口令
$who
$ps
$Ctrl+D
2.在当前目录/home/zheng下新建一个目录back,将当前目录改为back,在back下新建2个长度为0的文件test1、test2,然后把test2移到其父目录中并改名为file12。
答:$ mkdirback
$ cd back
$ touch test1 test2
$ mv test2 ../file2
3.现在需要统计当前目录/home/zheng下普通文件的数目并显示结果,如何实现?
$find –type f | wc–l
4.假设你是系统管理员,需要增加一个新的用户账号zheng,为新用户设置初始密码,锁定用户账号uly,并删除用户账号chang。
答:.#useraddzheng
#passwdzheng
#passwd–l uly
#userdelchang
5.若给需要将/home/zheng目录下的所有文件打包压缩成/tmp/,你准备怎么做?当需要从压缩包中恢复时,又该如何处理?
答:#tar –zcvf /tmp/ /home/zheng #tar -zxvf /tmp/
五、下面给出了一个SHELL程序,试对其行后有#(n)形式的语句进行解释,并说明程序完成的功能。(8分)
#!/bin/sh
DIRNAME=`ls /root | grep bak` #(1)
if [ -z "$DIRNAME" ] ; then #(2)
mkdir /root/bak ; cd /root/bak #(3)
fi
YY=`date +%y` ; MM=`date +%m` ; DD=`date +%d` #(4)
BACKETC=$YY$MM$DD_ #(5)
tar zcvf $BACKETC /etc #(6)
echo "fileback finished!"
答:#(1)获取/root中名称包含bak的文件或目录
#(2)判断1结果为空
#(3)创建目录/root/bak并进入该目录
#(4)获取当前时间的年月日
#(5)按照年(2位)月(2位)日(2位)_etc方式构造压缩文件名
#(6)压缩etc目录并保存在/root/bak中6分
程序功能:若/root/bak不存在则创建之,然后将/etc按日期打包保存于该目录中。2分六、填写标记代码行的意义,给出功能描述和前6行程序输出。(6分)
#include
#include
intntimes=0;
main(intargc, char *argv[]) {
intpid,ppid;
intp_action( ),c_action( );
signal(SIGUSR1 , p_action); #(1)
switch(pid=fork( )) { #(2) case -1: perror("fork failed?);
exit(1);
case 0: signal(SIGUSR1,c_action);
ppid=getppid( );
for ( ; ; ) ;
default: {
for( ; ; ) {
pause;
sleep(1);
kill(pid,SIGUSR1); #(3)
}
}
}
}
p_action( ) {
printf("parent caught signal #%dn",++ntimes);
}
c_action( ) {
printf("child caught signal #%dn",++ntimes/*, ++ltimes*/);
intppid;
ppid = getppid(); #(4)
kill(ppid, SIGUSR1);
sleep(3);
}
答:#(1)在父进程中为信号SIGUSR1绑定函数p_action
#(2)创建子进程
#(3)向子进程发送信号SIGUSR1
#(4)获取父进程的PID4分
父进程无线循环向子进程发送信号,子进程收到信号后向父进程发送相同信号,父子进程之间各自记录全局变量的变化,结果如: child caught signal #1
parent caught signal #1
child caught signal #2
parent caught signal #2
child caught signal #3
parent caught signal #32分
五、下面给出了一个SHELL程序,试对其行后有#(n)形式的语句进行解释,并说明程序完成的功能。(8分)
#!/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分
三、写出完成以下功能的命令(每题2分,共10分)
1.在其父目录不存在时先创建父目录的命令。mkdir–p
2.要使得名为fido的文件具有如下权限-r-xr-x—x的命令。chmod551 fido
3.在/root文件夹下查找后缀为.cpp的文件。find /root –name
*.cpp
1. 若下达rmdir命令来删除某个已存在的目录,但无法成功,请说明可能的原因。
参考答案:
此目录可能不存在,
或者目录不为空,或者目录中有隐含文件存在,
或者目录被设置了权限,
解决方法就是先修改权限,在使用rm –r 命令删除。
三、写出完成以下功能的命令(每题2分,共10分)
1.在/home目录下查找文件名为。Profile的文件,找到后删除
2.将文件解压缩
4.创建一个用户,用户名为user02,所属私有组和标准组为stuff,用户家目录为/home/user2,用户登陆shell为/bin/bash。
5.赋予所有用户读和写文件的权限:
参考答案:
/home –name .profile -exec rm{};
-xzvf
/doc/,eradd –g stuff –G
stuff -d /home/user2 -s /bin/bash user02
a+rw
4.执行命令ls –l 时,某行显示如下:(8分)-rw-r--r--
1chrischris 207 jul 20 11:58 mydata
(1)用户chris 对该文件具有什么权限?(2)执行命令useradd Tom后,用户Tom对该文件具有什么权限?
(3)如何使任何用户都可以读写执行该文件?(4)如何把该文件属主改为用户root ?
1 读写
2 只读
3 chmod 777mydata
4 chown rootmydata
阅读Makefile文件:
all :
SRC = f1.c f2.c f3.c
TGT = $(SRC:.c=.o)
%.o : %.c
cc -c $?
: $(TGT)
cc -shared -o $@ $(TGT)
clean:
rm -f $(TGT)
回答以下问题:
(1) 此Makefile文件的主要功能是什么?
(2) 此Makefile文件包含多少个规则?它们分别是什么?
(3) 使用此Makefile文件可以生成目标文件f2.o吗?为什么?
参考答案:
(1)生成共享库文件;
(2) 4个。分别是:all,%.o,和clean。
(3) 可以。因为规则%.o : %.c已经定义了*.o与*.c的关系和生成方法。
四、命令书写题
1. 在用户ray个人目录下新建目录software,
mkdir /home/ray/software
2. 并搜索路径/etc下所有以h开头的文件及目录,拷贝到software中
cp /etc/h* /home/ray/software
3.请把目录software下所有内容建立压缩的tar包,并命名为 cd ~//进入用户家目录
tar czvf software
4.对于给定的文件file,统计其中所有包含字符串”WHU”的行数的一条命令是grep WHU file | wc–l(wc:word count,统计字符数,-l:统计的是行数)
6.在当前目录/home/zheng下新建一个目录back,将当前目录改为back,在back下新建2个长度为0的文件test1、test2,然后把test2移到其父目录中并改名为file12。
$ mkdirback
$ cd back
$ touch test1 test2
$ mv test2 ../file2
7.Find命令常见用法。
现在需要统计当前目录/home/zheng下普通文件的数目并显示结果,如何实现?
$find –type f | wc–l
在/home目录中查找所有的用户目录的命令是?
$find /home –type d
解析:find命令参数-type b/d/c/p/l/f #查是块设备、目录、字符设备、管道、符号链接、普通文件。
8.打包命令tar常见用法。
将/home/zheng/tmp/?
#tar –czvf /tmp/ /home/zheng
当需要从压缩包中恢复?
#tar -xzvf/tmp/
将/home/ixdba目录做归档压缩,压缩后生成2文件,目录下的所有文件打包压缩成并将此文件保存到/home 目录下,实现此任务的tar命令格式?
tar -cjvf /home/ 2 /home/ixdba
解析:tar –czvf表示打包后调用gzip创建压缩文件。-f表示指定压缩后的文件名称。-v表示产生一系列所备份的文件列表。
-j表示调用bzip2命令来压缩打包后的文件。gunzip–r表示递归解压,对应gzip 命令。
10.要使得名为fido的文件具有如下权限–r-xr-x--x的命令。chmod551 fido
11.在/root文件夹下查找后缀为.cpp的文件。find /root –name
*.cpp
解析:find命令参数-name filename :#查找名为filename的文件
13.将光盘/dev/hdc卸载的命令。umount /dev/hdc
14. 在/home目录下查找文件名为Profile的文件,找到后删除。
find /home –name .profile -exec rm{};
解析:命令格式为find path -option [ -print] [-exec -ok
command] {};#-print将查找到的文件输出到标准输出#-exec
command {};表示对符合条件的文件执行所给的Linux命令。
23.|管道命令常见用法?
功能:将一个命令的输出作为下一个命令的输入
示例:
利用管道技术统计当前目录下有多少个文件,该命令是?
ls ./|wc–w
显示出当前目录下以m开头,第二位任意,后缀为c的文件的个数?
ls | grep m?.c | wc–l
解析:wc(Word Count)命令是Linux系统中的命令的功能为统计指定文件中的字节数、字数、行数,并将统计结果显示输出。
具体参数:
-c 统计字节数。 -l 统计行数。
-m 统计字符数。这个标志不能与-c 标志一起使用。
-w 统计字数。一个字被定义为由空白、跳格或换行字符分隔的字符串。
-L 打印最长行的长度。
2023年8月3日发(作者:)
Linux期末考试题整理综合
1.假设你的用户账号是zheng,现在你登录进入linux系统,查看当前登录到系统中的用户,查看当前系统中运行的进程,然后再退出系统。
答:login:zheng
Password:口令
$who
$ps
$Ctrl+D
2.在当前目录/home/zheng下新建一个目录back,将当前目录改为back,在back下新建2个长度为0的文件test1、test2,然后把test2移到其父目录中并改名为file12。
答:$ mkdirback
$ cd back
$ touch test1 test2
$ mv test2 ../file2
3.现在需要统计当前目录/home/zheng下普通文件的数目并显示结果,如何实现?
$find –type f | wc–l
4.假设你是系统管理员,需要增加一个新的用户账号zheng,为新用户设置初始密码,锁定用户账号uly,并删除用户账号chang。
答:.#useraddzheng
#passwdzheng
#passwd–l uly
#userdelchang
5.若给需要将/home/zheng目录下的所有文件打包压缩成/tmp/,你准备怎么做?当需要从压缩包中恢复时,又该如何处理?
答:#tar –zcvf /tmp/ /home/zheng #tar -zxvf /tmp/
五、下面给出了一个SHELL程序,试对其行后有#(n)形式的语句进行解释,并说明程序完成的功能。(8分)
#!/bin/sh
DIRNAME=`ls /root | grep bak` #(1)
if [ -z "$DIRNAME" ] ; then #(2)
mkdir /root/bak ; cd /root/bak #(3)
fi
YY=`date +%y` ; MM=`date +%m` ; DD=`date +%d` #(4)
BACKETC=$YY$MM$DD_ #(5)
tar zcvf $BACKETC /etc #(6)
echo "fileback finished!"
答:#(1)获取/root中名称包含bak的文件或目录
#(2)判断1结果为空
#(3)创建目录/root/bak并进入该目录
#(4)获取当前时间的年月日
#(5)按照年(2位)月(2位)日(2位)_etc方式构造压缩文件名
#(6)压缩etc目录并保存在/root/bak中6分
程序功能:若/root/bak不存在则创建之,然后将/etc按日期打包保存于该目录中。2分六、填写标记代码行的意义,给出功能描述和前6行程序输出。(6分)
#include
#include
intntimes=0;
main(intargc, char *argv[]) {
intpid,ppid;
intp_action( ),c_action( );
signal(SIGUSR1 , p_action); #(1)
switch(pid=fork( )) { #(2) case -1: perror("fork failed?);
exit(1);
case 0: signal(SIGUSR1,c_action);
ppid=getppid( );
for ( ; ; ) ;
default: {
for( ; ; ) {
pause;
sleep(1);
kill(pid,SIGUSR1); #(3)
}
}
}
}
p_action( ) {
printf("parent caught signal #%dn",++ntimes);
}
c_action( ) {
printf("child caught signal #%dn",++ntimes/*, ++ltimes*/);
intppid;
ppid = getppid(); #(4)
kill(ppid, SIGUSR1);
sleep(3);
}
答:#(1)在父进程中为信号SIGUSR1绑定函数p_action
#(2)创建子进程
#(3)向子进程发送信号SIGUSR1
#(4)获取父进程的PID4分
父进程无线循环向子进程发送信号,子进程收到信号后向父进程发送相同信号,父子进程之间各自记录全局变量的变化,结果如: child caught signal #1
parent caught signal #1
child caught signal #2
parent caught signal #2
child caught signal #3
parent caught signal #32分
五、下面给出了一个SHELL程序,试对其行后有#(n)形式的语句进行解释,并说明程序完成的功能。(8分)
#!/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分
三、写出完成以下功能的命令(每题2分,共10分)
1.在其父目录不存在时先创建父目录的命令。mkdir–p
2.要使得名为fido的文件具有如下权限-r-xr-x—x的命令。chmod551 fido
3.在/root文件夹下查找后缀为.cpp的文件。find /root –name
*.cpp
1. 若下达rmdir命令来删除某个已存在的目录,但无法成功,请说明可能的原因。
参考答案:
此目录可能不存在,
或者目录不为空,或者目录中有隐含文件存在,
或者目录被设置了权限,
解决方法就是先修改权限,在使用rm –r 命令删除。
三、写出完成以下功能的命令(每题2分,共10分)
1.在/home目录下查找文件名为。Profile的文件,找到后删除
2.将文件解压缩
4.创建一个用户,用户名为user02,所属私有组和标准组为stuff,用户家目录为/home/user2,用户登陆shell为/bin/bash。
5.赋予所有用户读和写文件的权限:
参考答案:
/home –name .profile -exec rm{};
-xzvf
/doc/,eradd –g stuff –G
stuff -d /home/user2 -s /bin/bash user02
a+rw
4.执行命令ls –l 时,某行显示如下:(8分)-rw-r--r--
1chrischris 207 jul 20 11:58 mydata
(1)用户chris 对该文件具有什么权限?(2)执行命令useradd Tom后,用户Tom对该文件具有什么权限?
(3)如何使任何用户都可以读写执行该文件?(4)如何把该文件属主改为用户root ?
1 读写
2 只读
3 chmod 777mydata
4 chown rootmydata
阅读Makefile文件:
all :
SRC = f1.c f2.c f3.c
TGT = $(SRC:.c=.o)
%.o : %.c
cc -c $?
: $(TGT)
cc -shared -o $@ $(TGT)
clean:
rm -f $(TGT)
回答以下问题:
(1) 此Makefile文件的主要功能是什么?
(2) 此Makefile文件包含多少个规则?它们分别是什么?
(3) 使用此Makefile文件可以生成目标文件f2.o吗?为什么?
参考答案:
(1)生成共享库文件;
(2) 4个。分别是:all,%.o,和clean。
(3) 可以。因为规则%.o : %.c已经定义了*.o与*.c的关系和生成方法。
四、命令书写题
1. 在用户ray个人目录下新建目录software,
mkdir /home/ray/software
2. 并搜索路径/etc下所有以h开头的文件及目录,拷贝到software中
cp /etc/h* /home/ray/software
3.请把目录software下所有内容建立压缩的tar包,并命名为 cd ~//进入用户家目录
tar czvf software
4.对于给定的文件file,统计其中所有包含字符串”WHU”的行数的一条命令是grep WHU file | wc–l(wc:word count,统计字符数,-l:统计的是行数)
6.在当前目录/home/zheng下新建一个目录back,将当前目录改为back,在back下新建2个长度为0的文件test1、test2,然后把test2移到其父目录中并改名为file12。
$ mkdirback
$ cd back
$ touch test1 test2
$ mv test2 ../file2
7.Find命令常见用法。
现在需要统计当前目录/home/zheng下普通文件的数目并显示结果,如何实现?
$find –type f | wc–l
在/home目录中查找所有的用户目录的命令是?
$find /home –type d
解析:find命令参数-type b/d/c/p/l/f #查是块设备、目录、字符设备、管道、符号链接、普通文件。
8.打包命令tar常见用法。
将/home/zheng/tmp/?
#tar –czvf /tmp/ /home/zheng
当需要从压缩包中恢复?
#tar -xzvf/tmp/
将/home/ixdba目录做归档压缩,压缩后生成2文件,目录下的所有文件打包压缩成并将此文件保存到/home 目录下,实现此任务的tar命令格式?
tar -cjvf /home/ 2 /home/ixdba
解析:tar –czvf表示打包后调用gzip创建压缩文件。-f表示指定压缩后的文件名称。-v表示产生一系列所备份的文件列表。
-j表示调用bzip2命令来压缩打包后的文件。gunzip–r表示递归解压,对应gzip 命令。
10.要使得名为fido的文件具有如下权限–r-xr-x--x的命令。chmod551 fido
11.在/root文件夹下查找后缀为.cpp的文件。find /root –name
*.cpp
解析:find命令参数-name filename :#查找名为filename的文件
13.将光盘/dev/hdc卸载的命令。umount /dev/hdc
14. 在/home目录下查找文件名为Profile的文件,找到后删除。
find /home –name .profile -exec rm{};
解析:命令格式为find path -option [ -print] [-exec -ok
command] {};#-print将查找到的文件输出到标准输出#-exec
command {};表示对符合条件的文件执行所给的Linux命令。
23.|管道命令常见用法?
功能:将一个命令的输出作为下一个命令的输入
示例:
利用管道技术统计当前目录下有多少个文件,该命令是?
ls ./|wc–w
显示出当前目录下以m开头,第二位任意,后缀为c的文件的个数?
ls | grep m?.c | wc–l
解析:wc(Word Count)命令是Linux系统中的命令的功能为统计指定文件中的字节数、字数、行数,并将统计结果显示输出。
具体参数:
-c 统计字节数。 -l 统计行数。
-m 统计字符数。这个标志不能与-c 标志一起使用。
-w 统计字数。一个字被定义为由空白、跳格或换行字符分隔的字符串。
-L 打印最长行的长度。
发布评论