Linux笔记

一、初识Linux

1、计算机基础知识

(1)硬件

(2)软件

在这里插入图片描述
在这里插入图片描述

2、操作系统概述

(1)什么是操作系统

操作系统是裸机之上的第一层软件,与硬件关系尤为密切。
定义:
操作系统是控制和管理计算机系统内各种硬件和软件资源、有效地组织多道程序运行的系统软件(或程序集合),是用户与计算机之间的接口。

  • 操作系统是软件,而且是系统软件
  • 它的基本职能是控制和管理系统内各种资源,有效地组织多道程序的运行。
  • 它提供众多服务,方便用户使用,扩充硬件功能。

(2)操作系统的功能

1.存储管理
⑴ 内存分配
(2)地址映射
(3)内存保护
(4)内存扩充
2. 进程和CPU管理
(1)作业和进程调度
(2)进程控制
(3)进程通信
3.文件管理
(1)文件存储空间的管理
(2)文件操作的一般管理
(3)目录管理
(4)文件的读写管理和存取控制
4.设备管理
(1)缓冲区管理
(2)设备分配
(3)设备驱动
(4)设备无关性
5.用户接口
⑴图形用户接口(GUI)
⑵命令行接口
⑶程序接口——也称系统调用接口

(3)操作系统类型

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

3、Linux系统历史和现状

在这里插入图片描述
在这里插入图片描述

4、Linux系统特点

在这里插入图片描述

5、Linux优势与问题

在这里插入图片描述

6、Linux是什么

Linux是一个类Unix计算机操作系统的统称。该操作系统的核心的名字也是“Linux”。

(1)Linux与Unix区别和联系

(2)Linux版本

7、Linux组成部分

(1)Linux内核

8、Linux基本原理

(1)cpu管理

(2)存储管理

(3)文件管理

(4)设备管理

二、常用命令及文件操作

1、命令行方式

(1)提示符

yuxine:用户名

yuxine-None:默认主机名

~:用户主目录

$:当前用户是普通用户 #:当前用户是超级用户

PS1是主提示符变量,也是默认提示符变量。默认值[\u@\h \W]\$,显示用户主机名称工作目录。

2、简单命令

$ who

列出所有正在使用系统的用户、所用终端名和注册到系统的时间。

$ echo

将命令行中的参数显示到标准输出(即屏幕)上

$ date/cal
$ passwd

更改自己的密码

更改root用户密码:sudo passwd root

进入root用户模式:su root

$ pwd

显示出当前目录的路径

$ su

更改用户身份

$ history

查看历史命令

3、命令格式

4、文件及其类型

(1)概念

  • 文件(File)是被命名的相关信息的集合体。它通常存放在外存(如磁盘、磁带)上,可以作为一个独立单位存放和实施相应的操作(如打开、关闭、读、写等)。

  • 文件成分

    ​ 索引节点:I节点

    ​ 数据:文件的实际内容

  • 文件命名

    ​ 尽量简单

    ​ 避免/,空格,制表符,控制字符

    ​ 避免特殊含义字符

  • Linux只有一个文件树,根目录/

  • 以圆点(.)开头的文件名是隐含文件

  • 文件名通配符

    ​ ①星号(*)

    与0个或多个任意的字符相匹配,匹配的是当前目录下的所有文件,但以点(.)开头的隐含文件除外,.*只与隐含文件匹配。

    ​ ②问号( ? )

    只与单个任意的字符匹配

    ​ ③方括号( [ ] )

    只与括号中列出的字符之一匹配,可以用-代表一个范围内的字符【升序排列and如果在[之后是一个!或^,则表示与不在方括号中出现的字符匹配】

    eg:

    [!A-Z]*.?代表所有不以大写字母开头,但倒数第二个位置是.的文件名。

(2)文件类型

5、常用文件操作命令

(1)文件显示

$ cat
$ cat  m1  m2 > mfile    (将文件m1和m2合并后放入文件mfile中)
$ cat  –n  m1                      (对文件m1的各行编号并输出)

-n 选项表示显示文件内容时,同时显示行号(空行也显示行号)

-b 空行不显示行号

$ more

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

$ more  -dc  mfile
先清屏,然后显示mfile的内容,并且在屏幕的最下方显示完整的百分比。
$ more  -c  -10  mfile
显示文件mfile的内容,每10行显示一次,而且在显示之前先清屏。
$ less

分屏显示文件的内容。允许用户向前或向后浏览文件。

$ head

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

$ head  --bytes=-100  mfile    (显示文件mfile除最后100个字节之外的所有内容。注意:“=”与“-”之间没有空格。)
$ head  -v  mfile   (显示文件mfile的内容,并且给出文件名标题)
$ head  -q  mfile   (显示文件mfile的内容,但不列出文件名标题)

-v 选项用于显示文件的详细信息

-q 选项用于禁止显示文件名 quit

$ tail

​ 显示末尾10行

$ tail  -n +20  mfile    (显示文件mfile的内容,从第20行至文件末尾)
$ tail  -c  10  mfile   	(显示文件mfile的最后10个字符)

-c 选项用于指定要显示的字节数 ctype

显示文件 test 的前 20 行中的后 10 行
head -n 20 test | tail -n 10
$ touch

修改指定文件的时间标签

创建一个空文件

$ touch  –m  mfile    (将文件mfile的修改时间改为系统当前时间)

-m只更新文件的修改时间而不改变文件内容

$ file

对每个参数FILE进行检查,并予以分类(确定文件类型)

(2)匹配、排序、显示

$ grep

​ 在文本文件中查找指定模式(正则表达式)的词或短语,并在标准输出上显示包括给定字符串模式的所有行。

$ grep  -r  'print'   ciee
$ grep  -E '[Mm]ain | [Pp]rintf'  ~/dir/f?.c
$ grep -i 'main | printf' ~/dir/f?.c(与上式相同

-r 表示递归地搜索目录。=rgrep

-E 表示启用扩展的正则表达式。 =egrep

-F固定字符串匹配,不解释正则表达式 =fgrep

-i 选项表示不区分大小写

-v反向查找,可以查找指定目录及其子目录(如果存在子目录的话)不符合条件行的内容

$ sort
$ sort  -r -k 2, 3  more_h10  
//以第2个字段作为排序关键字,如果相同就以第3个字段排序,不往后类推,因为2代表开始位,3代表结束位。-r表示以相反的顺序来排序。
$  sort  -k  3  more_h10
//以第3个字段作为排序关键字,对文件more_h10排序,若第3个字段相同,就以第4个字段排序,依次类推。

-k 选项用于指定排序的关键字,即排序时要考虑的字段范围

-o 选项用于指定输出文件的名称

$ uniq

读取输入文件,并比较相邻的行,去掉重复的行,只留下其中的一行。

$ uniq  -u  ex3    //显示文件ex3中不重复的行
# uniq  testfile3     //检查文件并删除重复行
# uniq  -c  testfile3    //检查文件并删除重复行,并在行首显示该行重复出现的次数。

-u 选项用于仅显示不重复的行,并排除出现两次或更多次的行。

-c显示重复次数

(3)比较文件内容

$ comm

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

$ comm  -12  m1  m2  	(比较文件m1和m2,并且只显示它们共有的行)

-12 选项表示只输出两个文件共有的行。

$ diff

逐行比较两个文件,列出它们的不同之处,并且告诉用户,为了使两个文件一致,需要修改它们的哪些行。

输出形式

diff   testfile3  testfile4  -y -W  50

并排格式输出,"|“表示前后2个文件内容有不同;”<“表示后面文件比前面文件少了1行内容;”>"表示后面文件比前面文件多了1行内容

n1        a    n3,n4	(把文件1的n1行附加到文件2的n3~n4行后,则二者相同)   add
n1,n2    d    n3	(删除文件1的n1~n2行及文件2的n3行,则二者相同)          delete
n1,n2    c    n3,n4(把文件1的n1~n2行改为文件2的n3~n4行,则二者相同)    change

(4)复制、删除、移动

$ cp

普通文件:该命令把它复制到指定的目标文件中

目录:需要使用-r选项,将整个目录下所有的文件和子目录都复制到目标位置

$ cp  -i  /home/ciee/m*.c  /home/liuzh

-i 是交互式选项,它会在复制文件之前询问用户是否覆盖已存在的目标文件。如果目标文件已存在,会提示用户是否覆盖。如果不希望进行交互式复制,可以省略 -i 选项。

-p把修改时间和访问权限也复制到新文件中

  • **-a:**此选项通常在复制目录时使用,它保留链接、文件属性,并复制目录下的所有内容。其作用等于dpR参数组合。
  • **-f:**覆盖已经存在的目标文件而不给出提示。
  • **-r :**若给出的源文件是一个目录文件,此时将复制该目录下所有的子目录和文件。递归
$ rm

删除每个指定的文件,默认情况下,它不能删除目录,并且无法恢复。

$rm  -r *
(删除当前目录下除隐含文件外的所有文件和子目录。危险!)

-f 表示强制删除,无需确认。

$ mv

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

$ mv ex3  new1          (将文件ex3改名为new1) 
$ mv  /home/ciee/*   . 
	将目录/home/ciee中的所有文件移到当前目录(用“.”表示)中

(5)文件内容统计

$ wc

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

输出格式:行数 字数 字节数 文件名

$ wc -lcw  mfile  m2 
  • -l 选项表示只显示行数。 line
  • -c 选项表示只显示字节数。 ctype
  • -w 选项表示只显示字数。 write

三、Linux目录及其操作

1、目录和路径名

(1)目录概念

1-1 树形目录结构
  • I节点:起文件控制块作用。在I节点中存放该文件的控制管理信息。每个文件有唯一的I节点。
  • 文件目录:文件控制块的有序集合。文件控制块是文件目录中的目录项。
  • 目录文件:完全由目录项构成的文件。
1-2 根目录
  • /bin: 包含二进制(binary)文件的可执行程序。
  • /sbin:中存放用于管理系统的命令。 这个目录下的linux命令通常由系统管理员使用,对系统进行维护。
  • boot:用于存放引导系统时使用的各种文件,如LILO等。
  • /etc: 目录非常重要,它包含许多Linux系统程序配置文件(如密码文件/etc/passwd、/etc/profile等)。
  • /root: 是超级用户的目录。
  • dev:包含标示设备的特别文件。
  • home: 是用户起始目录的基础目录。通常,用户的主目录就保存在该目录中。
  • /lib: 保存程序运行时使用的共享库。 二进制文件的库库文件。
  • lost+found:存放系统非正常关闭时正在处理的文件,以便下次系统启动时予以恢复。
  • mnt:中存放安装文件系统的安装点。
  • proc: 实际上是一个虚拟文件系统。
  • tmp: 用于存放程序运行时生成的临时文件。
  • usr: 中包含了多个子目录,其中保存系统上一些最重要的程序,可供所有用户共享。
  • var:包括系统正常运行时要改变的数据。
1-3 工作目录/主目录
  • 工作目录:以后不作具体指定情况下,所访问的文件都是该目录中的文件。
  • 用户主目录:为新用户建立帐户时系统指定的工作目录。包含子目录、数据文件,以及用于注册环境的配置文件。

(2)路径名

2-1 绝对路径名
  • 以根目录为起点的路径名。
  • 总是以斜线字符(/)开头
  • 外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传
2-2 相对路径名
  • 相对当前工作目录的路径名

  • eg——当工作目为 /home/yuxine/homework

    绝对路径:/home/yuxine/homework/coding/add.c

    相对路径:coding/add.c

  • (.)表示目录自身 (…)表示父目录

2、常用目录操作

(1)创建和删除

$ mkdir

创建目录

$ mkdir  -p  -m  750  bin/os_1   
//同时建立两个目录:bin和它的子目录os_1,权限设置为文件主可读、写、执行,同组用户可读和执行,其他用户无权访问。 

-p 选项表示递归创建目录,即如果某个父目录不存在,也会一并创建。

-m 选项用于设置新创建目录的权限。= --mode

$ rmdir

删除目录

子目录被删除之前应该是空目录。

$ rmdir  -p  bin/os_1

-p 选项表示递归删除目录。如果删除 bin/os_1 后,其父目录 bin 变为空目录,那么 rmdir 会尝试删除 bin。同样,如果删除 bin 后,其父目录也变为空目录,那么 rmdir 会继续尝试删除父目录。

(2)改变和显示

$ cd

向上移动两级 cd …/…

主目录 cd

$ pwd

显示出当前工作目录的绝对路径

$ ls

列出指定目录的内容ls

-a–all 显示指定目录下所有子目录和文件(包括隐藏)

-F–classify 在列出的文件名后面加上不同的符号,以区分不同类型(属性)的文件

​ / : 目录

​ *:可执行的

​ @ :符号链接文件

​ |:管道文件

​ =:socket文件

-l 以长格式显示文件的详细信息 = ls -l

-C 多列形式,整洁容易读

-i查看文件的iNode号(I节点号)

-R若目录下有文件,则以下之文件亦皆依序列出。

文件类型与权限  链接数   文件主   文件组  文件大小  建立或最近修改的时间   文件名
-rw-r--r--       2     ubuntu   group     809       12月 27 2008      mfile2
-   r   w   -   r   -   -   r   -   -
1   2   3   4   5   6   7   8   9   10
  • 1:文件类型
- 普通文件l 符号链接文件d 目录b 块设备文件
c 字符设备文件s 套接字文件(socket)p命名管道文件(pipe)
  • 234:文件主

  • 567:组用户

  • 8910:其他用户

(3)链接

为一个文件起多个名字

3-1 硬链接

一个文件登记在多个目录中(两个名字,存放相同内容)

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

  • 限制

    1:不能对目录文件硬链接

    2:不能在不同的文件系统之间

3-2 符号链接(软链接)
  • 类似指针,是一个(文本文件),包含要连接的文件的(路径名)
  • 符号链接是新文件,具有不同的I节点号
  • 可以对目录;不同文件系统之间做符号链接
  • 删除源文件,不会删除链接
  • 符号链接大小:路径字节数
  • lrwxrwxrwx …… /etc/motd**->**/original_file
$ ln

创建链接: ln [选项] 源文件 [链接文件]

# ln  -s  /home/ubuntu/mub1  /home/liuzh/abc

-s 表示创建符号链接(软链接)。 soft

  • 注意,有源文件f1,硬链接f2,软连接f3
  • 删除f2或者f3,对其他文件无影响
  • 删除f1,对f2无影响,f3有影响
  • 删除f1和f2,整个文件被真正删除

(4)改变文件/目录存取权限

4-1 用户和权限

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

$ chmod

改变文件或目录的存取权限(文件主/超级用户)

  • 以符号模式改变权限

    chmod  [选项]... MODE[,MODE]... 文件...
    其中,MODE:  [who]   [操作符号]  [mode]
    #chmod a+x ex1    //所有用户 ex1 可执行
    #chmod  u=r,ug=x  ex1   //用户可读,用户和组用户可执行ex1
    

    【who】

    外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

    【操作符号】

    外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

    【mode】

    外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

  • 以绝对方式改变

    chmod  [选项]... OCTAL-MODE  文件...
    #chmod 0754 ex1     //第一位,1有相应权限,0没有
    //后三位   r w x |r – x| r – –
               1 1 1 |1 0 1 |1 0 0       【八进制】
               4+2+1 | 4 + 1|  4
                 7      5     4          【十进制】
    

-R递归地应用权限更改,包括目录中的所有文件和子目录

$ umask

设置限制新建文件(默认文件)权限的掩码

umask  [-p] [-S]  [mode]
///mode以数字开头,就被解释为八进制数字;否则,就被解释为符号方式。
  • 查看当前掩码的设置

    $ umask -S

    输出:u=rwx,g=rwx,o=rx

    $ umask -p (-p可有可无,没有-p输出0002)

    输出:umask 0002(使用八进制数值来设置mode)

  • 取消组用户的写权限、其他用户的读、写和执行权限

    ​$ umask u=rwx,g=rx,o=

  • 可以使用八进制数值来设置mode

    $ umask 0037

umask 的主要目的是确保新创建的文件和目录具有合理的默认权限,而 chmod 则用于在需要时更改特定文件或目录的权限。

(5)改变用户组和文件主

$ chgrp

改变文件或目录所属的用户组

chgrp  [选项]  GROUP  FILE

-v或--verbose 显示指令执行过程

$chown

改变某个文件或目录的所有者和/或所属的组

chown  [选项]  OWNER:GROUP  FILE

(6)联机帮助

$ man

格式化并显示联机帮助手册页

$ help

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

help `-s` cd       
//-s是只显示cd: cd [-L|[-P [-e]][-@]] [目录]

四、VIM与进程

1、VI编辑器

(1)vi编辑器是什么

“Visual interface” 文本编辑器

全屏幕交互式编辑程序 只有命令没有菜单

(2)vi三种工作模式

  • 命令模式

  • 插入模式

    插入命令i、附加命令a 、打开命令o、替换命令s、取代命令r、修改命令c

  • 末行模式

    外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

2、vi基本命令

(1)进入退出

$ vi filename

(2)定位

命令作用
h、方向左键、Back Space左移一个字符 (常用)
j、方向下键下移一行 (常用)
k、方向上键上移一行(常用)
l、方向右键、空格键右移一个字符(常用)
$移至行尾 (常用)
0(数字)、^移至行首 (常用)
回车键移至下行行首
ctrl +b 、PgUp向后移动一页 (常用)
ctrl +f、PgDn向前移动一页 (常用)
ctrl +u向后移动半页
ctrl +d向前移动半页
G移至文章最后(常用)
nG 、:nn表示数字,移动到文件的第n行 (常用)
gg移动到文件的第一行 (常用)
n(回车)n表示数字,光标向下移动n行 (常用)

(3)删除复制粘贴

命令作用
x, X在一行中,x向后删除字符,X向前删除字符 (常用)
nxN表示数字,连续向后删除n个字符
dd (ndd)删除光标所在一整行(n行)(常用)
d1G删除光标所在位置到第一行所有的数据(常用)
dG删除光标所在位置到最后一行所有的数据 (常用)
D删除光标所在处到行尾(常用)
:5,10d删除第五到第十行(常用)
yy复制光标所在一整行(常用)
nyyn表示数字,复制光标所在的向下n行(常用)
y1G复制光标所在位置到第一行所有的数据(常用)
yG复制光标所在位置到最后一行所有内容 (常用)
p,Pp将已复制的内容粘贴到光标下一行,P相反(常用)
J将光标所在行与下一行结合在一起(常用)
u撤销前一个操作 (常用)
ctrl + r重做前一个撤销操作(常用)
.重复前一个动作(常用)

(4)搜索与替换

命令作用
/string向光标之下搜索指定字符串 (常用)
?string光标之上搜索指定字符串(常用)
n搜索指定字符串的下一个出现位置(常用)
N搜索指定字符串的上一个出现位置(常用)
:n1,n2s/old/new/g在n1-n2行内,替换指定字符串(常用)
:%s/old/new/gc全文替换指定字符串,替换前用户确认(常用)
:10,15s/and/AND/gc   //将 10 到 15 行之间的『and 字符串』改为『AND 字符串』,替换前用户确认
:1,$s/and/AND/g       //1行到最后一行的替换

(5)编辑模式命令

命令作用
i, Ii从当前光标所在处插入,I从当前所在行的第一个非空格处开始插入(常用)
a, Aa从当前光标所处下一个字符开始插入,A从当前所在行的最后一个非空格处开始插入(常用)
o, Oo在当前光标所在的下一行插入一个新行,O相反(常用)
r, Rr会替换光标所在的那一个字符,R会一直替换光标所在的字符(常用)

(6)命令模式命令

命令作用
:w保存修改(常用)
:w new_filename保存为指定文件
:wq,:x保存修改并退出vi(常用)
ZZ保存修改并退出vi
:q!不保存修改退出 (常用)
:set nu///取消是 set nonu设定行号

3、进程

(1)进程概念

1-1 多道程序设计
  • 顺序程序活动特点

    ** 顺序性、封闭性、可再现性**

    ​ 资源浪费、效率低下

  • 多道程序设计

    ​ 在内存中同时存放多道程序,它们在管理程序的控制下交替地在CPU上运行。

    ​ 大大改进系统性能,吞吐量增加

  • 程序并发执行的特征

    外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

1-2 进程概念
  • 进程定义

    外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

  • 进程基本特征

    外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

(2)进程状态

2-1 进程的基本状态

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

2-2 进程的状态转换

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

2-3 进程族系

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

(3)进程管理命令

3-1 查看进程状态
$ ps

查看进程状态

ps  [选项]

-ef可以显示系统中所有进程的全面信息

aux显示所有终端上所有用户的有关进程的所有信息

-l 列出活动进程的详细状况;

-c 列出活动进程的优先级

--forest显示进程调用层次关系

$ pstree树形缩进形式显示进程调用关系;

$ top 动态显示进程变化情况,默认三秒更新一次;

-u显示用户进程信息

$ top*

实时显示 process 的动态。

使用权限:所有使用者

3-2 进程管理
$ kill

终止一个进程的运*

kill  [-s  信号|-p ]  [-a]  pid
kill  -l [信号]    //看特定信号的编号,不杀死
【信号】默认:15
       强行杀掉进程:9
  • -s 信号:指定要发送的信号。-s TERM 表示发送终止信号给进程。如果省略 -s 选项,则默认发送终止信号。
    TERM(终止)、HUP(挂起)、INT(中断)】
  • -p:显示要发送的信号而不发送它。这个选项用于预览将要发送的信号,而不实际影响进程。
  • -a:发送信号给所有具有相同进程组ID的进程。通常,kill 只发送信号给指定PID的进程,但使用 -a 选项将信号发送给整个进程组。
  • pid:指定目标进程的进程ID(PID)。可以提供一个或多个PID,用空格分隔。
kill -s TERM 1234
//这将向PID为1234的进程发送终止信号。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

kill -l 用于列出系统支持的信号,不会发送信号,只是显示信号的信息。

$ sleep

两条命令执行之间停顿指定的时间

$ nice

设定进程的nice值。

但一般用户只能设定正值,从而主动降低其优先级,

只有特权用户才能把nice的值置为负数。

nice  【选项】【命令】
$ nice  vi  &   //设置默认优先级
$ nice –n 5 sleep 300&     //&后台
& sudo nice –n -10 sleep 300&
$ nohub

忽略挂起信号对命令的影响,而继续运行指定的命令

nohup  命令 [参数]
$ wait

等待指定的进程,并返回其终止状态

wait  [n]
//n可以是进程的ID或者作业描述符。
# sleep  20  &	//后台运行sleep 20,屏幕上打印出 [1] 10472
# wait  10472	//wait命令可以使sleep 20执行完

(4)其他常用命令

4-1 磁盘使用情况统计
$ df

报告文件系统中占用磁盘空间的情况

-a把不占用磁盘空间的文件系统也列出来

-h:以人类可读的方式显示文件大小,使用 K(千字节)、M(兆字节)、G(吉字节)等单位**

-i或--inodes 列出 inode 资讯,不列出已使用 block

$ du

统计出每个目录占用磁盘空间的情况

可以逐级进入

-h:以易读的方式显示文件大小,使用 K(千字节)、M(兆字节)、G(吉字节)等单位

-s表示summarize,仅显示统计量

$ free

显示内存状态。

free指令会显示内存的使用情况,包括实体内存,虚拟的交换文件内存,共享内存区段,以及系统核心使用的缓冲区等。

$ lsmod

显示已载入系统的模块。

执行lsmod(list modules)指令,会列出所有已载入系统的模块。Linux操作系统的核心具有模块化的特性。

4-2 文件压缩和解压缩
$ gzip

对文件进行压缩和解压缩

gzip  [选项] [name...]   

扩展名是【.gz】保持原有的存取权限、访问与修改时间。

没有选项压缩

  • -d:表示解压缩(decompress)。这个选项告诉 gzip 对文件进行解压操作。
  • -v:表示详细模式(verbose)。这个选项告诉 gzip 在执行操作时显示详细信息,包括解压缩的进度和结果。
  • -l显示压缩文件信息,不执行压缩操作
$ zip

压缩

$ unzip

对ZIP格式的压缩文件进行解压缩。这种格式的压缩文件带有后缀【.zip】

//显示有关压缩文件的信息,但不作解压缩:
$ unzip  -v  chapter1.zip

-v显示信息,不解压缩操作

没有选项解压缩

参数说明:

  • -P<密码> 使用zip的密码选项。
  • -d<目录>指定文件解压缩后所要存储的目录
$ tar*

后缀【.tar】

解压:tar xvf 【文件名】

压缩:tar cvf 【压缩后的文件名】 【压缩前的文件】

参数说明:

  • -c或–create 建立新的备份文件。
  • -C<目的目录>或--directory=<目的目录> 切换到指定的目录。
  • -x或--extract或--get 从备份文件中还原文件。
  • -f<备份文件>或--file=<备份文件>指定备份文件。
  • -v或--verbose 显示指令执行过程。
  • -z或--gzip或--ungzip 通过gzip指令处理备份文件。

五、Linux下的c程序

1、gcc编译系统

$ gcc

(1)文件名后缀

文件名后缀文 件 类 型
.cc源文件
.C .cc .cp .cpp .c++ .cxxC++源文件
.hc/c++头文件

(2)c语言编译过程

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

(3)gcc命令行选项

$ gcc  f1.c f2.c  (针对C语言源程序)

执行完后生成默认可执行文件a.out

3-1 gcc选项——预处理选项

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

3-2 gcc选项——编译选项
选 项功 能
-c只生成目标文件【.o】不进行连接。用于对源文件的分别编译
-S只进行编译,不做汇编,生成汇编代码文件格式,其名与源文件相同,但扩展名为.s
-o file将输出放在文件file【可执行文件】中。如果未使用该选项,则可执行文件放在a.out中
-g指示编译程序在目标代码中加入供调试程序gdb使用的附加信息
-v在标准出错输出上显示编译阶段所执行的命令,即编译驱动程序及预处理程序的版本号

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

gcc mfile**.c** sq**.c** -o meng1 也可以

$ 编译静态库ar*
$ ar  -crv  libadd.a  add.o
//ar 打包静态库,将 add.o 打包成 libadd.a,
参数 [-crv] :–c表示建立备存文件,- r表示将文件插入备存文件中,-v表示程序执行时显示详细的信息。

$ gcc  main.c  -L./  libadd.a  -o  main2
//使用静态库 libadd.a编译main.c, [-L./] 表示将当前目录加到静态库的搜索路径
$ 编译动态库*
/(与上面的不同)异同:动态库和静态库一样也是函数的二进制的集合,但动态库在程序运行的时候动态加载到内存,而静态库在编译时期就整合到最后的可执行文件中。
$ gcc -fPIC -c add.c -o add.o1. 编译位置无关的目标文件 add.o,因为动态库动态加载到内存中的位置不确定,所以需要编译位置无关
$sudo gcc -shared add.o -o /usr/lib/libadd.so2. 打包成动态库, 如果不加sudo会提示没有权限,如果不指定/usr/lib/文件夹,会在执行时提示error while loading shared libraries: libadd.so: cannot open shared object file: No such file or directory
$sudo gcc -o main3 main.c -L /usr/lib/ -ladd3. 编译
$ ./main34. 执行
3-3 gcc选项——优化程序选项

对中间代码的优化

针对目标码生成的优化

3-4 gcc选项——连接程序选项
gcc test.cpp -o test -lstdc++  

-lstdc++用来通知链接器链接静态库 libstdc++.a。为了编写更加健壮和可移植的代码.

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

2、gdb程序调试工具

程序错误分类

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

gdb

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

(1)启动gdb和查看内部命令

//编译程序时候需要使用-g选项
$ gcc  -g  prog.c  -o  prog  

启动gdb

(1)以一个可执行程序作为gdb的参数:
$ gdb  prgm
(2)同时以可执行程序和core文件作为gdb的参数:
 $ gdb prgm  core

(2)显示源程序和数据

2-1 显示和搜索源程序
$ list

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

模式搜索
2-2 查看运行时数据
$ print
print  i (或p  i)   
//显示当前变量i的值。
print  i*j  (或p  i*j)  
//将根据程序当前运行的实际情况显示出i*j的值。

gdb运算符
  • &

    地址

  • { type }adrexp

    type数据类型 adrexp存放地址

  • @

    print array[3]@5 打印从array第三个元素开始的5个数组元素的数值。

  • file :: var

    表示文件file(或者函数function)中变量var的值

输出格式

v由表示格式的字母(如o、x、d、u、t、f、a、i、c、s)和表示数据长度的字母(如b、w、h、g)组成。

(3)改变和显示目录或路径

$ directory

将给定目录dir添加到源文件搜索路径的开头,并且忽略先前保存的有关源文件和代码行位置的信息

directory  [dir]    
或者
dir   [dir]
$ cd
$ path

将一个或多个目录添加到目标文件搜索路径的开头

$ pwd
$ show directories

显示定义的源文件搜索路径

$ show paths

显示当前查找目标文件的搜索路径

(4)控制程序的执行

4-1 设置断点
$ break
4-2 显示断点
$ info
4-3 删除断点
$ delete
4-4 运行程序
$ run
4-5 单步跟踪和连续执行

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

4-6 函数调用
$ call
调用  call 【函数】
立刻退出  return 【函数】
运行完再退出  finish 【】

(5)其他常用命令

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

六、shell程序设计

1、shell概述

(1)什么是shell

Shell是系统的用户界面,提供了用户与内核进行交互操作的一种接口。它接收用户输入的命令并把它送入内核去执行。

​实际上Shell是一个命令解释器,它解释由用户输入的命令并且把它们送到内核。不仅如此,Shell有自己的编程语言用于对命令的编辑,它允许用户编写由shell命令组成的程序。Shell编程语言具有普通编程语言的很多特点,比如它也有循环结构和分支控制结构等,用这种编程语言编写的Shell程序与其他应用程序具有同样的效果。

(2)shell特点和类型

特点

●组合新命令很简单;

●提供了文件名扩展字符;

●可以直接使用shell的内置命令 ;

●允许灵活地使用数据流;

●结构化的程序模块;

●提供了在后台(&)执行命令 ;

●提供了可配置的环境;

●提供了一个高级的命令语言。

(3)shell建立和执行

建立

vi ex1.sh

执行
bash ex1.sh 参数
./ex1.sh 参数
//将shell脚本权限设置为可执行
$ chmod  a+x  ex1.sh  然后 ./ex1.sh
$ PATH=$PATH:•
$ ex2.sh     或者    $ •/ex1.sh

2、shell变量和算术运算

(1)简单shell

定义和赋值:=

引用:$变量名

如果在赋给变量的值中含有空格、制表符或换行符,应该用双引号把这个字符串括起来。

(2)数组

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

(3)位置参数

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

$ shift

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

$ set

为位置参数赋值

(4)预先定义的特殊变量

$#

除脚本名外,命令行上参数的个数

$?

上一条前台命令执行后的返回值(也称“退出码”等)

$

当前进程的进程号

$!

上一个后台命令对应的进程号

$*

命令行上实际给出的所有实参

“a b c”

$@

和*类似

“a” “b” “c”

(5)环境变量

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

$ env
$ export

(6)算术运算

$ let

let “j=i*6+2” 等价于

((j=i*6+2))

3、输入输出及重定向

(1)输入/输出

$ read

从键盘上读取数据,然后赋给指定的变量

$ echo

(2)重定向

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

看实验!

4、特殊字符和命令语法

(1)引号

双引号

(除$、倒引号(`)和转义字符(\)外)均作为普通字符对待。

单引号

所有均为普通字符!

倒引号

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

(2)注释,管道线,后台命令

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

(3)命令执行操作符(||&&)

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

(4)复合命令

{}成组命令只在本shell内执行命令表,不产生新的进程

()成组命令在新的子shell内执行,要建立新的子进程。

5、程序控制结构

看实验!!!!

(1) if

if [    ]

             then ......

elife []

              then.......

else
 
                .....

fi

(2)条件测试

数值

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

字符串

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

文件

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

逻辑运算

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

(3)while

while(条件)

do

           命令

done       满足条件就执行

(4)until

until(条件)

do

        命令

done    不满足条件就执行

(5)for

(1)
for var in 【值/正则表达式】
do
           命令
done

(2)
for ((i=1;i<=$1;i++))
do
      命令
done

(6)case

case 字符串 in
模式字符串1) 
          命令
          ;;
          。。。。。。
模式字符串n) 
          命令
          ;;
esac

(7)break、continue、exit

break[n]:n是要终止循环的层数

6、函数和内置命令

(1)shell函数

function  函数名()
{
命令表
}

(2)内置命令

$ eval

连接多个命令

$ readonly
命令说明
$ readonly string=‘ok’使用readonly命令定义一个只读变量string,并且将其值初始化为’ok’;
$ readonly使用readonly命令显示系统中所有的已经定义的只读变量;
$ readonly string=‘ok’使用readonly命令定义一个只读变量string,并且将其值初始化为’ok’;
$ type

显示指定命令的类型,判断给出的指令是内部指令还是外部指令

7、脚本调试**

(1)解决环境设置问题

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

(2)解决脚本错误问题

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

七、Linux内核、网络、系统管理、软件安装

1、Linux内核结构

Linux操作系统是采用整体结构的操作系统

(1)进程管理

进程具有一段可执行的程序、专用的系统堆栈空间、私有的“进程控制块”(即task_struct数据结构)和独立的存储空间

init 进程是系统所有进程的起点

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

$ fork

创建新进程

$ clone
$ wait3 or wait4
$ exit
$ execve

(2)文件系统

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

(3)内存管理

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

(4)设备管理

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

(5)中断、异常和系统调用

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

2、网络管理

(1)基本命令

$ ping**

测试本机与远程主机的通信路径是否畅通

ping [选项]... 目的地
$ ifconfig**

配置一个网络接口,即指定一个网络接口的地址,或者设置网络接口的参数

ifconfig [接口名]  
或者  
ifconfig 接口名 选项|地址

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

$ netstat

对TCP/IP网络协议和连接进行统计,显示网络状态

统计内容包括:网络连接情况、路由表信息、接口统计等。常用来检查路由选择

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

参数说明***

-a或–all 显示所有连线中的Socket。

-A<网络类型>或–<网络类型> 列出该网络类型连线中的相关地址。

-c或–continuous 持续列出网络状态。

-C或–cache 显示路由器配置的快取信息。

-e或–extend 显示网络其他相关信息。

-F或–fib 显示FIB。

-g或–groups 显示多重广播功能群组组员名单。

-i或–interfaces 显示网络界面信息表单。

-l或–listening 显示监控中的服务器的Socket。

-M或–masquerade 显示伪装的网络连线。

-n或–numeric 直接使用IP地址,而不通过域名服务器。

-N或–netlink或–symbolic 显示网络硬件外围设备的符号连接名称。

-o或–timers 显示计时器。

-p或–programs 显示正在使用Socket的程序识别码和程序名称。

-r或–route 显示Routing Table。

-s或–statistice 显示网络工作信息统计表。

-t或–tcp 显示TCP传输协议的连线状况。

-u或–udp 显示UDP传输协议的连线状况。

-v或–verbose 显示指令执行过程。

-V或–version 显示版本信息。

-w或–raw 显示RAW传输协议的连线状况。

-x或–unix 此参数的效果和指定"-Aunix"参数相同。

–ip或–inet 此参数的效果和指定"-Ainet"参数相同。

$ route

为数据传递所需的网络连接配置路由信息

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

3、系统管理概述

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

4、用户和工作组管理

(1)用户管理

1-1 与用户相关的文件
passwd文件

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

密码字段使用一个“x”来代替,将/etc/shadow作为真正的密码文件

shadow文件

利用/etc/shadow文件存放用户账户的加密密码信息和密码的有效期信息

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

1-2 建立和删除用户账户

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

# useradd
useradd [选项] 用户名
# userdel
userdel  [-r] 用户名

-r把用户主目录及其下面的所有内容都删除

  • 查封账户方式:

    ​ 使用vi编辑/etc/passwd(或/etc/shadow)文件,在相关用户记录的密码字段的首字符前加上符号“*”

(2)工作组管理

2-1 与工作组相关的文件
/etc/group文件

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

2-2 添加和删除工作组
# groupadd

添加

# groupdel

删除

# usermode
usermode –g 【组名】 【用户名】
//把用户加到某一组

#usermode –d 目录名 用户名
//更改用户主目录

5、linux安装

sudo apt-get update

八、其他命令

$ uname

显示电脑以及操作系统的相关信息

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

$ file

辨识文件类型

九、简答

  • 什么是shell

    ​ Shell是系统的用户界面, 提供了用户内核进行交互操作的一种接口。Shell是一个命令解释器,它接收用户输入的命令并把它送入内核去执行。

    ​ Shell有自己的编程语言,也有许多其他语言的特点,允许用户编写由shell命令组成的程序。

  • 什么是操作系统

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

  • 操作系统作用功能

    外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

  • Linux操作系统组成

Linux 操作系统由多个组件组成,这些组件共同协作以提供完整的操作系统功能。以下是 Linux 操作系统的主要组成部分:

  1. 内核 (Kernel):

    • Linux 内核是操作系统的核心部分,负责进程管理、内存管理、文件系统管理、设备管理中断处理、异常处理、系统调用等。它是操作系统的核心,负责直接与硬件进行交互。
  2. Shell:

    • Shell 是用户与内核交互的命令解释器。它允许用户通过命令行或脚本与操作系统进行通信。
  3. 文件系统 (File System):

    • Linux 文件系统负责管理和组织存储在硬盘上的数据。它提供了对文件和目录的组织、访问和管理。常见的 Linux 文件系统包括 ext4、XFS、Btrfs 等。
  4. 系统库 (System Libraries):

    • 系统库是一组为应用程序提供常用功能的软件库。这些库包括 C 库(glibc)、数学库、网络库等,为开发者提供了在应用程序中使用的标准功能。
  5. 系统工具 (System Utilities):

    • 系统工具是一组用于管理和维护系统的命令行工具。例如,ls 用于列出文件和目录,ps 用于查看进程信息,top 用于监控系统资源等。
  6. 图形用户界面 (Graphical User Interface - GUI):

    • Linux 支持多个图形用户界面,允许用户通过图形方式与系统交互。
  7. 网络协议栈 (Network Protocol Stack):

    • Linux 操作系统包含一个完整的网络协议栈,支持各种网络通信协议。这使得 Linux 成为服务器和网络设备的首选操作系统之一。
  8. 设备驱动程序 (Device Drivers):

    • 设备驱动程序是内核的一部分,用于与硬件设备进行通信。它们允许操作系统与各种硬件设备(如磁盘驱动器、网络适配器)进行交互。

这些组件一起形成了一个功能完备、灵活且可定制的操作系统,适用于各种场景,从服务器到嵌入式系统。

  • 进程是什么?

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

  • 进程的基本特征

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

  • 进程的几种状态,如何转换?

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

  • 进程优先级和调度策略

    外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

  • 27
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值