Linux知识点

  • Post author:
  • Post category:linux




Linux学习总结

今天来学习非常经典的Linux,从最基础的部分学习,一下是这次的学习内容.让我们一起来学习经典,致敬经典.

在这里插入图片描述

在这里插入图片描述



Linux的工作方向

Linux运维工程师:主要是负责服务器的规划,调优测试,日常监控,故障处理,护具备份只分析,服务器瘫痪了,要迅速的恢复.

Linux嵌入式工程师:能够熟练的掌握Linux下各种驱动程序的开发,还有就是在嵌入式系统中进行开发,

注意:我们在安装CentOS的时候,在配置网络连接时,会有三种方式:

  • 桥连接:Linux可以和其他的系统通信,但是可能造成IP冲突

  • .NET:网络地址转换方式,可以和外界通信,并且不会造成IP冲突.
  • 主机模式:该模式下,Linux是一台独立的主机,不能访问外界

    我们要选择.NET方式.



Linux的目录结构

和Windows不同的是,Linux的目录结构是只有一个根目录,很像一颗倒立的大梧桐树,Linux的文件系统采用的都是层级的树状目录结构,只有一个根目录”/”,所有的目录都是基于此目录进行创建的,

在Linux的世界中,一切皆文件


在这里插入图片描述

例如:

/dev 专门用来管理设备的


/media 当设备插入的时候,硬件(cpu,disk(硬盘),DVD(光驱),U盘等),会直接在media目录下进行管理,其中cpu 和disk,会直接在/dev目录下映射成文件挂载到该目录下,DVD和U盘会在media下被识别


/bin 常用的指令都在改目录下,cp拷贝,cat浏览,date设置时间


/etc 存放我们的配置文件的,所有的系统管理所需要的配置文件和子目录


/home java目录,当我们创建一个普通用户的时候,就会在改目录下产生对应的文件,例如,当使用 useradd tom,创建一个tom 的用户时,便会在home目录下,创建一个tom的文件夹,userdel -r tom,便会删除用户tom,和对应的文件夹.

/lib 动态库,系统开机几乎所需要的最基本的动态连接库


/mnt 挂载的文件夹.,是系统提供的可以供用户临时挂载别的文件系统的,我们可以将外部的存储挂载到/mnt/上,然后进入该目录查看里面的内容


/opt 我们要给主机额外安装的软件都在这,例如VMtools

/proc 内核的东西都在这,一般不要轻易的去动

/root 存放ront用户的文件

/sbin 一般是super即茶几用户和一些权限比较高的用户都在这

/selinux 关于安全加强的,类似于Windows下的360,如果被攻击,会出发该目录,全称是security-enhanced linux


(1)

/sys 系统


(2)

/proc该目录是一个虚拟的目录,它是系统内存的映射,该问该目录用来获取系统信息2


(3)

/srv 即service的缩写,用来存放服务启动之后需要提取的数据,


1,2,3都是和系统相关的,一般都是高手才会动


/tmp 文件夹,用来存放临时文件的


/user 用户要安装的文件和应用程序,这是一个给常重要的目录


/var 变量,日志等都在这

/lost+found这个目录一般是空的,当非法关机之后,这个目录下就会有文件

/boot 很重要,包含了Linux启动时使用的一些核心文件,包括一些连接文件和镜像文件.



Linux实操篇 远程登录到Linux的服务器

在实际开发过程中,开发人员根本就接触不到Linux服务器,公司和服务器根本不在一个地方,所以我们需要远程登录到Linux服务器,现在用的最火的一款远程登录工具就是XShell,如果我们需要远程上传和下载文件,我们还需要XFtp.如图:

在这里插入图片描述

在安装之前,我们需要让linux服务器开启一个名为SSHD的服务,它会对22号端口进行监听,默认情况下,该端口是开启的状态,我们还是查看一下,使用

setup

指令,然后进入

系统服务****,查看sshd服务

,如果标注为*,就说明该服务已经开启.注意:端口开的越多,安全性能就会越弱.



vi和vim编辑器

所有的Linux都会内置vi文本编辑器,而vim是具备程序编程的能力,可以看做是vid的升级版,它能够主动的根据字体的颜色,来辨别语法的正确性,方便程序设计,代码补充,被广泛使用.



vi和vim的三种模式:
  • 正常模式

    ( 默认的),当我们以vi或者vim打开一个文档就会直接进入到该模式下,可以

    使用上下左右来控制光标

    ,可以

    使用删除字符,或者是删除整行来编辑文本

    ,

    也可以使用赋值粘贴来处理文件数据
  • 插入模式/编辑模式

    在正常模式下,输入

    i ,I ,o ,O,a ,A, r ,R

    等任意一个字母就会进入编辑模式,一般来说按 i 即可
  • 命令行模式

    在该模式下,我们可以提供相关的指令来完成读取,存盘,替换,离开,显示行号,查找等动作.

    当我们在插入模式下完成编辑时,我们应该如何进项保存呢?

    首先,需要进入到命令行模式下**,即ESC**,回到一般模式**,然后”:“或者是”/”

    进入命令行模式

    ,执行wq(保存并且退出),q(退出),q!(退出不保存,强制退出)**如果对文件进行了修改,但是却没有保存,那么只能使用的是q!.如图:

    在这里插入图片描述

vi快捷键联系:

在这里插入图片描述



用户管理

在Linux中,用户都是属于用户组的,一个用户至少要属于一个组,用户家目录:在/home/下会有创建的各个用户的家目录,当用户登录时,会自动进入到自己的家目录.

在这里插入图片描述

  • 添加用户:

    useradd [可选项] 用户名

  • useradd -d 指定目录 新用户名

    给创建的用户指定家目录

    例如:useradd xm 当执行完成这条指令时,如果我们没有为要创建的用户指定组,那么系统会默认创建一个和用户名同名的组,然后把用户放到其目录中.


    cd:change directory.切换目录.



    mkdir 新目名称

    创建一个目录


    passwd

    用户名:修改密码


    pwd

    :查看当前所在的目录


    logout

    :退出当前用户


    clear

    :清屏

    注意:只有root用户才能修改普通用户的密码的权限.在实际的工作环境中,密码的保密程度一定要高要够复杂,并且使用passwd修改密码时,页面是没有显示的.
  • 删除用户:

    userdel 用户名

    ,会删除用户,但会保留用户的家目录

  • userdel 用户名

    ,删除用户和用户的家目录,但是一般来说,我们只删除用户,但是会保留其对应的家目录,因为家目录下包含了该用户产生的文档和源代码.



查询用户信息的指令


id 用户名

:查询用户信息,用户如果不存在,返回无此用户.



切换用户

如果当前用户的权限不够的话, 可以通过

su – 对应的用户名


例如:su – xh 即可切换到用户xh

注意:权限高的用户切换到权限低的用户,是不需要输入密码的,但是反之则需要,当需要切换到原来的用户时,使用exit指令


who am i或者whoami

:查看当前用户是谁



用户组的管理

用户组:类似于角色,系统可以对有共性的多个用户进行统一的管理.


groupadd 组名称

:用来创建 一个组.


groupdel:组名称

,删除指定的组.


useradd -g 组名称 用户名

:创建用户,并且添加到指定的组.(该指令的前提是你的组必须先创建出来,然后会在/home/自动创建同名的家目录)


usermod -g 组名称 用户名

:为用户修改组.eg:usermod -g shaolin zwj,表示的是把用户zwj归属到少林这个组内.

在这里插入图片描述



用户和组的相关文件


/etc/passwd

:用户的配置文件(用户信息),每一行的含义:

用户名:口令:用户标识号:组标识号:注释性描述:主目录:登录shell.

在这里插入图片描述


/etc/group/

:组配置文件(组信息),每一行的含义:

组名:口令:组标识号:组内用户列表:


/etc/hadow/

:口令的配置文件(密码个登录的相关信心,但是是加密的),每一行的含义:

登录名:加密口令:最后一次修改时间:最小时间间隔:最大时间间隔:警告时间,不活动时间:失效时间:标志.

总结:当我们增加,删除,修改用户或者组的时候,都会导致以上三个文件的变化.



实用指令

关于Linux系统的运行级别,有一下其中级别:

0:关机

1:单用户(找回丢失密码)

2:多用户状态,没有网络服务

3:多用户,有网络服务

4:未使用,保留状态

5:图形界面

6:重启

在这里插入图片描述

其中,常用的运行级别是3和5,我们可以修改默认的运行级别,通过文件

/etc/inittab/进行修改,系统的默认的级别是5

在这里插入图片描述


init 级别数字

,修改默认的运行级别,例如:init 3,就会切换到多用户游网络服务的级别.例如:init 0,就是关机了.



面试题:如何找回丢失的root密码

加入我们不小心忘记了root用户的密码,那么我们应该如何找回呢?

思路:首先我们应该先进入单用户模式,因为单用户模式是不需要密码的,然后修改root的密码即可.


步骤:开机然后在引导页面时输入enter键–>看到一个页面输入 e –>在新页面中选中第二行(编辑内核keer),然后输入e,并且在该行的末尾输入1,再次输入回车键–>输入b,就会进入到单用户模式.在该模式下,我们可以通过passwd root指令来对root的密码进行修改,保存之后重启.


总结:如果想通过上面这种方法来找回到root的密码,很多人会认为这样做是不安全,任何人都可以进入到我们的单用户模式,其实不然,

这种方法的前提就是,不能通过远程登录的方式进入到单用户模式,必须在Linux系统所在的电脑上进行操作.

,这样,保密性就会大大增强.

如果,我们的默认的运行级别被别人恶作剧的修改成了0或者其他,纳闷我们应该怎么办呢?和之前一样,首先进入到单用户模式,然后对/etc/inittab文件通过vim打开之后,修改其中的默认级别



帮助指令

当我们对指令的用法不熟悉时,我们可以使用Linux提供的帮助指令来查看.


man 命令或者配置文件

:获取帮助信息


help 命令

:获取shell内置命令的帮助信息



文件目录类指令


pwd

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


ls [选项] [目录或者是文件]

:用来显示当前目录下的文件的和目录的,例如:


ls -a

:显示当前目录下的所有的文件和目录,包含隐藏的.


ls -l

:以列表的形式进行显示,


mkdir

:主要功能是用来创建目录.


mkdir [选项] 要创建的目录名称

:(全称:make directory)创建目录.mkdir dog,在当前目录下创建dog文件夹


mkdir -p 多级目录

:创建多级目录.例如:mkdir -p /home/animal/tiger,

默认情况下:mkdir只能单级创建目录,所以我们如果想多级创建,需要加参数-p


rmdir [参数] 要删除的目录名称

:删除指定目录,但是,rmdir不能删除非空的目录,如果我们想删除非空目录,可以通过,


rm -r 要删除的文件或目录

:递归删除整个文件夹


rm -f 要删除的文件或目录

:强制删除不提示


cd [参数]

:change directory,切换到指定目录,常用的参数就是绝对路径和相对路径


绝对路径

:就是相对于根目录进行定位.


相对路径

:就是相对于当前工作的目录进行定位.例如:我们现在在/root目录,我们想进入到/home,可以这样完成:

/home:绝对路径的方式

…/home:相对路径的方式


cd ~ :或者 cd

: 回到当前用户的家目录


cd …

回到当前目录的上一级目录.


touch 文件名称

:创建一个空文件夹


cp [选项] source dest

:source指的是你要拷贝的文件夹,dest是目标文件夹,

\cp [选项] source dest

:强制覆盖且不要提示.

cp -r source dest :递归拷贝整个文件夹到dest下.例如:

cp aa.txt bb/,把aa.txt拷贝到bb 文件夹下.

cp -r test/ bb/把test整个文件夹拷贝到bbw文件夹下.


总结:一定要把Linux的目录结构印在脑海中,指令不难记,关键是你要知道你目前所在的目录,和你要去的目标目录应该如何正确的写出来.



mv oldNameFile newNameFile

:重命名文件(如果我们想重命名文件,西安进入到该文件当前所在的目录,然后在使用该指令)

例如: mv dog.txt pig.txt.表示的是给dog.txt文件进行重命名


mv /temp/moveFile /targetFolder

:移动文件

例如:mv /home/pig.txt /root,相当于把pig.txt 剪切到/root目录下.


cat [选项] 要查看的文件

:常用的选项是-n,用来显示行号,注意:cat只能用来浏览文件,而不具有修改的权限,为了浏览的方便,我们一般会带上管道命令

| more

,表示分页来进行显示.使用

空格键

进行翻页

例如:cat -n /etc/profile:查看/etc/profile,并且显示行号.


more

:more指令时基于vi编辑器的一个文本过滤器,它会以全屏的方式按页来显示文本文件的内容,空格键是按页看,enter是按行看,Ctrl+b回到上一页

ctrl+f下一页


less指令

:less指令的功能比more的要强大的多,支持各种显示器,终端,less在显示文件内容的时候,并不是一次性将整个文件加载完成之后,猜进行显示而是根据现实的需要进行加载内容.对大型文件的显示效率比较高,一般的日志等文件我们推荐使用less.


pageup

,向上翻一页,


pagedown

向下翻一页,


空格键

,向下翻一页


/子串

,向下搜索子串,再次输入n,表示向下查找,N向上查找


?子串

:向上搜索子串,再次输入n,表示向上查找,N向下查找


q

:退出less程序


输出重定向>,追加指令>>

,基本语法如下:

如果写的文件名对应的文件不存在,那么会先创建对应的文件,在进行内容的处理.


ls -l > 文件名称

:列表的内容覆盖写入到文件中.


ls -al >>文件名称

:列表的内容追加到文件的末尾.


cat 文件1 > 文件2

:将文件1的内容覆盖到文件2


echo “内容” > 文件

:用内容覆盖文件.


echo “内容” >> 文件

:把内容追加到文件的末尾.


cal

:显示当前的系统日历.例如:你需要什么内容就可以直接进行写入,

ls -l >>文件名称

,表示的是将文件列表写入到文件,

cal >> 文件名称

:表示的是将当前的系统的日历写入到文件.


echo,head 和tail指令



echo [选项] 输出内容

:输出指定内容到控制台,多用于输出环境变量.例如:

echo $PATH

.输出当前系统的环境变量到控制台.

也可以输出一些简单的文本例如:echo “helloworld”


head :用来显示文件的开头的部分内容,默认是显示文件的前10行.



head -n 5 文件

:显示文件的头5行.

例如:head -n 5 /etc/profile .显示profile的前5行


tail:是用来显示文件尾部的内容,默认显示的是后10行用法如下

:


tail 文件

:查看文件后10行的内容


tail -n 5

文件:查看文件的后5行内容.



tail -f

文件:实时追踪该文档的所有更新

(很有用)


ln指令,也称为是软连接,符号链接.类似于Windows中的快捷方式,主要是存放了链接其他文件的路径.语法如下

:


ln -s 原文件名,或者目录名 软链接名

:给原文件创建一个软链接.例如:我可以在home目录下给root目录创建一个软链接ln -s /root/ myroot,

我们打开软链接其实看到的还是原目录中的内容但是如果我们使用pwd进行查看那么我们发现显示的却依然在软链接的目录下.



rm -rf 软链接

:删除软链接,注意:软链接不要以/结束,否则会报设备或资源忙.


history:查看已经执行过的命令,也可以执行理事命令.语法如下:



history 5

:显示最近执行过的5项命令


!5

:执行历史编号为5的指令.



时间日期类的指令

date:显示当前日期

date + %Y:显示当前是哪一年

date +%m:显示当前是哪一月

date+%d:显示当前是哪一天

date “+%Y+%m+%d+%H+%M+%S”:显示年月日时分秒

date -s 时间字符串:设置系统时间.



find指令

find指令将从指定目录向下递归遍历各个子目录,将满足条件的文件或者目录显示在终端,语法如下:


find [搜索范围] [选项]

:根据选项进行文件或者是目录的查询


-name

:按照指定的文件名称进行查找,例如:find /home/ -name info.txt表示的是查询home目录下的info.txt文件.


-user

:查找属于指定用户的所有文件.例如:find /home/ -user root表示的就是查询root用户在home下的所有的文件.


-size

: 按照指定文件的大小查找(+n是大于n,-n是小于n n表示等于n),例如:find / -size +20M,表示的查询根目录下所有大于20M的文件.


注意:B,M一定写成大写,小写的是无效的.k一定要写成小写的,大写的是无效的.

我们在输入文件名称的时候如果文件的名称过长,我们可以输入一部分,然后按tab键进行匹配

在开发过程中,如果我们根据文件的大小进行查找,例如:find / -size -20M,这个命令的搜索得到的结果会很多,那么系统会一直进行查找,那么我们如何终止查找的过程呢,

输入ctrl+c,即可退出


*

find查找还支持通配符,比如:我们要获取根目录下所有的.txt文件,我们可以这样:find / -name

.txt



**

locate指令可以快速的定位文件路径,locate利用事先建立的系统中的所有的文件名和路径的locate数据库实现快读定位给定的文件,locate指令无需遍历整个数据库系统,查询速度较快,但是要求就是为了保证查询的准确度,管理员必须定期更新locate时刻.语法如下:

locate 文件名:搜索指定文件,例如:updatedb之后,locate pig.txt就可以对我们的目标文件路径进行查询

注意:由于locate指令是基于数据库进行的查询,所以第一次使用之前我们必须使用updatedb指令,来完成对locate数据库的创建.



grep指令和管道符号|

grep指令:过滤查找,多用于在文件的内部对某个关键字进行查找.管 道符号”|”:把前一个命令的处理结果输出传递给后面的命令去处理.语法如下:


grep [选项] 查找内容 原文件:在某一个文件中查找某个关键字

,例如:


cat info.txt | grep yes

查找info.txt文件中的yes.


cat info.txt | grep -n yes

,查找info.txt文件中的yes.并且会把yes所在的行号给显示.


cat info.txt | grep -ni yes

,查找info.txt文件中的yes.并且会把yes所在的行号给显示.并且yes不区分大小写全部显示.

-n匹配行及行号,-i忽略字母大小写.



压缩和解压缩指令


gzip 文件名

用于压缩文件的,只能将文件压缩成gz格式的,

gunzip 文件.gz

用于解压的.注意:这两条指令执行完成之后,原来的文件不会被保留,会只留下压缩文件或者是解压缩之后生成的文件.


zip [选项] XXX.zip 将要被压缩的文件或者是目录

:将文件压缩成xxx.zip,该指令非常有用,多用于在项目发布时.例如:将/home/目录压缩成mypackage.zip,zip -r mypackage.zip /home/常用选项如下:


-r:递归压缩整个目录

,


unzip [选项] xxx.zip

:对某个文件进行解压.例如:将mypackage.zip解压到/opt/tmp/目录下:unzip -d /opt/tmp/ mypackage.zip常用选项如下:


-d<目录a>:指定解压过后的文件存放在目录a中.


tar指令,打包指令,最后打包的文件的格式是.tar.gz,基本语法如下:


tar [选项] XXXtar.gz

要打包的文件:打包目录,打包后的文件格式是.tar.gz.该指令既可以解压,也可以压缩,主要是通过携带不同的参数,


tar -zcvf XXX.tar.gz 文件名或者是目录

:对文件或者是目录进行整体打包压缩.


tar -zxvf XXX.tar.gz

:解压文件夹或者是目录,


tar -zxvf XXX.tar.gz -C 目录A

:把压缩文件解压到A目录下去.前提是目录A解压前必须是存在的,不然会报错的.常用的选项,


-c:产生.tar打包文件.

-v:显示详细信息

-f:指定压缩后的文件名

-z:打包同时压缩

-x:解包.tar文件.

例如

:我们把home/m目录下的a.txt,b.txt压缩成一个文件:tar -zcvf a1.tar.gz a.txt b.txt.



组管理和权限管理



改变文件的所在组和所有者

在Linux中每个用户都必须属于一个组,不能独立于组外,在Linux中每个文件都有所有者,所在组,其他组的概念.所有者:一般谁创建了文件,谁就自然的成为了这个文件的所有者.一般来说,文件的所在组,就是文件的所有者所在的组.


ls -ahl:查看文件的所有者,


**chown 用户名 文件名:修改文件的所有者.(change owner)**例如:在root权限下:chown tom pig,txt,然后我们可以通过 ls -ahl 来查看出,pig.txt文件的所有者是tom,但是所在组是root.

**chgrp 组名 文件名:(change group)**修改文件所的所在组.


groupadd 组名称

:创建一个组.


useradd -g 组名称 用户名

:创建一个用户到指定的组,前提是这个组已经存在.



修改用户的所在组

在添加用户的过程中 ,可以指定将该用户添加到具体的哪个组中,同样的,root用户是可以修改某个用户的所在组.


id 用户名

:可以查看用户所在的组


usermod -g 组名 用户名

:改变用户的所在组


usermod -d 目录名 用户名

:改变用户登录的初始目录



权限的基本介绍

在这里插入图片描述

c:字符设备,(鼠标,键盘等),

l:链接,相当于windows 的快捷方式

-:普通的文本文件

d:表示的是目录

b:块文件,硬盘等.目录的大小统一显示为4096.



rwx权限详解


rwx作用到文件

r:read,表示的是可读,查看

w:write代表可写,可以修改,但是不代表可以删除该文件,删除一个文件的前提就是对该文件所在的目录具有写权限,才能删除该文件.

x:execute代表可以被执行的



rwx作用到目录

r:read,代表的是可读,ls查看目录的内容.

w:write代表的是写,表示的是可以在目录内进行创建+删除+重命名目录

x:代表的是可以被执行的,可以进入该目录.

rwx还可以使用数字来表示,r=4,w=2,x=1;因此rwx = 4+2+1 =7;



修改权限-chmod

通过chmod指令,我们可以修改文件或者目录的权限.

第一种方式:使用+ – =来变更权限.


u:所有者,g:所在组,o:其他人,a:所有用户(u,g,o的总和)



chmod u=rwx,g=rx,o=x 文件/目录名

,更改权限:文件的所有者为rwx,所在组的其他用户的权限为rx,其他人的权限为x


chmod o+w 文件/目录名

其他人的权限都增加w权限


chmod a-x 文件/目录名

所有人的权限都减少x权限.

注意:当有多个权限一起进行修改时,必须要用逗号分隔开,最后一个和文件名称连接的不用分隔.

第二种方式:使用数字来代替rwx:4,2,1.例如:


chmod u=rwx,g=rw,o=r 文件/目录名相当于是:chmod 761 文件/目录名

,这个默认的顺序一定要记住,u(所有者),g(所在组的其他用户),o(其他组的其他的用户)



修改文件的所有者


chown newowner file

:改变文件的所有者


chown newowner:newgroup file

:改变文件的所有者,并且改变所有者的所在组.


-R被用来递归的改变整个文件夹下的所有的子文件的所有者


例如:

chown -R newowner 目录名称a

:把a目录和其所有的子目录(包含子目录的所有文件)的所有者都修改成了newowner.


chgrp -R newgroup 目录名称B

:把B目录和其子目录以及包含的文件的所在组都修改成了newgroup.


usermod -g 组名称 用户名

:修改指定用户的所在组

练习题:

在这里插入图片描述

在这里插入图片描述



定时任务调度

crond任务调度,

crontab进行定时任务的设置,

任务调度:是指系统在某个时间段内执行的特定指令或程序.

任务调度分类:1:系统工作:有些重要的工作,必须周而复始的执行,如病毒扫描等.2 个别用户工作:个别用户可能希望执行某些程序.比如对mysql数据库的备份.语法如下:


croutab [选项]


常用选项:

-e:编辑crontab任务



-l:查询crontab任务

-r:删除当前用户的所有的crontab任务.终止任务

service cront restart重启任务调度.



意:如果是简单的任务,纳闷不需要编写脚本,直接在crontab中加入任务即可,对于比较复杂的脚本,需要编写shell脚本.


快速入门案例:


把/etc/目录下的内容追加到/tmp/to.txt中,


/1 * * * * ls -l /etc/ >> /tmp/to.txt

第一个

:一个小时当中的第几分钟 取值0-59

第二个*:一天当中的第几个小时 取值0-23

第三个*:一个月当中的第几天 取值1-31

第四个*:一年当中的第几个月1 -12

第五个*:一周当中的星期几取值0-7(0和7都表示的是周日)

在这里插入图片描述

在这里插入图片描述

如果我们的任务是比较复杂的任务,那么我们需要通过shell脚本来创建定时任务,但是我们一定要给编写的脚本可执行权限,否则是无法执行的.



磁盘分区和挂载



分区的基本知识

1 mbr分区:

(1)最多只能支持4个主分区

(2)系统只能安装在主分区

(3)拓展分区要占一个主分区

(4)MBR最大支持2TB,但是拥有最好的兼容性

2 gtp分区:

(1)支持无限多个主分区,但是操作系统可能有所限制(Windows下最多128个分区)

(2)最大支持18EB的大容量(1EB=1024PB,1PB = 1024TB)

(3)Win7 64位之后支持gtp分区

在这里插入图片描述



Linux分区原理介绍

Linux无论有几个分区,分给哪一个目录使用,它归根结底就只有一个目录,一个独立且唯一的文件结构,Linux的每一个分区都是用来组成整个文件系统的一部分,Linux采用一种叫做”载入”的处理方法,它的整个文件系统包含了整套的文件和目录,且将一个分区和一个目录联系起来,这时要载入的分区将使它的存储空间,在一个目录下获得.

在这里插入图片描述

在这里插入图片描述


lsblk -f

查看当前的系统分区.(老是不离开)


lsblk

:可以查看分区的大小



挂载的经典案例

如何增加一块硬盘:

1:虚拟机添加硬盘

在这里插入图片描述

2:分区:fdisk /dev/db

在这里插入图片描述

在这里插入图片描述

3:格式化 mkfs -t ext4 /dev/sdb1,其中ext4是分区类型.

4:挂载:把一个分区和一个目录联系起来


mount 设备名称 挂载目录

,例如:mount /dev/sdb1 /home/newdisk


umount 设备名称或挂载目录

例如:mount /dev/sdb1

具体步骤,看笔记,这种方式挂载有一个缺点,就是因为它是临时挂载,所以当你重启系统的时候,硬盘和文件之间依然没有挂载的关系,所以需要第五步.

5:设置可以自动挂载

(永久挂载,当机器重启之后,依然可以挂载到相应的目录,/etc/fstab,这个文件就是分区和挂载点的记录.我们通过对这个文件的修改,来完成永久挂载的设置,添加完成后,在命令行下,执行,mount -a即可生效,那么系统在启动的时候,就会自动挂载了)



磁盘情况查询


df -h

:查询磁盘的使用情况.

du -h /目录:查询指定目录的磁盘占用情况,默认是当前目录,

-s:指定目录大小汇总

-h:带计量单位

-a:包含文件

-c:列出明细的同时,增加汇总值.

–max-depth=1:子目录的查询深度为1

例如:查/opt目录下,并且子目录深度为1 du -ach –max-depth=1 /opt.



实用指令


统计/home文件夹下文件的个数


ls -l /home | grep “^-” | wc -l

(“^-“以-打头的代表的是文件,wc表示的是总和)


统计/home文件夹下目录的个数

ls -l /home | grep “^d” | wc -l


统计/home文件夹下文件的个数,包含子目录下的

ls -lR /home | grep “^-” | wc -l(R表示的是递归的统计子文件夹的)


统计文件夹下目录的个数,包含子文件夹的

ls -lR /home | grep “^d”| wc -l


以树状显示目录结构

(如果没有tree指令,我们可以使用yum install tree 进行安装)

直接使用tree,就会把当前目录的结构以树状的形式展现出来.yum install 指令名称,可以来实现一个指令的安装.



Linux的网络配置

学习背景:我们在图形界面中连接网络之后,虽然网络是通的,但是这个系统的ip是动态的,并不是一个固定的,有可能你重启一次系统都会造成ip的改变,并不能够满足我们开发的需求.



Linux网络配置的原理图(含虚拟机)

ping 网址:可以用来测试网络是否是通的.例如:ping

www.baidu.com

,可以使用ctrl + c进行退出.目前我们的网络采用的是NAT(网络地址转换)模式

在这里插入图片描述

我们的Linux系统是如何和外界进行通讯的呢?

首先,我们的Linux是安装到Windows系统上的,但是,现在我们的Linux系统的ip是动态的,每次重启系统可能就会生成一个随机的ip,这在实际的开发过程中是不能满足我们的需求的,window系统是有两个网卡的,一个是虚拟网卡,如上图,

虚拟网卡vmnet8

的ip和Linux的ip是在同一个网关下的,他们二者是可以直接进行通讯的,构成了一个内部的网络,然后通过Windows系统的无线网卡或者是真实网卡,和局域网进行通讯,然后通过网关连接到外网.这个就是为什么我们能够在Linux系统中使用ping

www.baidu.com

能够成功的原因.



查看虚拟网络编辑器

首先 ,我们VMware中的

编辑

,然后点击

虚拟网络编辑器

,会弹出下面的图:图中的红框我们修改ip和网关,我们在此处修改的就是

虚拟网卡

的ip

在我们这里插入图片描述



查看网关

为了保证我们的Linux能够和外界通信,我们需要和虚拟网卡的网关保持一致,如何查看虚拟网卡的网关呢?

在这里插入图片描述

然后就可以查看并修改网关.



Linux的网络环境的配置

**第一种:**Linux启动之后,会自动获取ip,缺点就是,可能每次获取的ip都是不同的.

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

把自动连接给勾上,然后应用即可,这样之后,我们每次启动系统的时候,都会自动回去ip然后连接网络.


第二种

:指定固定的ip(推荐使用),方法:

直接通过修改配置文件来制定ip,并且可以连接到外网,编辑 vi /etc/sysconfig/network-scripts/ifcfg-eth0

,准确的来说是对ech0网卡的配置.如果有多个网卡,对应多个文件

在这里插入图片描述

每个人的电脑打开之后显示的可能不太一样,但是图中的红色框中的关键部分一定要进行相应的修改.

网关要和我们Windows系统的vmnet8虚拟网卡保持一致,这样我们才可以进行和外界通信.


注意:修改保存之后,一定要进行重启,如果不会重启的可以直接重启机器,但是那样会比较的笨重,

service network restart

,可以重启网络服务.这样我们的ip就是我们在文件中设置的固定的ip了.

在这里插入图片描述



进程管理

进程的基本介绍

在Linux中,每个执行的程序(代码)都称为一个进程,每个进程都分配一个id号,每一个进程都会对应一个父进程,一个父进程可以复制多个子进程.例如,www服务器,每个进程都可能以两种方式存在的,前台和后台,所谓的前台进程,就是目前用户可以在屏幕上进行操作的,后台进程则是实际在操作,但由于屏幕无法看到的进程,通常使用后台方式执行.一般系统的服务都是以后台的方式存在,而且都会驻在系统中,知道关机才会结束.

ps命令用来查看目前系统中有哪些正在执行,以及它们的执行状况,可以不加任何参数,

ps -a:显示当前终端所有的进程信息.

ps -u:以用户的形式显示进程信息

ps -x:显示后台进程的运行参数

一般为了方便用户的查看,我们都会使用

ps -aux | more来查看用户的进程


在这里插入图片描述

指令还有很多,s代表休眠,run 代表正在运行.如果我们想具体的了解某一个进程,我们可以使用管道符和grep例如:我想查看sshd,ps -aux | grep sshd

在这里插入图片描述


ps -ef | more

可以用来查看父进程,以全格式显示所有进程,e,表示所有进程,f表示全格式.


ps – ef | grep XXX

:可以用来查看某个进程的父进程



终止进程

当一个进程执行一半需要停止时,或者是消耗了很大的系统资源时, 此时可以考虑停止该进程,可以使用kill命令完成.语法如下


kill [选项] 进程号

:通过进程号杀死进程.常用选项如下:


-9

:表示的是强迫进程立即停止

killall 进程名称:通过进程名称杀死进程,也支持通配符,这个一般是在

系统因负载过大而变的很慢

的时候使用.


踢出非法登录的用户

: 例如:当我们有一个非法用户登录之后的进程号是4010,(我们可以通过,

ps -ef |grep sshd

来查看用户登录的进程号),我们可以对他进行剔除,kill 4010即可.


终止远程登录服务sshd

(禁止任何用户远程登录,有可能是为了安全的考虑),在适当的时候再次重启sshd服务.

kill root用户的进程号

(此操作是没有任何的提示信息,该操作执行之后,任何用户都不能在进行远程登录了)


终止多个gedit编辑器

:killall gedit(该操作执行之后,所有的gedit编辑器的窗口都会被关闭.

它是通过进程的名称,然后把所有的归属于该进程名称的进程全部进行杀死

)


强制杀死一个终端

:kill -9 终端的进程号(为什么一定要带上-9?,因为啊,当系统认为一个进程非常重要的时候,会忽略掉kill指令,-9表示的是强制执行的意思,如果没有-9是没有反应的.)


ps -aux | grep bash

:查看当前所有的终端. 终端中只要显示是/bin/bash表示的都是一个终端.

pstree可以以树状的形式来进行进程的显示,可以更加直观的查看进程信息.


pstree

[选项] .常用选项:


-u:显示进程的所属用户

-p:显示进程的父进程id



服务(service)管理

服务(service)的本质就是进程,但是是运行在后台的,通常都会监听某个端口,等待其他程序的请求,比如(mysql,sshd,防火墙等) ,因此又被称为守护进程,是Linux中非常重要的知识点.


service管理指令



service 服务名称 start | restart(重启) | stop(停止)| reload(重新加载) | status(状态码)

.

注意:在centos7.0之后,服务管理不再使用service 而是使用systemctl,指令不同,但是原理是相同的.但是请注意,通过这种方式对服务的更改只是暂时的,如果我们重启系统之后,系统支持的还是之前对服务的设置.这种方式会立即生效但是确实临时的.若果我们想对某个服务永久的修改,我们需要使用chkconfig


案例一:查看当前系统防火墙的状态,关闭防火墙和重启防火墙.


service iptables status

:查看防火墙的状态,如下图所示,在实际开发过程中,我们一般只开放22好端口.


service iptables stop

:关闭防火墙 ,立即生效


service iptables start /restart

:开启或者是重启防火墙

在这里插入图片描述

我们可以在windows系统中通过指令来监听Linux系统中的具体的某一个端口是否开启,或者是被占用,

telnet ip地址 端口号

:来进行测试端口到底能不能使用,例如: telnet 192.168.61.128 22,可以用来监听本机中sshd22号端口的使用情况

Linux到底有多少服务呢?有两种方式进行查看


setup –> 系统服务

:

带星号的都是自动启动的,如果不想某个服务自动启动,我们可以把光标移动到星号上,按空格键即可


在这里插入图片描述


ls -l /etc/init.d/

:显示的就是当前系统正在运行的服务



服务的运行级别(runlevel)


vi /etc/inittab/

可以用来修改系统的运行级别,运行级别共有7种,但是常用的是3和5.上面的笔记中有详细的介绍.

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


注意:每一个服务在不同级别的自启动情况下是不一样的.如果我们不小心把默认的用户级别设置成了0或者6,那么怎么办呢?进入单用户模式,修改成正常的隐形级别就行了.


在这里插入图片描述


chkconfig 可以给每个服务的各个运行级别设置自 启动/关闭,但是在设置完成之后,需要重启机器才能生效



chkconfig –list

:查看所有服务在各个运行级别的的收服自启动


chkconfig –list | grep XXX(服务名称)

:查看具体的某个服务在各个运行级别下的自启动情况.和它用法一直的还有:


chkconfig XXX(服务名称) –list

:

在这里插入图片描述


chkconfig –level 数字 服务名 on/off

:修改具体的某一个服务在哪一个运行级别中的自启动的情况.


chkconfig 服务名 om/off:在所有运行级别下关闭或启动服务



动态监控进程

top指令和ps指令非常的相似,都是用来显示正在执行的进程,最大的不同之处就在于top在执行一段时间之后可以更新正在执行的进程.

top [选项]


-d

:指定top命令每隔几秒更新,默认的是3秒.top -d 10,10秒刷新一次


-l

:使top不显示任何闲置或者是僵死进程0


-p

:通过指定进程的id号来监控某个进程的状态

在这里插入图片描述

如果我们继续输入

u

,那么我们可以输入

用户名

来监视指定用户.

如果输入top之后,然后输入

k

,然后继续输入pid号,就可以杀死进程.

在这里插入图片描述

**注意:**使用该指令主要是为了查看系统的负载,如果负载过高,需要提醒老版提升一下硬件的性能.



查看系统的网络情况netstat

netstat [],常用指令是

netstat -anp


常用选项


-an:

:按照一定的顺序排列输出


-p

:显示那个进程正在调用



rpm和yum



rpm包的管理

介绍:是一种用于互联网包的打包和下载,它包含在某些Linux系统的分发版本中,它生成具有.RPM拓展名的文件,RPM其实就是RetHat Package Manager(RetHat软件管理包的缩写),类似于Windows的setup.exe,由于使用的效果比较良好,所以在很多Linux的系统版本中都有使用,已经成为了行业的标杆了.



rpm -qa | grep XX :查询已经安装的RPM列表

RPM包的基本格式:例如:firefox-45.0.1-1.el6.centos.x86_64.rpm

名称:firefox

版本:45.0.1-1

适用的操作系统:

el6.centos.x86-64,表示的centos6.x的64位操作系统

如果是i686,或者是i386表示的32位的系统,noarch表示的是通用.

在这里插入图片描述


rpm -qa:查询所安装的所有的rpm软件包,不方便查看

rpm -qa | more:分页显示所有的已安装的软件包,方便查看

rpm -qa | grep xx:指定名称查询rpm安装包

rpm -qi 软件包名:查询软件包的信息

rpm -ql 软件包名:查询软件包中的文件

rmp -qf 文件的全路径名称:查询文件所属的软件包



rpm包的卸载和安装


rpm -e RPM包的名称

:通过包名删除指定的RPM包,但是如果其他的软件依赖我们即将卸载的软件包,卸载便会报错.


rpm -e nodeps rpm包名

:这样会强制删除,但是不推荐这样做,因为依赖该包的软件可能会无法运行.


rpm -ivh rpm包的全路径名称

:安装rpm包,i是install安装,v=verbose提示,h=hash进度条

在这里插入图片描述



YUM

yum是一个shell前端软件包管理器,基于RPM包管理器,能够从指定的服务器上自动下载RPM包并且安装,

可以自动处理依赖性关系

,并且一次性安装所有依赖的软件包.用法如下


yum list | grep xx软件列表

:查询yum服务器上是否有需要安装的软件.


yum install xx

: 下载并且安装指定的yum包

首先

分析:原理,就是Linux系统中的yum管理器(在联网的状态下),可以自动的去公网上的yum服务器上下载我们需要的各种各样的rpm包然后进行安装.

基础篇到此结束,定制篇后续推出.



版权声明:本文为dawiebazhanlang原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。