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 打印最长行的长度。