Linux学习总结

发布时间:2024年01月09日

一、操作系统概念

1、操作系统内核(kernel):操作系统本质是一组程序,用于管理计算机所有的活动以及驱动系统中的所有硬件。

2、操作系统的内核直接参考硬件规格写成,因此同一个操作系统不能再不一样的硬件架构下运行。

3、应用程序的开发都是参考操作系统提供的开发接口,所以应用程序只能在该操作系统上运行。

(一)内核功能至少应该具备的功能:

(1)系统调用接口:进一步利用硬件资源,便于同内核通信,有利于开发人员。

(2)程序管理:合理的利用cpu资源,即cpu调度机制。

(3)内存管理:控制系统的内存,提供虚拟内存功能,当内存不足时可以提供内存交换功能。

(4)文件系统管理:数据的输入和输出等,文件格式支持等。

(5)设备驱动:硬件厂商参考系统的提供的开发接口开发驱动程序。

二、Linux概念

1、Linux是一个内核,Linux+softwares+tools才是可安装的系统,称之为Linux distribution(Linux发行版),Linux主要应用环境包括网络服务器、工作站计算机、嵌入式系统和桌面计算机等。

2、套件管理方式分为两种:

(1)一种Debian的dpkg模式;第二种:Red hat的RPM模式;可以先学习RPM模式的Linux发行版,例如:red hat、suse等。再学习比较更为严谨的版本:Debian等。练习使用的centOS版本。

?3、Linux两种操作模式:一种是图形界面形式,即X window;一种是命令行界面,即command line。

4、先学习Linux最基础的架构:文件结构、命令模式与脚本(shell and shell script)、软件管理方式和资源与账号等,便于之后的学习和理解。

(一)Linux学习流程

1、首先学习Linux的安装与命令

2、Linux操作系统的基础技能:用户/用户组的概念、权限概念、程序的定义等。

3、必须学会Vi文本编辑器,所有的unix like系统上都有vi。

注意:linux下所有组件或者设备都是文件,因此一定要熟练掌握VI文本编辑操作。

4、Shell和shell脚本学习:正则表达式、管道命令、数据流重定向等。

5、必须学会软件管理员,自己会在Linux上安装软件。

6、网络基础的建立:IP概念、路由器概念等。

7、推荐学习网站,酷学园:study-area.org/network/network.htm

(二)Linux问题解决:

1、Linux自身的文件数据:/user/share/doc

2、利用Linux自身的日志文件查询错误信息:/var/log/目录下查看log file文件。

三、Linux常用命令学习

(一)Linux基础知识

1、命令界面转换为图形界面:输入命令startx或者init 5即可;图形界面切换到命令行界面:输入init 3即可;如果没有反应或者不行,直接重启即可(万能解决方法)。

(1)linux默认提供6个终端来让用户登录,切换方式使用Ctrl+Alt+F1-F6;Ctrl+Alt+F7是图形界面桌面。

2、命令行界面解释:

【admin@localhost?~】$ :其中admin表示当前用户的账号;@之后是主机名;~表示当前所在的目录(默认是当前用户的家目录);$表示用户提示符,linux中一般用户的提示符为$,root的提示符为#。

3、Linux命令、选项、参数用空格分隔,注意不论几个空格shell都视为一个空格。

4、tab命令:具有命令补全和文件补齐功能,使用方法:在命令后点击两次tab键,是命令补全功能;在一串命令的第二个命令以后使用,为文件补齐功能。

(二)文件属性

1、文件属性信息:文件属性信息组成包括:权限(前十一位)? 连接数? ?所有者? 用户组? ?文件大小? 修改日期? ?文件名

?(1)第一部分表示:文件类型和权限,第一个字母表示文件是目录(d),文件(-),或者连接文件(l)等;权限:文件所有者的权限,文件所属用户组的权限,其他人的权限,分别为可读(r)、可写(w)、可执行(x),execute。注意没有权限,就用-表示。

注意:第十一位"."表示的是支持ACL权限(访问控制列表)。其中加号+表示该文件具备ACL权限。它被设计为UNIX文件权限管理的一个补充。ACL允许你给任何的用户或用户组设置任何文件/目录的访问权限。即可以针对单一用户或用户组、单一文件或目录来进行读/写/执行权限的控制。

(2)第二部分连接数:表示文件目录树中有多少文件连接到该节点上。

(3)第三部分表示所属用户:root表示用户;

(4)第四部分表示所属用户组:root表示用户组;

(5)第五部分表示:文件大小,单位字节;

(6)第六部分表示:文件最后的修改日期;

(7)第七部分表示:文件名称。

2、文件类型

(1)目录的标识符为d(directory)。

(2)一般文件的标识符为-,主要包括:纯文本文件、二进制文件(可执行文件)、数据格式文件(特定格式的文件)。

(3)连接文件的标识符为l,类似windows下的快捷方式。

(4)设备与设备文件主要存放在/dev这个目录下,主要分为两种:

(4.1)块(block)设备文件:就是一些存储数据,已提供系统随机访问的接口设备,如硬盘、软盘等,标识符为b。

(4.2)字符设备文件(character):是一些串行端口的接口设备,例如键盘鼠标,标识符为c。

套接字(sockets):是数据接口文件,主要用在网络上的数据连接,进行通信,通常在/var/run目录下可以看到该文件。

(5)管道(FIFO,pipe)是一种特殊的文件类型,主要用来解决多个程序同时访问一个文件所造成的错误问题,标识符为p。类似于进程,解决并发问题。

注意:linux的可执行文件和windows的可执行文件的区别:只要权限中有x,就表示该文件可以执行,但是能不能执行成功,需要看文件中的内容。

?3、修改文件属性与权限

(1)chgrp:改变文件所属用户组;格式:chgrp [-R] 【所属群组】 【文件或目录】? 其中-R表示连同目录下的所有文件、目录。

注意:多个文件或者目录之间使用空格隔开。

(2)chown:改变文件所有者;格式:chown [-R] 账号名称 文件或目录;

注意:组中的用户格式:组.用户名。

(3)chmod:改变文件权限。

第一种改权限的方法:其中r为4,w为2,x为1。改变权限即可通过改其权限值之和即可。格式:chmod [-R] abc 文件或目录,其中abc分别为三种权限各自数值之和。其中,a表示user的权限之和,b表示group的权限之和,c表示others的权限之和。注意:没有权限设置为0

第二种该权限的方法:user用u表示,表示文件或目录的所有者,group用g表示,others用o表示,all用a表示;+表示加入,-表示除去,=表示设置。例如:chmod u=rwx,go=rz test.txt;chmod a+w test.txt:表示给所有用户加上写入的权限。

注意:不指定用户,相当于三种用户都添加该权限。例如:chmod +x t1.sh

4、目录和文件意义

(1)文件或目录具有可执行权限,表示可以用户可以切换到当前目录结构,否则无法进入该目录,进行任何操作。

注意:要开放目录给任何人浏览,应该至少要给与可读和可执行权限,即r和x。

5、特定目录含义:为保证linux文件目录的通用性和规范性,因此,制定了目录配置标准:FHS(filesystem hierarchy standard),FHS主要将目录树分为三层:

(1)/:表示根目录,与开机系统有关;

(2)/usr(unix software resource软件目录):与软件安装执行有关;

(3)/var:与系统运行过程有关。主要存放缓存、登录文件及某些软件运行所产生的文件。

特定目录含义:

(1)/usr(unix software resource软件目录)

(2)/opt(第三方软件)

(3) /etc (配置文件)

(4)/boot (开机和内核文件)

(5)/var/mail (邮件)

(6)/var/spool/news (新闻组)

(7)/var/run(程序相关文件)

(8)/var/lock(程序相关)。

(三)VIM使用方法

1、所有linux版本都有一套文本编辑器就是vi,其中,vim是高级版的vi。可以视vim为一种程序编辑器。

注意:Vi+文件名:即可进入vi的一般模式;无论文件存在与否。

2、vi分为3中模式:一般模式、编辑模式、命令行模式。

(1)一般模式:可以移动光标,删除字符或删除整行,复制或粘贴文件数据。

(2)编辑模式:一般模式通过按下“i,l,o,a,r”即可进入编辑模式;点击ESC,返回一般模式。注意:编辑模式可以插入或替换文件数据。

(3)命令行模式:输入“: /? ?”可以进入命令行模式,进行读取、保存文件等其他额外功能;点击ESC,返回一般模式。其中“?/? ?”可用于查找内容。

注意:用法如下:/word:表示向下查找word;?word:表示向上查找word。

3、vi常用命令

(1)vim或者vi编辑文档显示行号:进入命令模式,然后输入命令 set number 或 set nu。

(2)将光标移动到指定行,可以在命令模式下输入“:n”即可移动到指定行。

(3)删除所有文本内容,在命令模式 下输入“dG”即可。

(4)复制全部内容,在命令模式下输入“ggyG”即可。

(5)nyy中的n代表要复制的是光标后的几行内容,如果我把n改成2,那么我复制的就是光标后的2行的内容。

(6)ndd表示删除光标以下n行。

(7)gg:表示光标移动到文章开头;G:表示移动到文件结尾;

(8)vi编辑文本内容,在一般模式下按v可进入可视化命令,进行字符选择;大写V表示直接从光标处选到该行最后;Ctrl+v表示可视化块命令,进行字符块选择;

注意:在可视化模式下,可配合上下左右键进行选择;同时,Ctrl+v可视化块命令下可以查看缩进是否一致。

4、vi光标移动命令

注意:gg:表示光标移动到文章开头;G:表示移动到文件结尾;

移动到光标所在行行首:1) Home键;? 2) 数字0;? 3) 符号^;

移动到光标所在行行尾:1) End键;? 2) 符号$? ? ?

5、vi复制命令

6、vi编辑命令

?7、vi删除命令

(三)目录操作命令

通过目录操作命令,熟练掌握目录的切换、增删改查。

注意:目录的x权限表示用户能否进入该目录成为工作目录,因此,对目录的各种操作至少要有x权限。

1、切换目录命令:cd(change? directory

使用方法:cd? ?[相对路径或绝对路径]? ;“.”表示该层目录;”cd . .”表示上一层目录。

2、显示当前目录:pwd;

(1)查看当前目录文件命令:ls,使用方法:-a表示:全部文件,包括隐藏文件(以点开头的文件).

3、创建目录命令:mkdir,用方法:mkdir [-mp] 目录名称;其中,参数m表示自定义目录权限,否则是默认权限;-p 确保目录名称存在,不存在的就建一个,即存在多级目录,多级目录不存在,则创建多级目录。

(1)touch命令用于修改文件或者目录的时间属性,包括存取时间和更改时间。若文件不存在,系统会建立一个新的文件。

注意:touch? 文件名:如果文件不存在,新建文件。

4、 删除目录命令:rmdir:删除一个空的目录。(注意只能删除空的目录)

使用方法:rmdir [-p] 目录名称;-p 是当子目录被删除后使它也成为空目录的话,则顺便一并删除。

(1)删除文件或目录命令:rm,使用方法:rm [-fir] 文件或目录;

?5、复制目录或文件命令:cp,使用方法:cp [-adfilprsu] 源文件(source) 目标文件(destination);

(1)源文件:制定源文件列表。默认情况下,cp命令不能复制目录,如果要复制目录,则必须使用-r选项,实现该目录下所有的子目录和文件复制。

(2)目标文件:指定目标文件。当“源文件”为多个文件时,要求“目标文件”为指定的目录。多个文件空格间隔。

6、移动目录或文件命令:mv,使用方法:mv [-fiu] source destination;

注意:可以利用mv命令以重命名的方式将文件或目录隐藏。

?(四)文件操作命令

1、查阅文件内容命令:cat,使用格式:cat [-AbEnTv]? 文件;

注意:-n表示打印行号,连同空白行也会有行号。注意:dev/null:在类 Unix 系统中,/dev/null 称空设备,是一个特殊的设备文件。清空文件内容命令:cat /dev/null > /etc/test.txt。

2、添加行号显示文件内容命令:nl,使用格式:nl? ?文件名;

3、文件描述符:对于linux内核而言,所有打开的文件都通过文件描述符引用。文件描述符是一个非负整数。当打开一个现有文件或创建一个新文件时,内核向进程等返回一个文件描述符。按照惯例,unix系统shell把文件描述符0与进程的标准输入关联,文件描述符1与标准输出关联,文件描述符2与标准错误关联。

4、重定向命令:

(1)输出重定向命令:将一条命令执行结果(标准输出,或者错误输出,本来都要打印到屏幕上面的)重定向其它输出设备(文件,打开文件操作符,或打印机等等)。

注意:其中>表示:以覆盖的方法将数据输出到指定的文件或设备上;>>表示:以累加的方法将数据输出到指定的文件或设备上。

(2)输入重定向命令:命令默认从键盘获得的输入,改成从文件,或者其它打开文件以及设备的输入。

?5、文件或目录查询命令:locate [-ir]? keyword;keyword表示关键字,参数说明:i表示忽略大小写;r表示后面可以接正则表达式的显示方式。

注意:locate是从数据库查询文件,因此一些新建的文件会查询不到,需要更新数据库之后才可以。更新数据库命令:updatedb;

6、在指定目录下查找文件:find? [path]? ?[option]? ?[action];其中,?path 为要查找的路径,如果为空字串则使用目前路径。

(1)时间参数说明:参数说明:时间参数共有三个:-atime、-ctime、-mtime;

-mtime n :n为数字,意义为在n天之前的一天之内被更改过的文件;

-mtime +n:列出在n天之前(不包含n天本身)被更改过的文件名;

-mtime -n:列出在n天之内(含n天本身)被更改过的文件名;

(2)与用户或用户组名有关的参数(用于查找用户的文件)

-uid n:n为数字,这个数字为用户的账号id,即UID。

-gid n:n为数字,这个数字是用户组名的id,即gid;

-user name:name为用户账号的名称;

-group name:name为用户组名。

-nouser:寻找文件的所有者不存在/etc/passwd的文件。(适用于某用户被删除,查找他创建的文件)。

-nogroup:寻找文件的所有用户组不存在于/etc/group中的文件。

(3)与文件权限及名称有关的参数

-name filename:查找文件名为filename的文件;

-size [+-]size:查找文件大小比size大或小的文件,c:代表byte。K代表1024bytes;

-type type:查找文件类型为type的文件,类型:一般正规文件(f)、设备文件(b、c),目录(d)、连接文件(l)、socket(s)、FIFO(p)。

-perm mode:查找权限刚好等于mode的文件,例如:4755;

-perm -mode:查找文件权限必须全部包含mode的权限的文件。

-perm +mode:查找文件权限包含任一mode的权限的文件。

(4)其他操作命令

-exec command:command为其他命令,-exec后面可再接其他的命令来处理查找到的结果。例如:find / -perm +7000 -exec ls -l {}\;

四、Linux磁盘操作

?(一)磁盘容量

1、df 命令是 “Disk Free” 的首字母组合,它报告文件系统磁盘空间的使用情况。它显示一个 Linux 系统中文件系统上可用磁盘空间的数量。df命令很容易与du命令混淆。它们的用途不同。df命令报告我们拥有多少磁盘空间(空闲磁盘空间),而du命令报告被文件和目录占用了多少磁盘空间。

(1)使用格式:df [-ahikHTm]? [目录或文件名]

参数说明:h为以GB、MB、KB等格式自行显示。例如:df -h

2、du:评估文件系统的磁盘使用量。查看目录或者文件所占空间的大小。

(1)使用格式:du [-ahskm] 文件或目录名称,其中s表示列出总量而已。-h表示以K,M,G为单位,提高信息可读性。

(二)Linux添加磁盘操作

一块新的硬盘插到计算机上是没有办法直接使用的,要先对硬盘分区格式化,完成挂载之后才能使用。

(一)磁盘分区基本知识

1、使用MBR分区表的硬盘最多只能划分4个主分区磁盘,如果分区的硬盘容量超过2TB了,则需要使用GPT分区表类型,是一种新的硬盘分区标准;MBR的意思是主引导记录,它有自己的启动器,也就是启动代码,GPT是一个正逐渐取代MBR的新标准,它由UEFI辅住而形成的。

(1)UEFI,全称Unified Extensible Firmware Interface,即“统一的可扩展固件接口”,是一种详细描述全新类型接口的标准,是适用于电脑的标准固件接口,旨在代替BIOS(基本输入/输出系统)。

(2)fdisk 命令最大只能划分 2T 大小的磁盘,超过 2T 大小的磁盘需要使用 parted 命令。

2、MBR分区方式:主分区最多只能有4个,或者3个主分区和1个扩展分区;在扩展分区上我们可以创建多个逻辑分区,分区编号:主分区1-4 ,逻辑分区数量不限。

(1)扩展分区可以是0个,最多是1个;真正存放数据的是主分区和逻辑分区,大量数据都放在逻辑分区中

(2)主分区:主要是用来启动操作系统的,它主要放的是操作系统的启动或引导程序,/boot分区最好放在主分区上

(3)扩展分区不能使用的,它只是做为逻辑分区的容器存在的;我们真正存放数据的是主分区和逻辑分区,大量数据都放在逻辑分区中;创建了扩展分区之后,还需要在扩展分区上创建逻辑分区,硬盘才能使用。

(4)如果你用的是GPT的分区方式,那么它没有限制主分区个数。

(二)分区命令:fdisk??

查看磁盘分区:fdisk;使用格式:fdisk [-l] 设备名称,q表示退出fdisk;w表示操作生效。

1、查看是否有硬盘没有分区:fdisk -l;

2、对未分区的硬盘分区:fdisk? 设备名称;例如:fdisk /dev/sdc;

(1)输入m,可以查看有哪些命令操作;

(2)输入p,可以查看硬盘当前分区情况;

(3)输入n,表示新建一个分区;再输入p,表示创建一个主分区;在输入主分区的编号:1-4;再设置主分区的大小:主分区扇区的开始位置默认从1开始,主分区的结束位置。

注意:其他主分区创建方法一样,可以只创建主分区即可。如果要创建扩展分区,一定要在扩展分区上创建逻辑分区才能使用。

(4)输入p,查看已经创建好的分区;

(5)输入w,对创建好的分区进行写入保存。

3、分区创建好之后,需要对分区进行格式化,即指定硬盘的文件系统类型。

注意:因为每种操作系统所设定的文件属性/权限并不相同, 为了存放这些文件所需的数据,因此就需要将分区槽进行格式化,以成为操作系统能够利用的『文件系统格式(filesystem)]。

(1)磁盘格式化命令:mkfs,使用格式:mkfs [-t 文件系统格式] 设备文件名? 等价于mkfs.文件系统格式名? ?设备文件名。

(2)常用的文件系统,其中包括ext、ext2、ext3、ext4、JFS、XFS、ReiserFS等

4、磁盘格式化之后需要挂载才能正常使用。

(1)创建挂载目录:mkdir? 目录名称;例如:mkdir? /gzd

(2)挂载分区:mount? ?设备文件名? ?挂载目录;例如:mount? ?/dev/sdc1? ?/gzd

(3)可以通过磁盘可用命令查看是否成功:df? 。

5、卸载分区命令:umount? 设备文件名;例如:umount? ?/dev/sdc1。

注意:分区卸载了,其实还可以挂载,而且数据还会在的。可以使用fdisk命令对分区进行删除。

6、删除分区:fdisk? 设备文件名;操作和创建分区类似。

五、文件与文件系统的压缩与打包

1、首先要弄清两个概念:打包和压缩。打包是指将一大堆文件或目录变成一个总的文件;压缩则是将一个大的文件通过一些压缩算法变成一个小文件。

2、为什么要区分这两个概念呢?这源于 Linux 中很多压缩程序只能针对一个文件进行压缩,这样当你想要压缩一大堆文件时,你得先将这一大堆文件先打成一个包(tar命令),然后再用压缩程序进行压缩(gzip bzip2命令)。tar包文件的命令通常都是以.tar结尾的。

3、将多个文件或目录打包在一起,可通过调用gzip或zip 实现压缩、解压的命令,tar不仅可以对多个文件打包,还可对多个文件进行压缩。

(1)压缩命令使用格式:tar -jcvf? [压缩文件名称]? ?[要被压缩的文件或目录名称]。

?(2)解压缩命令:tar -jxvf filename.tar.bz2

注意:可以在任意目录下将压缩文件解压,切换到要解压的目录,执行解压缩命令即可。或者通过参数-C(大写):表示指定解压的目录路径。

?4、备份工具:dump命令,dump命令可备份文件系统或单一目录;

Dump的备份若针对文件系统时,可进行0-9的level差异备份,其中level0是完整备份。

注意:dump 命令使用“备份级别”来实现增量备份,它支持 0~9 共 10 个备份级别。其中,0 级别指的就是完全备份,1~9 级别都是增量备份级别。

六、系统进程管理?

1、进程管理的作用:(1)判断服务器健康状态;(2)查看系统中所有进程;(3)杀死没用的进程。

2、进程查看命令:ps

?

3、查看系统健康状态:top

注意:ps 命令可以一次性给出当前系统中进程状态,但使用此方式得到的信息缺乏时效性,为此,Linux 提供了 top 命令。top 命令可以动态地持续监听进程地运行状态,与此同时,该命令还提供了一个交互界面,用户可以根据需要,人性化地定制自己的输出,进而更清楚地了进程的运行状态。

(1)top前5行说明:主要关注:load average(平均负载,即系统前1分钟,5分钟,15分钟的平均负载),CPU的空闲率,内存的空闲率,swap的空闲率。?

?(2)top输出内容含义:

?

?4、杀死进程命令:kill? -信号 ?进程端口;杀死指定进程。

注意:常用的信号,如下:

(1)-1:SIGHUP,表示该信号让进程立即关闭,然后重新读取配置文件之后重启,即表示平滑重启;

(2)-9:SIGKILL,表示用来立即结束程序的运行,即强制关闭

5、killall? [选项][信号]? 进程名:表示按照进程名杀死进程即批量杀死进程;

(1)选项:-i:表示交互式,询问是否要杀死某个进程;

(2)-I:忽略进程名的大小写。

文章来源:https://blog.csdn.net/qq30211478/article/details/124780093
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。