《Linux系统管理与应用》课程知识点整理+书后习题全文解答(Linux知识点大纲)

Posted RonaldDong

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了《Linux系统管理与应用》课程知识点整理+书后习题全文解答(Linux知识点大纲)相关的知识,希望对你有一定的参考价值。

目录

第一章:Linux操作系统概述

知识点整理部分

课后习题与参考答案

第二章:Linux系统的环境搭建

知识点整理部分

课后习题与参考答案

第三章:Linux操作基础

知识点整理部分

课后习题与参考答案

第四章:Linux文件系统

知识点整理部分

课后习题与参考答案

第五章:Linux系统管理

知识点整理部分

课后习题与参考答案

第六章:vi编辑器的使用

知识点整理部分

课后习题与参考答案

第七章:Shell程序设计

知识点整理部分

课后习题与参考答案

第八章:Linux的网络服务

知识点整理部分

课后习题与参考答案

第九章:Linux系统下的数据库应用

知识点整理部分

课后习题与参考答案

参考文献


第一章:Linux操作系统概述

知识点整理部分

1.软件类别(按提供方式和是否盈利):商业软件(收费)、共享软件(可试用或部分功能可用)、自由软件(怎么用都行)、免费软件(可以广告盈利,包括流氓软件,不流氓的就是绿色软件)

2.自由软件意味着用户有下列自由(自由软件定义):(1)开源、可以用于研究运行机制、可根据需要随意修改,(2)可重新分发拷贝,他人能共享软件,(3)改进程序,使他人受益而散发他的自由。(运行、拷贝、研究、改进的自由)

3.相关词语:(1)FSF:自由软件基金会;(2)GPL:通用公共许可协议:任何人都可以取得、修改、重新发布自由软件的源代码,且不得增加收费项目,衍生作品必须也遵守GPL协议;(3)GNU:自由的操作系统,其内容以GPL形式公布[1]

4.Linux内核版本:由三个数字组成:r.x.y

  r:目前发布的Kernel(内核)主版本;

  2.6版本以前:x:偶数是稳定版本,奇数是开发中的版本;y:错误修补次数;

  2.6版本以后:x:随着新版本发布而增加;y:错误修补次数,0为稳定版,其他为开发版。

5.Linux软件体系结构

(1)设备驱动程序层;(2)Linux内核;(3)系统调用接口;(4)语言函数库;(5)Linux Shell;(6)Linux应用程序

6.Linux发行版本:目前全球有200多个Linux发行版本,如:openSUSE、Ubuntu、Debian,同时国产优秀Linux有红旗、Deepin(商业、家庭版本现在叫UOS)、openEuler等。

7.android是基于Linux开发的系统。

8.Linux特点:开放性、多用户、多任务、良好的用户界面、设备独立性、提供了丰富的网络功能、可靠的系统安全性、良好的可移植性、兼容其他UNIX系统、支持多种文件系统[2]

课后习题与参考答案

1.什么是自由软件,什么是GPL、GNU?

答:自由软件意味着用户有下列自由:(1)开源、可以用于研究运行机制、可根据需要随意修改,(2)可重新分发拷贝,他人能共享软件,(3)改进程序,使他人受益而散发他的自由;(运行、拷贝、研究、改进的自由);

GPL:通用公共许可协议:任何人都可以取得、修改、重新发布自由软件的源代码,且不得增加收费项目,衍生作品必须也遵守GPL协议;

GNU:自由的操作系统,其内容以GPL形式公布。

2.Linux操作系统的内核版本有什么特点?

答:由三个数字组成:r.x.y

  r:目前发布的Kernel(内核)主版本;

  2.6版本以前:x:偶数是稳定版本,奇数是开发中的版本;y:错误修补次数;

  2.6版本以后:x:随着新版本发布而增加;y:错误修补次数,0为稳定版,其他为开发版。

3.简述Linux操作系统的组成及特点。

答:

组成:(1)设备驱动程序层;(2)Linux内核;(3)系统调用接口;(4)语言函数库;(5)Linux Shell;(6)Linux应用程序

特点:开放性、多用户、多任务、良好的用户界面、设备独立性、提供了丰富的网络功能、可靠的系统安全性、良好的可移植性、兼容其他UNIX系统、支持多种文件系统

4.常用的Linux操作系统有哪些版本?掌握在Internet上获取某一版本的Linux系统的途径及方法。

答:Linux有众多发行版,随意答,略;

获取可以到系统主页或镜像站下载并安装。


第二章:Linux系统的环境搭建

知识点整理部分

1.Linux发行版镜像可以从镜像站免费获取。

2.有下例镜像:

CentOS-7-X86_64-DVD-1804.ISO

 X86_64:安装系统为X86架构64位;

1804:版本号;

DVD:系统标准安装版,包含部分软件,不需要联网安装;此外还有Minimal(精简版,有最少的必要软件)、NetInstall(网络版,从网络安装和救援)、LiveKDE(使用K桌面环境[3])、LiveGNOME(使用GNOME桌面环境[4])、Everything(完整版,集成所有软件)。

3.硬件要求在官网公布,一般对于CPU、硬盘空间、内存进行要求。

4.镜像安装方式:虚拟系统安装(虚拟机)、光盘引导安装(把ISO刻录成光盘)、USB Disk安装(使用软件制作启动盘)、网络安装(安装网络版ISO)。

5.安装步骤:略。

6.挂载点(分区):/:根目录;/boot:引导分区(放内核);SWAP:交换分区(虚拟内存);/home:用户目录;/var:容易改变的系统文件。有关挂载点问题,请查阅参考文献[5]中invald s答主的答案。

7.硬盘分区是对一块硬盘进行操作的,可以分为:主分区(1-3个)、扩展分区(0-1个)、逻辑分区(无限制)。其级别主分区=拓展分区>逻辑分区;主分区和逻辑分区可以直接使用,拓展分区必须进一步划分若干逻辑分区才能使用。

8.Windows文件系统格式一般有FAT32和NTFS,Linux有ext3、ext4、xfs、NFS、vfat、swap;Windows不识别Linux文件系统,但Linux可以识别Windows的文件系统并直接使用其中文件。

9.Linux中,IDE接口硬盘称为/dev/hdX,这个X代表第几个接口的硬盘,第一个接口就是hda,第二个是hdb;SCSI接口硬盘称为/dev/sdN;他们硬盘的第几个分区就在X后加几,如/dev/hda1:第一个IDE接口的硬盘的第一个分区;SCSI、SATA、USB接口都叫/dev/sdX。

10.多重引导重装:还是安装相关的知识点,略。

11.VMware:过于简单,略。

12.Linux系统启动步骤:加载Bios-进入GRUB-加载Linux Kernel-执行init-运行/etc/rc、d/rc、sysinit-执行/etc/inittab-执行默认级别所有Script-执行/bin/login程序。详细过程请看本文使用教材的40页或参考文献[6]及中译转载版[7]

13.引导系统启动菜单程序GRUB,强大的启动引导程序,启动菜单即启动初始画面,默认进入引导界面,进入后有普通模式和救援模式(双系统还会有其他选项),5秒后进入默认选项。

14.可用图形界面或纯命令界面登录,启动模式切换:

切换为命令模式:

systemctl set-default multi-user.target

切换为图形模式:

systemctl set-default graphical.target

 15.文字登录模式:[用户名@计算机名~]用户级别提示符;

级别提示符:# ---超级用户;$ ---普通用户;~ ---用户宿主目录

16.模式切换:X-Window(图形界面)按Alt+Ctrl+Fn(n=1-6)进入字符终端,6个数字意味着可以开6个终端;Alt+Ctrl+F7返回X-Window;

字符界面输入startx或init 5进入X-Window;

X-Window终端输入init 3关闭图形界面进入纯字符界面。

17.注销logout或exit。

18.关闭系统涉及:多用户状态下告知其他在线用户在系统中的作业存盘、系统关闭在远程还是本地、为了维护还是升级;

关机命令shutdown仅root可用,格式:

shutdown [-krhfc] [-t secs] time [warning message]

-k:一个警告,告知其他用户要维护  -r:reboot重新启动系统  -h:halt关闭系统和电源

-f:跳过fsck(检查文件系统并尝试修复),此时会快速关机并重启

-c:另一个终端的root可以取消shutdown  -t secs:系统执行shutdown的延迟时间,单位分钟

time:具体时间  warning message:向每个在线用户以广播发送信息;

time用法:shutdown 加上“23:59”即23:59进入单用户维护;加上“+10”10分钟后进入单用户维护模式;加上“now”立即进入单用户维护模式;

shutdown -h now #立即关闭系统
shutdown -r now #立即重启系统

19.halt系统正常关机、reboot系统重新启动、poweroff关机后再关闭电源 

课后习题与参考答案

1.Linux系统的自定义分区要求有哪些?

/根目录和/boot引导分区必须建立,swap不用也可以运行,对于内存小的电脑还是必要的,但是书中说swap也是必须,不知道作者咋想的。。。

2.简述Linux系统启动过程。

加载BIOS-进入GRUB-加载Linux Kernel-执行init-运行/etc/rc、d/rc、sysinit-执行/etc/inittab-执行默认级别所有Script-执行/bin/login程序。

3.举例说明Windows和Linux系统共存的磁盘分区要求。

4.多用户情况下,如何保证其他在线用户的作业,而系统还能正常安全关机?

设置时间关机并发送warning message给其他用户

5678题均为操作练习,略。


第三章:Linux操作基础

知识点整理部分

注:本文使用教材的命令有时加中括号,表示该命令可以不加,本文沿用此方法。

1.Shell是Linux的外壳,为用户提供接口,是命令语言、命令解释程序及程序设计语言的统称。Linux的默认Shell是BUSH。

2.Linux与Shell关系:

3.查看BUSH版本:

bash -version

4.简单命令:

pwd   #查看当前路径

date   #查看当前系统时间

who   #显示当前所有登陆用户的用户名、终端名、登陆时间

cal    #显示日历(不带参数显示本月日历,加年份显示某年,“月份 年份”显示该年该月)

export LANG=zh_CN   #当前终端改为中文

uname #查看当前操作系统信息(什么都不带显示Linux,带-r显示发型版本号,带-m显示所用机器类型,-i显示所需硬件平台,-v显示操作系统版本)

wc     #统计给定文件行数、字数、字符数(用法:wc [-lw] [-c] 文件名,l统计行数、w统计字数、c统计字节数)

su      #切换用户(用法su [-] [用户名],“-”切换时带该用户环境变量,不写用户名默认切换到root)

clear   #清空屏幕

5.shell命令一般格式为:命令名称 [选项] [参数]

选项一般是一个字母,可以几个字母同时使用,如:

ls -la    #ls为列出该目录所有文件,加上-l可以在此基础上列出文件大小、修改日期等,-a包含隐藏文件

大多数命令可以接纳参数,如:

ls -l /tmp   #显示tmp目录下所有文件及信息

诸如cp(即copy)限制参数数目,cp参数至少两个

一个命令行可以输入多个命令,中间用“;”隔开。

6.在线帮助:man 命令名,如:

man who      #显示who命令的帮助

帮助一般包括:NAME:命令名称、SYNOPSIS:语法大纲、DESCRIPTION:描述说明、OPTIONS:选项

man中,空格键显示下一屏、回车键下一行、q退出。

7.一些命令有-help,显示自带帮助信息,也有些命令可以用info和whatis查询。

8.Shell的部分配置文件:/etc/profile:登陆最先检查的文件,存放环境变量,root才能更改,env命令可以查看;~/.bash_profile:bush环境配置文件,定义USERNAME\\BASHENV 和PATH,此处PATH包括用户自定义;~/.bashrc:定义终端设置、shell提示符;~/bash_history:记录用户使用的历史命令。

9.Shell自动补全:按Tab补全,有多个命令满足条件会报警,此时再按Tab会把满足条件的全部列出。

10.历史命令:上下箭头切换,也可以输入history查看所有历史命令,会自动编码,如果需要使用输入“!n”,n为编码的号码。

11.重定向:>把输入信息写入,>>把输入信息以追加方式写入

12.管道操作:“|”,可以把多个简单命令集合一起完成复杂功能。如:cal | wc | wc:对统计日历信息的信息进行统计(套娃)

13.进入GNOME:switchdesk GNOME

进入KDE:switchdesk KDE

课后习题与参考答案

1.Shell有哪些高级操作?

命令补全、查看历史命令、Shell重定向、管道操作

2.对一个命令不熟悉,有哪些方法可以获得帮助?

man在线帮助、-help、info、whatis

3456略


第四章:Linux文件系统

知识点整理部分

1.极度基础的知识本篇不再赘述

2.文件成分:索引节点+数据(索引节点是相应文件信息的记录,包括权限、创建者、大小等,标识符i,ls -i 路径 可查看路径下的文件节点号)

3.文件案名最长255字符,ASCII码的字符组成,命名习惯本篇不赘述

4.目录结构:所有分区都挂载到根目录“/”

5.常用目录作用:根目录(/);

/bin:包括Shell在内的重要Linux命令,不包含子目录,用户目录在/usr/bin;

/boot:系统的内核文件和引导装载程序文件;

/dev:配置文件和子目录,各种设备对应文件;

/etc:配置文件、子目录,管理员可使用,普通用户可读取大部分;

/home:各个用户主目录;

/lib:各种编程语言库;

/media:自动挂载点(手动是/mnt);

/opt:第三方应用;

/root:root用户主目录;

/usr:不经常变化的数据;

/proc:虚拟文件系统,储存内存映像;

/sbin:管理员和root的命令,/usr/sbin放应用,/usr/local/sbin放通用的root命令;

/tmp:临时文件(想起来笔者曾经把这个文件加锁,结果电脑直接卡炸);

/var:经常变化的内容(如日志、邮件);

/run:开机后产生的各项信息。

6.file命令查看文件类型,用法:

file 文件名[可在此处加多个文件]

7.“.”开头的文件是隐藏文件,目录文件也是这么标识的。

8.字符设备和块设备是特殊设备文件,对应不同驱动器[8]

9.一个文件命名多个名称成为链接,就是在不同路径下的相同文件(书里说的真玄乎半天才看懂)

10.使用ls -l输出目录时,每行第一个字符:-表示普通文件,d表示目录文件,c表示设备文件,b表示块设备文件,l表示链接文件。

11.ls -m按字母逆序或者最早优先顺序显示输出结果,-R递归显示指定目录各个子目录和文件,-i显示文件索引节点号。

12.cd移到主目录,cd..移到上一级,cd 路径 移到指定路径

13.cat查看文件信息,用法

cat [选项] 文件名

选项: -n从1开始对所有输出行编号,>写到新文件,cat 文件1 文件2 > 新文件名 合并文件。

14.more 文件名 分屏显示文件内容,回车下一行,空格下一层,Q退出

15.cp用于复制,用法:

cp [选项] 源文件或目录 目的文件或目录

 -f:如果目标名重复直接覆盖不提示,-p:目标文件保持原有生成日期和inode号,-r:包括子目录的套娃复制

16.mv命令是移动,用法同上。

17.rm删除文件,

rm [选项] 文件名

 -r:连带删除目录,-rf:删除时不经过确认

18.grep检索,

grep [选项] 字符串[文件]

 -I:忽略大小写差别,-n:标出行号,-v:过滤检索(如-v^#过滤#)

19.sort排序命令,

sort [选项] [文件列表]

-r反向排序,-o结果输出,-n按第一个字段数值排序,-k N每行以第N个字段关键字排序

20.find查找命令,略 

21.创建目录

mkdir [选项] [目录名]
mkdir Dir1 Dir2 #同时创建Dir1和Dir2两个目录
mkdir -p Dir1/Dir2 #递归生成Dir1和Dir2,Dir2作为Dir1子目录
mkdir -m 744 /usr/Dir3 #在这个路径下生成Dir3,744是权限,后面讲

22.更改文件所有者和所在组

chown [选项] [所有者] [:[组]] 文件列表

所有者和组都写希望更改成的组

23.权限按三种用户规定:文件属主、同组用户、其他用户

24.权限表示法:(1)三组九位字母:r:读、w:写、x:执行和查找、-:无权限

执行ls -l时会看到首字母后的三位九个字母,每三个分别代表一组

(2)三组九位二进制表示法:响应位置有权限表示为1,无权限为0,如rwx r-x r--表示为111 101 100

(3)三位八进制表示法:把上面的二进制转化成8进制(无空格)即可,上例可转为:753

25.权限修改:

(1)字母模式修改

chmod [选项] 模式[,模式] 文件名

u:属主,g:同组用户,o:其他用户,a:所有用户

+:添加权限 -:取消权限 =:赋予给定权限并取消其他所有权限

如:

chmod u + x,g + w,o-r f1

执行内容显而易见,不再赘述

(2)八进制数字修改权限,如:

chmod 644 f1

26.特殊权限[9]

setuid(suid):针对命令和二进制程序的,当普通用户执行某个命令的时候,可以拥有这个命令对应用户的权限,即让普通用户可以以root用户的角色执行程序或命令

setgid(sgid):希望一个目录被多个用户(同属一个组)共享,同一个组的用户可以处理

粘滞位(t):把一个文件夹的权限都打开,然后共享文件,像/tmp一样,但是生产环境一般不使用

27.掩码[10]

文件创建时的默认权限=0666-umask

目录创建时的默认权限=0777-umask

28.链接是把文件链接到另一个位置,避免多次复制

硬链接:不能从目录项分离开,不能用于创建目录链接、不同文件系统链接

软链接:符号链接,可以跨文件系统。删除软链接时不会删除源文件(很像Windows的快捷方式)

ln [选项] 源文件 [目标文件]

课后习题与参考答案

1.在你使用的Linux系统的根目录上有哪些目录,它们的作用是什么?

/bin:包括Shell在内的重要Linux命令,不包含子目录,用户目录在/usr/bin;

/boot:系统的内核文件和引导装载程序文件;

/dev:配置文件和子目录,各种设备对应文件;

/etc:配置文件、子目录,管理员可使用,普通用户可读取大部分;

/home:各个用户主目录;

/lib:各种编程语言库;

/media:自动挂载点(手动是/mnt);

/opt:第三方应用;

/root:root用户主目录;

/usr:不经常变化的数据;

2. 如何递归式地显示指定目录的各个子目录中的文件?

ls -R 指定目录

3. 如何把两个文件的内容合并成一个文件?

cat f2 >> f1  #把f2文件内容附加到f1后面
cat f1 > f3
cat f2 >> f3
#把f1和f2合并成f3

4. 文件的权限管理的意义?

Linux系统的文件权限管理方式,可以把任何文件或目录,针对不同的用户或用户组设置成不同的访问权限,如读、写、执行权限,这样极大地方便了多用户系统间的用户对不同文件或目录的访问权限。对用户的文件的安全性有非常重要的作用。

5. 如何统计当前系统中的在线人数?

who | wc -l  #显示在线用户,并统计行数

6. 把root目录下的所有文件(包含隐藏文件)按文件的大小进行排序。

ls -al /root | sort -n -r -k 5

7. 请给出下列命令的执行结果。
   (1)cd /     (2)cd ..     (3)cd ../..   (4)cd
(1)cd /           返回根目录
(2)cd ..          返回上一层目录
(3)cd ../..       返回上两层目录
(4)cd            返回用户宿主目录

8. 建立符号链接文件后,如果删除原文件会有什么样的结果?

建立符号链接文件后,如果删除原文件,符号链接文件不变,但是它指向的源文件已经没有了,所以该符号链接文件失效。

9. 在一个Linux系统中的多个用户间,实现文件共享的方法有哪些?试讨论它们的优缺点。

在一个Linux系统中的多个用户间,实现文件共享的方法有多种方式,如

链接法:设置要共享文件的链接文件,该方法简单、方便、访问快捷,是一个Linux系统中的多个用户间共享文件最简单有效的方法。

设置目录或文件的访问权限:该方法可以实现其他用户的访问,但访问路径比较麻烦,且权限设置也很不方便,且对文件的安全影响较大。

其他可以实现共享,但必须网络相通的前提下进行,并且还需要进行相关的配置,比较繁琐,如:

NFS:网络文件系统,用于Linux与Linux系统之间的文件共享
Samba:用于windows与Linux系统之间的共享
FTP:windows与Linux都可以,有图形化界面与命令行两种方式访问共享数据

10. 对某个文件在同一目录中分别建立硬链接和符号链接文件,然后运行1s -l命令。观察输出信息的第二列(链接数)以及第五列(文件尺寸),比较两种链接有什么不同。

硬连接:链接数+1,文件尺寸和源文件一样。
符号链接:链接数为1,文件尺寸和源文件相比非常小,该文件尺寸大小只是源文件路径字符数。

11. 已知文件f1,创建f1文件的硬链接f2,再创建f1的软链接f3,再删除源文件f1,问共享文件f2和f3是否失效?共享文件f2和f3的链接数是多少?

共享文件f2没有失效,f3失效,共享文件f2的链接数为删除f1之前的链接数减1,f2的链接数不变仍为1。


第五章:Linux系统管理

知识点整理部分

1./etc/passwd用于保存用户的账户信息,加密的密码放在/etc/shadow,组放在/etc/group,组口令、组管理员/rtc/gshadow。

2.添加新用户:

useradd [选项] 用户名

 -d 路径:设置,-e 日期:设置账号过期日期,格式YYYY-MM-DD,-g 组名:设定用户所在组组名,如果名称已存在是加入已有组,-s shell路径:设定用户登录的shell,默认是bash,-u uid:设定用户UID,必须唯一且>1000,-D 用户名:显示用户所使用的默认值

3.usermod修改已有用户账户属性:

usermod [选项] 用户名

  -l 新用户名:改变已有用户名,-L:锁定指定用户账号,-U:对已锁定用户解锁

4.passwd设置用户账号和口令:

passwd [选项] 用户名

(仅root可用)  -S:用于查询指定用户的口令状态,-l:锁定指定用户的口令,-u:解锁指定用户的口令,-d:删除指定用户的口令

5.userdel删除指定用户账户:

userdel [-r] 用户名  #加上-r代表删除所有配置和有关文件

6.groupadd添加新的组账户

groupadd [-r] 组名 #不带r建立普通组,带r建立系统组

 7.groupmod改变用户组账户的属性

groupmod [-r] 组名

 8. 

groupdel 组名 #删除指定用户账户

 9.gpasswd 将指定用户添加到指定用户组或从组里删除,组管理员有执行权限

gpasswd [选项] 用户名 组名

-a将指定用户添加到指定组,-d从组里删除用户名,-A设定指定用户为指定组管理员 

10.软件包格式:rpm、tar、bz2、gz、deb、sh、src、bin、zip

11.压缩和解压:

zip -r 文件名.zip 路径  #压缩格式
unzip 文件名.zip   #解压格式

12.RPM:软件包管理器:安装卸载升级查询验证

rpm包名称格式:name-version.type.rpm

rpm -ivh 包名  #i安装、v显示详细信息,h显示水平进度条
rpm -e 包名    #删除

另有:-qa查询系统所有rpm、-q 包名 查询指定包是否安装、-qp 包文件名 查询包中文件信息、-qi 包名 查询已安装包的描述信息、-ql 包名 查询已安装包中包含的文件、-qf 文件名 查询系统指定文件所属的软件包

rpm -Uvh 包名  #升级包
rpm -V [参数]  #验证,参数可以是包名文件名或空

13.yum:软件仓库,对RPM进行管理

yum [选项] [操作] [包名]

选项:-h帮助,-y默认全yes,-q不显示安装过程

yum repolist all #查看所有软件仓库
yum repolist enabled #查看可用软件仓库
yum list [包名] #查看指定软件包安装情况
yum info [包名] #查看指定包详细信息
######################################
yum install [包名或程序组名] #安装
yum check-update #查找可更新程序
yum update [包名] #更新指定包
yum remove [包名] #删除指定包
yum clean [包名] #清除缓存目录下的软件包

14.tar标准文件打包格式 ,无rpm包的程序可以找tar包

tar cvf [包名] [文件或目录] #c建立,v执行时提示,f文件名,该句建立Tar包,改成zxvf则压缩建立
tar ztf [包名] #查询tar包名
tar ztvf [包名] #释放包,如果不是压缩包无需用z

15./etc/sysconfig/network-scripts/ifcg-ens33 初始化网络信息

/etc/hostname主机名称  /etc/hosts主机名  /etc/host.conf域名客户端控制文件  

/etc/resolv.conf:DNS配置  /etc/protocols协议号  /etc/services网络服务

16.配置IP地址请看参考文献[11]

17.hostname显示主机名

hostname 主机名 #设置主机名
ifconfig [网卡设备名] #显示当前活动的网卡设置
ifconfig 网卡设备名 IP地址 #重新设置网卡IP
ifconfig 网卡设备名:n IP #设置第n个虚拟IP
ifconfig 网卡设备名 up|down #激活和停止网卡

 18.常用网络通信命令

write username [终端号]  #开始发送信息,按ctrl+D结束
wall 消息  #向所有用户发送消息
mesg  [y|n] #设置消息允许和禁止
mail username #发邮件
mial -s 主题  username<filename #另一种发邮件的方式

19.用户指定系统在将来某事件执行作业,用at

at sometime  #创建
command list  #之后按ctrl+D结束
at -l  #显示at作业
at -d 作业ID  #删除at作业

20.corn是守护进程,corn的配置文件/etc/crontab,标准后台服务程序。

service crond restart  #启动corn服务
crontab [-u 用户名] 文件名 #创建corn作业
crontab [-u 用户名] [-e|-l|-r] #管理corn作业

21.进程控制,用法ps  [选项],-a显示所有用户进程,-e显示包括系统进程的所有进程,-l显示进程的详细列表,-f显示进程详细信息,-x显示没有控制终端的进程,-u显示用户名和启动时间

22.free显示系统信息命令,top显示系统进程状态,“sleep 时间;命令 推迟一段时间执行”,kill PID终止这个进程,中间加上-9为SIGKILL立即结束信号,-15为SIGTERM强制结束信号

23.command前台执行,command&后台执行

jobs查看后台进程,fg 后台挂起的进程编号 恢复到前台,bg 后台挂起的进程编号 恢复到后台,

24.init进程是最开始的Linux系统初始化进程,现在被sustemd代替,init路径/sbin/init,现在被链接到systemd,具体可查看参考文献[12]

25.systemctl系统服务管理

systemctl list-unit-files --type service   #查看系统服务启动状态
systemctl list-units --type service --all  #列出所有处于激活状态的服务
systemctl [status/start/stop/restart/reload] name.service #查看服务状态、服务启动、停止、重 
                                                          #启、重新加载配置文件
systemctl [enable/disable] name.service    #服务开机自启控制

 26.输入setup进入自启动服务控制。

27.磁盘挂载卸载

mount [-t 文件类型] [选项] device mountpoint #选项:ro只读,rw读写,remount重新挂载
umount [device] [dir] 卸载光盘
##########常用磁盘操作命令###########
fdisk [-l] [device] #查看现有磁盘设备分区情况
du [-a] directoryname #统计目录的磁盘使用情况
df -[ahil]  #磁盘空间统计,a所有文件系统的信息,h最适合的容量显示单位,i显示节点数的使用情况
            #l只显示本地文件系统使用情况。不加参数会显示所有已挂载文件系统的磁盘空间使用信息

课后习题与参考答案

1. 简述Linux的四个帐户系统文件及其各个字段的含义。
答:/etc/passwd用于保存用户的账户信息,加密的密码放在/etc/shadow,组放在/etc/group,组口令、组管理员/rtc/gshadow。

2. 举例说明使用RPM命令安装、升级、删除、查询、校验软件包的方法?
答:rpm -ivh 包名  #i安装、v显示详细信息,h显示水平进度条

rpm -e 包名    #删除                       rpm -Uvh 包名  #升级包

rpm -V [参数]  #验证,参数可以是包名文件名或空

3. 查看“/bin/at”文件隶属于那个软件包的?并查看该软件包的描述信息,以及该包里所包含的文件。
答:
查看“/bin/at”文件隶属于那个软件包的,命令如下:
rpm -qf /bin/at

查看上述命令查询到的该软件包的描述信息,命令如下:
rpm -qi RPM软件包名

查看上述命令查询到的该软件包所包含的文件,命令如下:
rpm -ql RPM软件包名

4. 网络通信有几种方式,都在什么情况下适用?
答:
对于多用户的操作系统中,在一台主机上的不同终端用户之间可以方便地收发信息。
双方同时在线时,常用以下两种方式:
点对点:write
广播:wall
另一方不在线时,可以采用mail邮件方式。

对于不同主机之间,最好采用该用户先远程登录到对方主机上,才能进行相互间通信。

5. 对进程来说,前台和后台的含义是什么,如何进行切换?
答:
进程的前台执行:当键入一个命令并按下<Enter>键时,shell执行命令,然后回显进程的执行情况,该进程执行完后返回Shell的提示符。
进程的后台执行:当命令执行某个进程后,立即返回到shell提示符,而没有显示该进程的执行情况,从而可以做其他工作。这种方式称为进程在后台运行。
前台到后台的切换:快捷键“<Ctrl> + Z”
后台到前台的切换:因为后台的进程可能很多,具体切换哪一个到前台,首先要执行“jobs”命令查看后台的进程号,然后执行“fg  后台进程编号”,把后台挂起的进程恢复到前台来运行。

6.如何启动和停止各种网络服务?
答:
使用如下命令来控制网络服务。
systemctl [status/start/stop/restart/reload] name.service
启动:
systemctl restart  name.service
停止:
systemctl  stop  name.service

7. 如何启动多个用户进程。
答:
可以使用“at”命令,多个用户进程以列表的方式指定某个时间启动执行。
也可以使用crontab命令来实现cron作业,来完成复杂的多个用户进程执行方式。

8. 利用vi及top命令分别创建两个后台进程后,再利用ps -au命令显示这两个后台进程的运行状态。用操作系统原理的进程运行状态转换图加以解释说明。
答:

9. 已知系统有一个root用户及多个a用户同时在线,对于root用户来说如何指定其中的一个a用户,并把它强行离线,并禁止该用户以原来登录的用户名及IP地址重新进行登录。
答:
首先root用户建立多个虚拟IP,让不用的用户以不同的IP地址用同一个a用户名登录同一个系统中,root用户再利用“who”命令查看多个a用户的不同端口号,指定某个a用户的端口号,再利用“ps -ef”命令查看该端口号a用户的登录时的父进程“bash”的进程号,root用户利用“kill -9 该进程号”杀死该进程,使该用户强行离线,再关闭该用户登录的虚拟IP地址。

10. 如何发送文件信息的消息?
答:
cat 文件名 | write 用户名

11. 查看系统中安装相关的http软件有那些?以及查看该软件的信息说明,并把该服务在多用户模式下和X窗口模式下设为系统启动时自动加载。
答:
查看系统中安装相关的http软件有那些,命令:rpm -q | grep http

上述命令的查询结果,找到http软件包名,再查看该软件包的信息说明,命令如下:
rpm -qi  该软件包名

把该服务在多用户模式下和X窗口模式下设为系统启动时自动加载可以使用chkconfig命令,其中3和5分别代表多用户模式和X窗口模式:chkconfig 35 httpd.service on

或者利用systemctl命令:systemctl enable httpd.service

12. 如何把2019年的日历信息以邮件的形式发送给一个指定的用户?
答:
首先制作一个2019年的日历文件,命令如下:
cal 2019 > 2019.txt

再把该文件以邮件的形式发送个如a用户,命令如下:
mail -s sendfile a < 2019.txt

13. 如何快速查找系统自动识别并加载的设备(如光盘)的设备名称以及在本地挂接点的路径?
答:
当它挂载一个新的磁盘设备后,系统启动时会自动识别它,可以用df命令查看所有当前被挂载的文件系统的信息,包括所识别的文件系统的设备名称,该设备的磁盘空间大小,以及被挂载本地的挂接点。命令如下:
df -lh

14. 利用VMware虚拟系统添加并加载新的物理硬盘NTFS分区,然后启动CentOS 7虚拟系统后,下载第三方驱动程序软件ntfs-3g并编译安装,在CentOS 7系统中识别NTFS分区并挂载访问它。
答:
Linux系统也可以访问NTFS类型的文件系统,但必须下载并编译安装第三方的软件包,“NTFS-3G”访问NTFS文件系统的驱动程序,其编译安装方法详见5.2.5小节。通过执行“fdisk -l”命令读取到NTFS设备文件名,然后加载到指定的挂接点,就可以读写Windows系统的NTFS分区文件了。操作过程略。


第六章:vi编辑器的使用

知识点整理部分

1.vi 文件名(后缀有没有都行)建立新文件或打开已有文件

中间加个数字会停留在第几行的行首,-r系统瘫痪后恢复某文件,/某字符 查该词第一次出现的位置

2.进入后按i进行编辑,a附加命令,x删除字符,esc回到默认的模式

3.w保存,w 文件名另存,q退出,加!强制执行

4.><指定行向右向左移动8个空格光标滑倒当前行,输入><nG就是从当前行到n行整体移动多少位,>> <<所在行移动8空格,n>>从该行以下5行移动8个空格

5./字符串 向前检索,?字符串 向后检索,/this继续检索,包含特殊字符前面要有\\

6.:行号 移到该行行首

7.替换命令:g/模式/命令表,具体请见参考文献[13]

8.可执行shell的命令,r!命令 读取并插入

9.recover恢复文件,也可以vi -r 文件名

10.set [选项]进行设置,all显示所有设置列表,lines=24默认缓冲显示行,number显示行号,autoindent自动缩进,list结尾显示$

11.

######编辑缓冲区到命名缓冲区#######
"字母名行号操作命令

操作命令Y复制dd剪切,a~z命名缓冲区

 "字母名操作命令  #粘贴,命令P上一行粘贴p下一行

12.按行复制a~b co 把a到b行复制, a~b co c a到b行复制c;m文本块移动,w 文件名 移动到新文件,>>文件名则是指定文件

13.编辑多个文件,请看参考文献[14]

课后习题与参考答案

1. 进入和退出vi编辑器的方法有那些?
进入vi编辑器方法有:
打开并进入vi编辑器:“vi”
打开以filename命名的文件,光标停在第n行行首:“vi +n filename”
打开filename文件,光标停在最末行行首:“vi + filename”
系统瘫痪后恢复filename文件:“vi –r filename”
从文件中找出“词”第一次出现位置,光标停在该行的行首:“vi +/词 filename”

退出vi编辑器方法有:
存盘退出:“wq”
不存盘退出:“:q!”

2. vi编辑器的工作方式有那些?相互间如何转换?
答:

 3. 打开vi编辑器,进行如下操作:
(1) 插入2019年日历,并把该文件命名为2019.txt。
答:
用vi打开编辑器,进入新的文件编辑时,转到底行命令,输入命令
:r !cal 2019
即插入2019年日历,然后再执行底行命令
:w 2019.txt
即把该文件存盘命名为2019.txt。

(2) 把4、5、6月的日历整体向右移动一个制表位。
答:
在命令模式下,把光标移到4、5、6月的行首,执行命令
>>7
即把4、5、6月的日历整体向右移动一个制表位。

(3) 把该日历的标题“2019”改为“2019年全年日历”。
答:
把光标移到日历标题位置,在输入模式下把日历的标题“2019”改为“2019年全年日历”。

(4) 删除1、2、3月的日历,然后予以恢复。
答:
把光标移到1、2、3月的日历行首,执行命令
d8G
其中8为1、2、3月的日历最底行的行号。
再按u键予以恢复。

(5) 把7、8、9月的日历整体移到日历的最后面。
答:
该操作为把7、8、9月的日历先整体剪切,然后再到日历最底行,再粘贴的过程,操作如下:
先把光标移到7、8、9月的日历的行首,7、8、9月的日历整体占6行,执行剪切命令
"a6dd
即把7、8、9月的日历整体占的6行剪切到a的缓存区中;
把光标移到日历的最底行,执行粘贴命令
"ap

(6) 依次检索字符串“30”,如果每个月的最后一天为“30”,则删除该字符串“30”。
答:
该操作为检索命令,再判断每个月的最后一天是否为“30”,再进行删除该字符串“30”,操作如下:
执行字符串检索命令:
/30
首先检索到第一个“30”,再判断该月的最后一天是否为“30”,如果是则执行命令
d2l
删除该字符串“30”,然后按n键,检索下一个“30”字符串,以此类推进行操作。

(7) 显示行号。
答:
执行底行命令
:set number

(8) 在该vi编辑器中统计该文件的大小。
答:
在该vi编辑器中统计该文件的大小,首先把该文件进行存盘,比如存盘命名为2019.txt,则可以在vi中执行shell命令
:!wc 2019.txt

4. 已知有两个文本文件f1和f2,把f1文件中的第5~9行剪切并插入粘贴到f2文件的第3行后,再把f2文件中的所有read字符串全部改写成reading,最后在f1文件后附加上当前时间。利用vi编辑器写出以上操作步骤及其相关命令。
答:
首先用vi打开两个文本文件f1和f2,执行命令如下
vi f1 f2
此时编辑为f1下,把光标移到第5行,执行剪切命令
"b5dd
然后把剪切后的f1存盘
:w
之后转到编辑f2文件下
:n
进入到f2下把光标移到第3行,执行粘贴命令
"bp
粘贴后,把f2文件中的所有read字符串全部改写成reading,执行全局替换命令
:g/read/s//reading/g
最后在f1文件后附加上当前时间,操作如下:
当前为f2文件的编辑状态下,先把f2存盘,后返回f1的编辑状态下
:w
:e#
进入到f1编辑状态下后,把光标移到最低,执行插入shell命令,插入当前时间
:r !date


第七章:Shell程序设计

知识点整理部分

注意:本章非常重要!任何一个有脑子的出题人都会把这个当重要考点!

1.sh<脚本名,执行该Shel脚本

2.shell环境变量,见参考文献[15],显示环境变量值echo $变量名($就是系统提示符)

3.输入命令

read 变量1 [变量2]...

4.echo命令将其后的参数输出,输出内容打上双引号,输出中含有转义字符需要加-e,转义字符:

\\b:退格,\\c:不将光标移到下一行,\\f:换页,\\n:换行,\\r:回车,\\t:水平制表符,\\:垂直制表符,\\\\:输出反斜杠,\\ON:ASCII码为八进制N的字符

5.if语句:if 条件     then 命令1  [elif 判断 then...] else 命令2  fi

6.测试语句的两种表达

test 内容  #test之后写语句
[内容]     #在方括号中写语句

文件测试:-字符 文件位置:-r测试存在且用户可读,-w存在且用户可写,-x存在且用户可执行,-f存在且是普通文件,-d存在且是目录文件,-p存在且是FIFO文件,-s存在且不是空文件

字符串测试:str不是空字符串,str1=str2两个字符串相等,str1!=str2两个字符串不想等,-n str字符串长度不为0,-z str字符串长度为0,例:

test "$s1" = "$s2"

数值测试:n1 -eq n2整数n1=n2,n1 -ne n2整数n1不等于n2,-lt前小于后,-le前小于等于后,-gt前大于后,-ge前大于等于后

逻辑操作符:!逻辑非,真变假假变真,-a逻辑与,前后都真才是真,-o逻辑或,前后有一个真就是真,()将表达式分组优先得结果,前后要有空格和\\,即“\\(”、“\\)”

7.case:

case 字符串 in
语句1)
    执行语句1;;   #可以加多条语句,最后一条要用两个分好
语句2)
    执行语句2;;
*)              #其他情况用*
    执行语句...;;
esac            #结束

 8.for语句

for 变量 [变量值表]
do
  执行语句
done

9.while语句

while 条件
do
   执行语句
done

10.util语句,只有表达式为假时才执行

util 条件
do
   语句
done

11.break [n]跳出n层循环,continue [n]跳过n层循环

12.算术表达式

expr n1 运算符 n2   #+-/,乘需要用\\*,以及取模%

13.退出脚本程序exit [n],n为设定的退出值,不写n退出最后一个

14.自定义函数,先定义后调用

########定义###########
函数名()

     语句


########调用###########
函数名 执行内容以上是关于《Linux系统管理与应用》课程知识点整理+书后习题全文解答(Linux知识点大纲)的主要内容,如果未能解决你的问题,请参考以下文章

《Linux系统管理与应用》课程知识点整理+书后习题全文解答(Linux知识点大纲)

Linux系统C语言开发环境学习

实验四 Linux系统C语言开发环境学习

Linux系统C语言开发环境学习

实验四 Linux系统C语言开发环境学习

实验四 Linux系统C语言开发环境学习