Linux学习与开发基本概念汇总

         最近在翻翻大学时候学过的Linux资料,整理出之前做过的Linux笔记,包含了Linux最基本的概念和知识。当时可能是为了应付考试而做的吧。现在拿出来和大家一起分享。

第一章

1. Linux是多用户、多任务操作系统。

2. 程序是计算机完成一项任务的指令集合。

3. 数据是由程序使用或生成的不同类型的信息。

4. 软件分为三大类:

 

(1) 系统软件

(2) 应用软件

(3) 支撑软件

 

5. 系统软件包括操作系统、编译程序、汇编程序、数据库管理系统、网络软件等。系统软件对计算机系统的资源进行控制、管理,并为用户的应用和其他程序的运行提供服务。

6. 支撑软件包括编辑程序、查错程序、项目管理程序等。辅助软件技术人员从事软件开发和项目管理人员进行项目管理工作的软件。

7. 应用软件是为解决某一类应用需要或某个特定问题而设计的程序。

8. Linux提供4种不同的用户接口:

 

(1) 命令行接口

(2) 菜单

(3) 图形用户接口

(4) 程序接口

 

9. 命令解释程序称为shell

10. 程序接口也称为系统调用接口。系统调用时操作系统内核与用户程序、应用程序之间的接口。

11. 内核之外的程序都必须经由系统调用才能获得操作系统的服务。系统调用只能在C程序中使用,不能作为命令在终端上执行。由于系统调用能直接进入内核执行,所以执行效率很高。

12. Linux解决资源使用过程中的冲突,保证资源最后能被系统再次使用所采取的方法:

 

(1) 通过记录和文件加锁,保证数据的完整性

(2) 利用调度进程和审计系统

(3) 当系统出现错误时,提供错误诊断信息

(4) 终止运行不正常的进程,甚至在最坏的情况下停止系统

 

13. 软件以是否以营利为目的分为三种模式:

 

(1) 商业软件

(2) 共享软件

(3) 自由软件

 

14. Linux用户分为:

 

(1) 个人用户

(2) 专业用户

(3) 商业用户

 

15. Linux的特点:

 

(1) 与unix系统兼容

(2) 自由软件和源码公开

(3) 性能高和安全性强

(4) 便于定制和再开发

(5) 互操作性高

(6) 全面的多任务和真正的32位操作系统

 

16. Linux的两种版本:

 

(1) 核心版本

(2) 发行版本

 

17. 核心版本的序号:major.minor.patchlevel

 

major主版本号  minor次版本号共同构成核心版本号。Patchlevel表示当前版本的修订次数。

 

18. 若次版本号为奇数,表示该版本加入新内容,但不一定很稳定,相当于测试版;若次版本号为偶数,表示这是一个可以使用的稳定版本。

19. 发行版本是各个公司推出的版本,与核心版本各自独立发展的。

20. Linux的发展优势:

 

(1) 开放源码系统从本质上就具有其他系统无法比拟的研制开发优势。

(2) 受到各国政府的大力支持。

(3) 得到全球各大软硬件公司的支持。

(4) 价格优势和安全性。

 

 

21. X Windowunix和所有类unix操作系统的标准图形接口,有事也称为X WindowsX Window或者X

 

21. X Window体系结构包括:

 

(1) 客户-服务器模型

(2) X协议

 

22. 典型的X客户程序有以下两种:

 

(1) 窗口管理器

(2) 桌面系统

 

23. X Window是事件驱动的。

24. X的客户-服务器模型不是建立在特定的软硬件资源之上,而是建立在X协议之上。X协议是一个抽象的应用服务协议,不包括对底层硬件的访问和控制。

25. Linux两种桌面系统环境:

 

(1) KDE

(2) GNOME

 

 

 

 

 

第二章

1. Linux只有被授权的用户才可以使用系统命令。

2. Linux系统提供的命令需要在shell环境下运行。

3. 使用bash命令时,应注意以下7点:

 

(1) 命令名必须是小写英文字母。

(2) 方括号里面的部分是可选的。

(3) 选项是对命令的特别定义。

(4) 命令行参数提供命令运行的信息或者命令执行过程中所使用的文件名。

(5) 如果命令行中没有参数,命令将从标准输入文件上接收数据,输出结果显示在标准输出文件上,错误信息显示在标准错误输出文件上。

(6) 命令在正常执行后返回0值,表示执行成功;如果执行过程中出错,则返回非零值。

(7) 联机帮助对每个命令的准确语法都做了说明。

 

4. 如果一个命令太长,一行放不下,要在第一行行尾输入“\”字符,按回车键。这时shell会返回一个大于号(>)作为提示符,表示该命令行尚未结束,允许继续输入有关信息。

5. who命令显示:

 

(1) 正在使用系统的用户

(2) 所用终端名

(3) 注册到系统的时间

 

6. who am i命令

 

列出当前用户的相关信息。

 

7. echo命令

 

将命令行中的参数显示到标准输出上

 

8. 复习date命令  cal命令   password命令

9. clear命令

 

清除屏幕上的信息。清屏后,提示符移到屏幕的左上方。

 

 

10. 磁盘上的文件系统是层次结构的,由若干目录和子目录组成,最上层的目录称为根目录,用“/”表示。

11. root目录就作为自己的父目录。

12. 文件名按照ascii码顺序列出,以数字开头的文件名列在前面,然后是以大写字母开头的文件名,最后是以小写字母开头的文件名。

13. 文件的结构:

 

(1) 索引节点

(2) 数据

 

14. 以圆点(.)开头的文件是隐含文件,默认情况下,使用ls命令不能把它们在屏幕上显示出来。

15. Linux支持的文件类型:

 

(1) 普通文件:包括文本文件、数据文件、可执行的二进制程序文件

(2) 目录文件

(3) 设备文件:包括字符设备和块设备

(4) 符号链接文件

 

16. 使用带-a选项的ls命令可以显示隐含文件。

17. cat命令

 

(1) 显示文件的内容,输出到标准输出上。

(2) 连接两个或多个文件。

 

18. more命令

 

显示文件内容,每次显示一屏。

 

19. less命令

 

分屏显示文件的内容。less命令允许用户向前或向后浏览文件,more命令只能向前浏览。

 

20. head命令

 

显示指定文件的开头若干行。默认值是10

 

 

21. tail命令

 

显示指定文件的末尾若干行。

 

22. touch命令

 

修改指定文件的时间标签或者创建一个空文件。

 

23. grep命令

 

在文本文件中查找指定模式的词或短语,并在标准输出设备上显示包括给定字符串模式的所有行。

 

24. sort命令

 

对文本文件的各行进行排序。

 

25. uniq命令

 

从排好序的文件中删去重复行。

 

26. comm命令

 

对两个已排序文件进行逐行比较。

 

27. diff命令

 

比较两个文件,并找出它们的不同。不要求两个文件预先排好序。

 

28. cp命令

 

将源文件或目录复制到目标文件或目录中。

 

29. rm命令

 

删除文件或目录

 

30. mv命令

 

对文件或目录重新命名,或者将文件从一个目录移到另一个目录。

 

31. wc命令

 

统计指定文件的字节数、字数、行数,并将统计结果显示出来。

 

32. 主目录就是用户当前工作目录。

33. 绝对路径名总是以斜线(/)字符开头,表示根目录。绝对路径名也称全路径名。

34. 使用pwd命令可以显示当前工作目录的绝对路径名。

35. 点(.)表示当前工作目录。

36. mkdir命令

 

创建目录

 

37. cd命令

 

改变工作目录

 

38. Linux具有为一个文件起多个名字的功能,称为链接。被链接的文件可以存放在相同的目录下,但是必须有不同的文件名,而不用在硬盘上为同样的数据重复备份。

 

被链接的文件也可以有相同的文件名,但是存放在不同的目录下,只要对一个目录下的该文件进行修改,就可以完成对所有目录下同名链接文件的修改。

 

对于某个文件的各个链接文件,可以指定不同的存取权限,以控制对信息的共享和增强安全性。

 

39. 文件链接的两种形式:

 

(1) 硬链接

(2) 符号链接

 

40. 建立硬链接时,在别的目录或本目录中增加目标文件的一个目录项,这样一个文件就登记在多个目录中。

41. 在默认情况下,ln命令创建硬链接,ln命令会增加链接数,rm命令会减少链接数。

42. 硬链接的限制:

 

(1) 不能对目录文件创建硬链接

(2) 不能在不同的文件系统之间做硬链接。链接文件和被链接文件必须位于同一个文件系统中。

 

43. 符号链接也称软链接,是将一个路径名链接到一个文件。

44. 与硬链接不同,符号链接确实是一个新文件,具有不同的I节点号,而硬链接没有建立新文件。

45. 符号链接没有硬链接的限制,可以对目录文件建立符号链接,也可以在不同文件系统之间建立符号链接。

46. ln命令

 

创建链接

 

47. Linux为每个文件都分配一个文件所有者,称为文件主,并赋予文件主唯一的注册名。对文件的控制取决于文件主或超级用户(root)。

48. 文件或目录的创建者对创建的文件或目录拥有特别使用权。

49. Linux规定四种不同类型的用户:

 

(1) 文件主

(2) 同组用户

(3) 可以访问系统的其他用户

(4) 超级用户

 

50. chmod命令

 

改变或设置文件或目录的存取权限。注意只有文件主和超级用户有权使用该命令。

 

51. man命令

 

格式化并显示某一命令的联机帮助手册页。

 

52. help命令

 

查看所有shell内置命令的帮助信息。

 

53. ps命令

 

查看当前系统中运行的进程信息。

 

54. kill命令

 

终止一个进程的运行。

 

55. sleep命令

 

使进程暂停执行一段时间。

 

56. gzip命令

 

对文件进行压缩和解压缩

 

57. unzip命令

 

zip格式的压缩文件进行解压缩。

 

 

 

第三章

1. Linux文本编辑器:edexeditvi

2. 文本编辑器按功能分为两类:

 

(1) 行编辑器:edexedit

(2) 屏幕编辑器:vi

 

3. vi编辑器三种工作方式:

 

(1) 命令方式

(2) 输入方式

(3) ex转义方式

 

4. 四种退出vi的方法:

 

(1) :wq——把编辑缓冲区的内容写到指定文件中,退出编辑器,回到shell状态。操作过程是:先输入冒号:,再输入命令wq,然后按回车键。

(2) :ZZ——仅当对所编辑的内容做过修改时,才将缓冲区的内容写到指定文件上。

(3) :x——与:ZZ功能相同

(4) :q!——强行退出vi,不把缓冲区的内容写到文件中。

 

5. 插入命令:

 

(1) i

(2) I

 

6. 在i命令之后输入的内容都插入在光标位置之前,光标后的文本相应向右移动。按下回车键,就插入新的一行或换行。

7. 输入I命令后在当前行的行首插入新增文本,行首是该行的第一个非空白符。

 

 

 

8. 附加命令:

 

(1) a

(2) A

 

9. a命令在该命令之后输入的字符都插到光标之后,光标可在一行的任何位置。

10. A命令在当前行的行尾添加文本。输入A命令后,光标自动移到该行的行尾 。

 

 

11. 打开命令:

 

(1) o

(2) O

 

12. o命令在当前行的下面新开辟一行,随后输入的文本就插入在该行上。

13. O命令在当前行的上面新开辟一行,随后输入的文本就插入在该行上。

14. 

 

 

 

 

 

第四章

1. shellLinux的一个重要层次,是用户与系统交互的界面。

2. Linux默认的shellbash

3. shell的特点:

 

(1) 对已有命令进行适当组合,构成新的命令。如建立shell脚本。

(2) 提供文件名扩展字符,使得用单一字符串可以匹配多个文件名,省去输入一长串文件名的麻烦。

(3) 可以直接使用shell内置命令,而无需创建新的进程。

(4) 允许灵活的使用数据流,提供通配符、输入输出重定向、管道线等机制,方便模式匹配、IO处理和数据传输。

(5) 结构化的程序模块,提供顺序、条件、循环等控制流程。

(6) 提供在后台执行命令的能力。

(7) 提供可配置的环境,允许用户创建和修改命令、命令提示符和其他系统行为。

(8) 提供一个高级命令语言,允许用户创建从简单到复杂的程序。

 

4. shell程序也可以放在文件上,称为shell脚本。

5. #!/bin/bash   表示下面的脚本使用bash编写的,必须调用bash程序对它解释执行。

6. 执行shell脚本的方式:

 

(1) 输入定向到shell脚本。用输入重定向方式让shell从给定文件中读入命令行,并进行相应处理。

(2) 以脚本名作为bash参数。

(3) 将shell脚本的权限设置为可执行,然后在提示符下直接执行。

 

 

 

7. shell脚本名可直接作为命令名使用。

8. 事件表示一个操作已经发生,即命令已被执行。显示的行命令之前的数字表示相应命令行在命令历史表中的序号,称为历史事件号。历史事件号从1开始顺序向下排,最后执行的命令的事件号最大。

9. 历史文件中能够保留的命令个数有限,默认值是500.如果用户输入的命令太多,超过限定值,最早输入的命令就会从历史表中删除。

10. 一般通配符:

 

1*(星号)

匹配任意字符的0次或多次出现。

 

2)?(问号)

匹配任意一个字符。

 

3[字符组]

匹配该字符组所限定的任何一个字符。

 

4)!(惊叹号)

表示非

 

11. shell中的三种引号:

 

(1) 单引号

(2) 双引号

(3) 倒引号

 

12. 双引号括起来的字符均作为普通字符对待。除  $   `(倒引号)   \(反斜杠)。

13. 由单引号括起来的字符都作为普通字符出现。特殊字符也失去原来的意义。

14. 倒引号括起来的字符串被shell解释为命令行,在执行时,shell会先执行该命令行,并以它的标准输出结果取代整个倒引号部分。

15.执行一个shell命令时,通常会自动打开三个标准文件:标准输入文件(stdin)、标准输出文件(stdout)、标准出错输出文件(stderr)。分别对应键盘、屏幕、屏幕终端。

16.输入重定向符:<    把命令(或可执行程序)的标准输入重新定向到指定文件。

17.输出重定向符:>    把命令(或可执行程序)的标准输出重新定向到指定文件。这样该命令的输出就不会在屏幕上显示,而是写入指定文件中。

18.shell以“#”开头的正文行表示注释。

19.shell脚本第一行以“#!”开头,后面所跟的字符就是所使用的shell绝对路径名。

20.管道线是由竖杠(|)隔开的若干命令组成的序列。

21.在管道线中,每个命令执行时都有一个独立的进程。前一个命令的输出正是下一个命令的输入。

22.后台命令:在一条命令的最后输入&符号。

23.后台进程的优先级都低于前台进程的优先级。

24.成组命令:可以将若干命令组合在一起,使其在逻辑上视为一条命令。

25.成组命令两种方式

 

(1) { }形式    不产生新的进程

 

{}括起来的全部命令可视为语法上的一条命令,出现在管道符的一边。成组命令把各命令的执行结果汇集在一起,形成一个输出流。这个流作为该管道线中下一个命令的输入。

 

(2) ()形式     产生新的进程

 

在新的子shell内执行,不会改变父shell的变量值及工作目录。

 

26.shell两类变量:

 

(1) 环境变量

(2) 临时变量

 

27.在程序中使用变量的值时,要在变量名前加一个$符,要进行变量值替换。

28.bash只提供一位数组,并且没有限定数组的大小。

29.可以利用read命令从键盘上读取数据,然后赋给指定的变量。

30.用户注册过程中系统需要做的一件事就是建立用户环境。所有的Linux进程都有各自独立且不同于程序本身的环境。Linux环境由许多变量即这些变量的值组成。这些变量和变量的值决定了用户环境的外观。

31.set命令的三个功能:

 

(1) 显示迄今为止所定义的全部变量,包括局部变量和公用变量。

(2) 设定位置参数的值。

(3) 改变执行shell脚本时的选项设定,可使用户改变shell的功能。

 

32.jobs命令

 

不带参数时,可列出当前尚未完成的作业。

 

33.bg命令

 

把前台作业切换成后台作业。仅当作业控制被激活,这个命令才起作用。

 

34.fg命令

 

把后台作业切换成前台作业。仅当作业控制被激活,这个命令才起作用。

 

35.编写脚本基本的错误类型:

1)语法错误

2)逻辑错误

 

 

 

 

 

 

 

 

 

第五章

1. Linux系统分为三层:

 

(1) 靠近硬件的底层是内核,即Linux操作系统常驻内存部分。

(2) 中间层是内核之外的shell层,即操作系统的系统程序部分。

(3) 最高层是应用层,即用户程序部分。

 

2. Linux的进程调度算法采用多级队列轮转法。

3. Linux两种管理内存的策略:

 

(1) 交换

(2) 请求分页

 

4. Linux支持三种类型的硬件设备:

 

(1) 字符设备

(2) 块设备

(3) 网络设备

 

5. Linux 进程状态:

 

(1) 运行态

(2) 可中断等待态

(3) 不可中断等待态

(4) 停止态

(5) 僵死态

 

6. Linux进程的执行模式:

 

(1) 用户模式

(2) 内核模式

 

7. 如果在用户程序执行过程中出现系统调用或者发生中断事件,就要运行操作系统程序,进程模式变成内核模式。在内核模式下运行的进程可以执行机器的特权指令,此时该进程的运行不受用户的干预,即使是root用户也不能干预内核模式下进程的运行。

8. Linux进程按功能和运行的程序分为:

 

(1) 系统进程

(2) 用户进程

 

9. 用户进程既可以在用户模式下运行,也可以在内核模式下运行。

10. Linux每个进程都有一个名为task-struct的数据结构,相当于进程控制块。

11. task-struct包含的信息:

 

(1) 进程状态

(2) 调度信息

(3) 标识符

(4) 内部进程通信

(5) 链接信息

(6) 时间和计时器

(7) 文件系统

(8) 虚拟内存

(9) 处理器信息

 

12. Linux每个进程都有一个系统堆栈,保存中断现场信息和进程进入内核模式后执行子程序嵌套调用的返回现场信息。

13. 系统空间堆栈大小是静态确定的,用户空间堆栈可以在运行时动态扩展。

14. 系统刚刚启动时,系统运行在内核方式,内核在引导并完成基本的初始化操作以后,就有了系统的第一个进程。除此之外,所有的其他进程和内核线程都由这个原始进程或其子孙进程创建。

15. 除初始化进程外,其他进程都是用系统调用fork()clone()创建的。调用fork()clone()的进程是父进程,被生成的进程是子进程。

16. 后台程序按批处理方式调度运行。

17. 超级块包含文件系统的大小和形式的基本信息。文件系统管理员可以利用这些信息来使用和维护文件系统。每个块组都是一个超级块。

18. 每个数据块组都有一个描述它的数据结构,即块组描述结构。

19. 每个文件都有唯一一个索引节点。

20. 索引节点两种形式:

 

(1) 盘索引节点

(2) 内存索引节点

 

21. 用户程序通过有关文件系统操作的系统调用界面进入系统空间,然后经由VFS才可使用Linux系统中具体的文件系统。

22. VFSext2文件系统一样也使用超级块和索引节点来描述和管理系统中的文件。每个安装的文件系统都有一个VFS超级块。

23. Linux系统进程启动时,自动打开三个文件:标准输入、标准输出和标准错误输出,文件描述符分别是0,1,2.

24. 信号处理机构包括:

 

(1) 信号的分类、产生和传送

(2) 对各种信号预先规定的处理方式

(3) 信号的检测和处理

 

25. 进程接到信号后,在一定时机做相应处理,可采取四种处理方式:

 

(1) 忽略信号

(2) 阻塞信号

(3) 由进程处理该信号

(4) 由系统默认处理

 

26. 对信号的检测和响应是在系统空间进行的。

27. 一个管道线就是连接两个进程的一个打开文件。

28. 用户是通过文件系统与设备交互的。

29. 所有设备都作为特别文件,从而在管理上具有下列共性:

 

(1) 每个设备都对应文件系统中的一个索引节点,都有一个文件名。

(2) 应用程序通常可以通过系统调用open()打开设备文件,建立与目标设备的连接。

(3) 对设备的使用类似对文件的存取。

(4) 设备驱动程序是系统内核的一部分,必须为系统内核或者它们的子系统提供标准接口。

(5) 设备驱动程序利用标准的内核服务。

 

30. 中断处理分为两个步骤:

 

(1) 中断响应:硬件实施

(2) 中断处理:软件实施

 

31. 每个系统调用都有唯一的号码,称为系统调用号。

32. 在Linux网络中,网络数据从用户进程传输到网络设备需要经历4个层次。数据传输只能按照层次自上而下进行,不能跨越其中的某个或某些层次。这使得网络传输只能有唯一的一条路径,从而提高了整个网络的可靠性和准确性。

33. socket在逻辑上有三个特征(或要素):

 

(1) 网域

(2) 类型

(3) 协议

 

 

 

 

 

 

第六章

1. gcc编译程序时,编译过程可以分为4个阶段:

 

(1) 预处理

(2) 编译

(3) 汇编

(4) 连接

 

2. 程序中的错误按性质可分为三种:

 

(1) 编译错误

(2) 运行错误

(3) 逻辑错误

 

3. gdb Linux中的程序调试工具

4. gdb主要帮助用户在调试程序时完成4方面的工作:

 

(1) 启动程序,按用户要求影响程序的运行行为。

(2) 使运行程序在指定条件处停止。

(3) 当程序停止时,检查它出现了什么问题。

(4) 动态改变程序的执行环境。

 

5. make  程序维护工具

6. make的主要功能是:执行生成新版本的目标程序所需的各个步骤。



你可能感兴趣的:(计算机杂谈)