Linux学习

Linux

一、Linux基础篇

1. VM和Linux的安装

1.1 Linux虚拟机连接网络的三种方式

在这里插入图片描述

  • NAT模式通过代理访问,可与外部通信,但是外部(192.168.0.30)是无法ping到内部的(192.168.100.88)
1.2 虚拟机克隆
  • 直接拷贝一份安装好的虚拟机文件,在VM中:文件——打开
    在这里插入图片描述

选择复制后文件夹中的配置文件打开

在这里插入图片描述

  • 使用VM的克隆,在克隆时必须先关闭虚拟机

image-20220629112840037

1.3 虚拟机快照

如果在使用虚拟机系统的时候,想回到原先的某一个状态,vmware提供这样的操作,叫做 快照管理。

image-20220629160606100

image-20220629161121836

1.4 虚拟机的迁移和删除

虚拟系统本质就是放在文件夹中的,虚拟机迁移可直接将文件夹剪切或者拷贝,虚拟机删除可以直接删除对应文件夹

2. Linux目录结构

2.1 目录结构
  • Linux的文件系统是采用层级式的树状目录结构,在此结构上的最上层是根目录"/",然后在此目录下再创建其他的目录

  • 在Linux世界里,一切皆文件,甚至连硬件设备都映射为一个文件

2.2 具体目录结构
  • /bin 【常用】 (/usr/bin、/usr/local/bin) 是Binary的缩写,这个目录存放着最经常使用的命令
  • /sbin 【常用】 (/usr/sbin、/usr/local/sbin) s就是Super User 的意思,这里存放的是系统管理员使用的系统管理程序
  • /home 【常用】 存放普通用户的主目录,在Linux中每个用户都有自己的一个目录,一般该目录名是以用户的账号命名
  • /root 【常用】 该目录为系统管理员,也称作超级权限者的用户主目录
  • /lib 系统开机所需要的最基本的动态连接共享库,其作用类似于Windows里的DLL文件,几乎所有的应用程序都需要用到这些共享库
  • /lost+found 这个目录一般情况下是空的,当系统非法关机后,这里就存放了一些文件
  • /etc 【常用】所有的系统管理所需要的配置文件和子目录,比如安装mysql 数据库,数据库的配置文件就会放在/etc目录下
  • /usr 【常用】 用户的很多应用程序和文件都放在这个目录下,类似于windows下的program files目录
  • /boot 【常用】 存放的是启动Linux时使用的一些核心文件,包括一些连接文件以及镜像文件
  • /proc【不能动】这个目录是一个虚拟目录,它是系统内存的映射,访问这个目录来获取系统信息
  • /srv 【不能动】service的缩写,该目录存放一些服务启动之后需要提取的数据
  • /sys 【不能动】 安装了2.6内核中新出现的一个文件系统 sysds
  • /tmp 这个目录是用来存放一些临时文件的
  • /dev 类似于windows的设备管理器,把所有硬件用文件形式存储
  • /media 【常用】Linux系统会自动识别一些设备,例如U盘、光驱等等,识别后会把设备挂载到这个目录下
  • /mnt 【常用】系统提供该目录是为了让用户临时挂载别的文件系统的,我们可以将外部的存储挂载在/mnt/上,然后就可以查看里面的内容了,比如:共享文件夹
  • /opt 这是给主机额外安装软件(安装包 )所存放的目录,如安装ORACLE数据库就可以放到该目录下,默认为空
  • /usr/local【常用】这是另一个给主机额外安装软件所安装的目录(目标目录 ),一般是通过编译源码方式安装的程序
  • /var 【常用】这个目录中存放着不断扩充着的东西,习惯将经常被修改的目录放在这个目录下。包括各种日志文件
  • /selinux [ security-enhanced linux ] SELinux 是一种安全子系统,它能控制程序只能访问特定文件,有三种工作模式,可以自行设置

二、Linux实操篇

1. 远程登录到Linux服务器

image-20220630125014951

image-20220630142810165

2. vi和vim编辑器

2.1 vi和vim基本介绍

Linux系统内置vi文本编辑器

Vim具有程序编辑的能力,可以看做是vi的增强版本,可以主动地以字体颜色辨别语法的正确性,方便程序设计。代码补全、编译及错误跳转等方便编程的功能特别丰富,在程序员中被广泛使用。

2.2 vi和vim常用的三种模式
  • 正常模式

以 vim打开一个档案就直接进入一般模式了(这是默认的模式)。在这个模式中,你可以使用『上下左右』按键来移动光标,你可以使用『删除字符』或『删除整行』来处理档案内容,也可以使用『复制、粘贴』来处理你的文件数据。

  • 插入模式

按下 i,I,o,O,a,A,r,R 等任何一个字母之后才会进入编辑模式,一般来说按 i 即可

  • 命令行模式

在这个模式当中,可以提供你相关指令,完成读取、存盘、替换、离开vim、显示行号等的动作则是在此模式中达成的!

2.3 vi和vim基本使用

使用vim开发一个Hello.java程序(使用Xshell)

先输入 vim Hello.java 创建或者打开文件 image-20220701110503873

进入的是一般模式,按i进入编辑模式

image-20220701110655483

编写完程序后,按esc回到一般模式,再输入**:wq**命令保存退出

2.4 各种模式的相互切换

image-20220701110419579

2.5 vi和vim快捷键
  • 拷贝当前行 yy,拷贝当前行向下的5行 5yy ,并粘贴(输入p

  • 删除当前行 dd .删除当前行向下的5行 5dd

  • 在文件中查找某个单词[命令行下/关键字,回车 查找,输入 n 就是查找下一个]

  • 设置文件的行号,取消文件的行号.[命令行下**: set nu** 和**:set nonu**]

  • 编辑/etc/profile 文件,在一般模式下,使用快捷键到该文档的最末行[G]和最首行[gg]

  • 在一个文件中输入"hello”,然后又撤销这个动作 u

  • 编辑/etc/profile 文件,并将光标移动到20行,输入20,再输入 shift+g

  • 其他快捷键百度看文档!

image-20220701165747342

3. 开机 、重启和用户登录注销

3.1 基本介绍
  • shutdown -h now 立该进行关机 (h:halt,意为关机)
  • shutdown -h 1 “hello,1分钟后会关机了”
  • shutdown -r now 现在重新启动计算机
  • halt 关机,作用和上面一样.
  • reboot 现在重新启动计算机
  • sync 把内存的数据同步到磁盘.

不管是重启系统还是关闭系统,首先要运行sync命令,把内存中的数据写到磁盘中

3.2 用户登录和注销
  • 登录时尽量少用root账号,因为它是系统管理员,最大的权限,避免操作失误 。可以利用普通用户登录,登录后再用**“su - 用户名”**命令来切换成系统管理员身份
  • 在提示符下输入logout即可 注销 用户

**使用细节:**logout注销指令在图形运行级别无效,在运行级别3下有效(运行级别后面介绍)

4. 用户管理

4.1 基本介绍

Linux系统是一个多用户多任务的操作系统,任何一个要使用系统资源 的用户,都必须首先向系统管理员申请一个账号,然后以这个账号的身份进入系统

4.2 添加用户
4.2.1 基本语法

useradd 用户名

4.2.2 应用案例

添加一个用户 milan,默认该用户的家目录在 /home/milan

4.2.3 细节说明
  • 当创建用户成功后,会自动创建和用户名同名的家目录

image-20220701180917290

  • 也可以通过 useradd -d 指定目录 新用户名 ,给新创建的用户指定家目录

image-20220701181355802

在test目录下创建一个新用户king

4.3 指定/修改密码
4.3.1 基本语法

passwd 用户名 (必须要带用户名,否则修改的是当前用户的密码)

4.3.2 应用案例

给milan指定密码

image-20220701182059984

显示当前用户所在的目录:pwd(print work directory)

4.4 删除用户
4.4.1 基本语法

userdel 用户名

4.4.2 应用案例
  • 删除用户milan,但是保留家目录

  • 删除用户zmc及其用户主目录

使用 userdel -r 用户名 r代表全部删除

image-20220701183736826

4.5 删除用户
4.5.1 基本语法

id 用户名

4.5.2 应用实例

请查询root信息

image-20220707104242269

4.6 切换用户
4.6.1 介绍

在操作Linux中,如果当前用户的权限不够,可以通过 su - 指令,切换到高权限用户,比如root

4.6.2 基本语法

su - 切换用户名

4.6.3 应用实例

创建一个用户jack,指定密码,然后切换到jack
image-20220707105937399

4.6.4 细节说明
  • 从权限高的用户切换到权限低的用户时,不需要输入密码,反之需要
  • 当需要返回到原来用户时,使用exit/logout指令
4.7 查看当前用户/登录用户
4.7.1 基本语法

whoami/who am i

4.7.2 使用细节

whoami 命令和 who am i 命令是不同的 2 个命令,前者用来打印当前执行操作的用户名,后者则用来打印登陆当前 Linux 系统的用户名。

image-20220707111633780

4.8 用户组
4.8.1 基本介绍

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

4.8.2 新增组

语法:groupadd 组名

4.8.3 删除组

语法:groupdel 组名

4.8.4 增加用户时直接加上组

语法:useradd -g 用户组 用户名

增加一个用户 zwj,直接将他指定到 wudang

image-20220707120332753

4.8.5 修改用户的组

语法:usermod -g 用户组 用户名

创建一个组:mojiao,把zwj放到mojiao中
在这里插入图片描述

4.8.6 使用细节

之前在使用useradd时并未指明用户组,系统会创建一个和用户名同名的用户组,并把这个用户添加到这个用户组中,即一人一个组

4.9 用户和组相关的文件
4.9.1 /etc/passwd 文件

用户(user)的配置文件,记录用户的各种信息

每行的含义:用户:口令:用户标识号(uid):组标识号(gid):注释性描述:主目录:登录Shell

4.9.2 /etc/shadow 文件

口令的配置文件

每行的含义:登录口:加密口令:最后一次修改时间:最小时间隔:最大时间间隔:警告时间:不活动时间:失效时间:标志

4.9.3 /etc/group 文件

组(group)的配置文件,记录Linux包含的组的信息

每行定义:组名:口令:组标识号:组内用户列表

5. 实用命令

5.1 指定运行级别
5.1.1 基本介绍

0:关机

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

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

3:多用户状态有网络服务

4:系统未使用保留给用户

5:图形界面

6:系统重启

常用的运行级别是3和5,也可以指定默认运行级别

5.1.2 应用实例

通过命令:init 来切换不同的运行级别,比如:从5到3,然后关机

init 3/init 5

5.1.3 CentOS7后指定运行级别

image-20220712102923560

实例:指定默认的运行级别

在这里插入图片描述

5.2 找回root密码
  1. 首先,启动系统,进入开机界面,在界面中按“e”进入编辑界面。如图

img

  1. 进入编辑界面,使用键盘上的上下键把光标往下移动,找到以““Linux16”开头内容所在的行数”,在行的最后面输入:init=/bin/sh。如图

img

  1. 接着,输入完成后,直接按快捷键:Ctrl+x 进入单用户模式

  2. 接着,在光标闪烁的位置中输入:mount -o remount,rw /(注意:各个单词间有空格),完成后按键盘的回车键(Enter)。如图

img

  1. 在新的一行最后面输入:passwd, 完成后按键盘的回车键(Enter)。输入密码,然后再次确认密码即可(韩顺平提示: **密码长度最好8****位以上,**但不是必须的), 密码修改成功后,会显示passwd…的样式,说明密码修改成功

image-20220720103355325

  1. 接着,在鼠标闪烁的位置中(最后一行中)输入:touch /.autorelabel(注意:touch与 /后面有一个空格),完成后按键盘的回车键(Enter)

  2. 继续在光标闪烁的位置中,输入:exec /sbin/init(注意:exec与 /后面有一个空格),完成后按键盘的回车键(Enter),等待系统自动修改密码(韩顺平提示:这个过程时间可能有点长,耐心等待),完成后,系统会自动重启, 新的密码生效

image-20220720103346542

5.3 帮助指令
5.3.1 man获得帮助信息

基本语法:man[命令或配置文件]

查看ls的帮助信息的指令为: man ls

image-20220712110729500

按空格可以往下翻阅,按q(quit)退出

查阅后得知 -a 可以显示隐藏文件(隐藏文件以 .开头), -l 可以单列输出

选项可以组合使用 如: ls -a -l 或者 ls -al 或者 ls -la(选项顺序没有影响)

image-20220712111029896

5.3.2 help指令

基本语法:help命令 (获得shell内置命令的帮助信息)

5.3.3 应用实例

查看cd命令的帮助信息

在这里插入图片描述

5.4 文件目录类指令
5.4.1 pwd指令

基本语法:pwd (显示当前工作目录的绝对路径)

5.4.2 ls指令

基本语法:ls [选项] [目录或者是文件]

-a:显示当前目录所有的文件和目录,包括隐藏的

-l:以列表的方式显示信息

-R:递归显示文件夹下的所有文件

5.4.3 cd指令

基本语法:cd [参数] (切换到指定目录)

cd ~ 或者直接 cd 回到自己的家目录,比如你是root,就是回到/root,如果你是tom,就是回到/home/tom

cd … 回到当前目录的上一级目录

应用案例:

案例1:使用绝对路径切换到root目录,cd /root

案例2:使用相对路径切换到/root目录,比如你现在在/home/tom,cd …/…/root

5.4.4 mkdir指令

基本语法:mkdir [选项] 要创建的目录

-p :创建多级目录

应用案例:

案例1:创建一个目录/home/dog, mkdir /home/dog

案例2:创建一个目录/homr/animal/tiger, mkdir -p /homr/animal/tiger

5.4.5 rmdir指令

基本语法:rmdir [选项] 要删除的空目录

应用案例:

删除一个目录 /home/dog

使用细节:rmdir删除的是空目录,如果目录下有内容时是无法删除的。如果需要删除非空目录,需要使用 rm -rf [要删除的目录]

5.4.6 touch指令

基本语法:touch 文件名称(touch指令创建空文件)

应用实例:创建一个空文件 hello.txt,touch hello.txt

5.4.7 cp指令

cp指令拷贝文件到指定目录

基本语法:cp [选项] source(源位置) dest(目标位置)

常用选项:-r 递归复制整个文件夹

使用细节:强制覆盖不提示的方法,cp改为\cp

5.4.8 rm指令

rm指令移除文件或目录

基本语法:rm [选项] 要删除的文件或目录

常用选项:-r : 递归删除整个文件夹 -f : 强制删除不提示

5.4.9 mv指令

mv指令移动文件与目录或重命名

基本语法:

mv oldNameFile newNameFile(重命名)

mv /temp/movefile /targetFolder(移动文件)

应用案例:

案例1:将 /home/cat.txt 文件重新命名为 pig.txt,在home下 mv cat.txt pig.txt

案例2:将 /home/pig.txt 文件移动到 /root目录下,在home下 mv pig,txt /root/

案例3:移动整个目录,将/opt/bbb 移动到 /home下,在opt下 mv /opt/bbb /home/

5.4.10 cat指令

cat查看文件内容,但是不能修改

基本语法:cat [选项] 要查看的文件

常用选项:-n:显示行号

应用案例:查看 /etc/profile 文件内容,并显示行号,cat -n /etc/profile

使用细节:cat只能浏览不能修改,为了浏览方便,一般会带上 **管道命令(把前面得到的结果交给下一个命令处理) **| more,即 cat -n /etc/profile | more,然后按Enter一行一行看,空格翻页着看

5.4.11 more指令

more指令是一个基于VI编辑器的文本过滤器,它以全屏幕的方式按页显示文本文件的内容。more指令中内置了若干快捷键
在这里插入图片描述

基本语法:more 要查看的文件

案例用more查看文件 /etc/profile,即 more /etc/profile

使用细节:cat和more可以组合使用

5.4.12 less指令

less指令用来分屏查看文件内容,它的功能与more指令类似,但是比more指令更加强大,支持各种显示终端。less指令在显示文件内容时,并不是一次将整个文件加载之后才显示,而是根据显示需要加载内容,对于显示大型文件具有较高的效率。

基本语法:less 要查看的文件

操作说明:
在这里插入图片描述

5.4.13 echo指令

echo输出内容到控制台

基本语法:echo [选项] [输出内容]

应用实例:

案例1:使用echo指令输出环境变量,比如输出 $PATH $HOSTNAME,即 echo $PATH 和 echo $HOSTNAME

案例2:使用echo指令输出 hello,world~ 即 echo “hello,world~”

5.4.14 head指令

head用于显示文件的开头部分内容,默认情况下head指令显示文件的前10行内容

基本语法:

head 文件(查看文件头10行内容)

head -n 5 文件 (查看文件头5行内容,5可以是任意行数)

5.4.15 tail指令

tail用于输出文件中尾部的内容,默认情况下tail指令显示文件的前10行内容

基本语法:

tail 文件(查看文件尾10行内容)

tail -n 5 文件 (查看文件尾5行内容,5可以是任意行数)

tail -f 文件 (实时追踪该文档的所有更新)

5.4.16 >指令和>>指令

> 输出重定向 和 > >追加

基本语法:

ls -l > 文件 (列表的内容写入文件中,是覆盖写的,如果文件不存在会自动创建)

ls -al >> 文件 (列表的内容追加到文件的末尾)

cat 文件1 > 文件2 (将文件1里的内容覆盖到文件2)

echo “内容” >> 文件 (将内容追加到文件的末尾)

5.4.17 ln指令

软链接也称为符号链接,类似于windows里的快捷方式,主要存放了链接其他文件的路径

基本语法:ln -s [原文件或目录] [软链接名] (给原文件创建一个软链接)

应用案例:

案例1:在/home目录下创建一个软链接 myroot ,连接到/root目录,ln -s /root/ /home/myroot

案例2:删除软链接 myroot,rm /home/myroot

细节说明:当我们使用pwd指令查看目录时,仍然看到的是软链接所在的目录

5.4.18 history指令

查看已经执行过的历史命令,也可以执行历史指令

基本语法:history

应用案例:

案例1:显示所有的历史命令,history

案例2:显示最近使用过的10个指令,history 10

案例3:执行历史编号为5的指令,!5

5.5 时间日期类
5.5.1 date指令-显示当前日期

基本语法:

date (显示当前时间)

date + %Y (显示当前年份)

date + %m(显示当前月份)

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

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

5.5.2 date指令-设置日期

基本语法:date -s 字符串时间

应用案例:设置系统当前时间为 2022-07-13 11:18:30,即 date -s “2022-07-13 11:18:30”

5.5.3 cal指令

查看日历

基本语法:cal [选项] (不加选项,显示本月日历)

应用案例:显示2022年日历,即 cal 2022

5.6 搜索查找类
5.6.1 find指令

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

基本语法:find [搜索范围] [选项]

选项说明:

在这里插入图片描述

应用案例:

案例1:按文件名:根据名称查找/home目录下的hello.txt文件,find /home -name hello.txt

案例2:按拥有者:查找/opt目录下,用户名称为nobody的文件,find /opt -user nobody

案例3:查找整个linux系统下大于200M的文件(+n 大于 -n 小于 n 等于),find / -size +200M

5.6.2 locate指令

locate指令可以快速定位文件路径。locate指令利用事先建立的系统中所有文件名称及路径的locate数据库实现快速定位给定的文件。locate指令无需遍历整个文件系统,查询速度较快。为了保证查询结果的准确度,管理员必须定时更新locate时刻。

基本语法:locate 搜索文件

特别说明:由于locate指令基于数据库进行查询,所以第一次运行前,必须使用updatedb指令创建locate数据库

5.6.3 which指令

查看某个指令在哪个目录下,which [命令]

5.6.4 grep指令和管道符号|

grep过滤查找,管道符"|",表示将前一个命令的处理结果输出传递给后面的命令处理

基本语法:grep [选项] 查找内容 源文件

常用选项:

image-20220713180255312

应用案例:在hello.txt 文件中,查找“yes”所在行,并且显示行号 ,

写法1:cat hello.txt | grep “yes”

写法2:grep -n “yes” hello.txt

5.7 压缩和解压类
5.7.1 gzip/gunzip指令

gzip用于压缩文件,gunzip用于解压文件

基本语法:

gzip 文件 (压缩文件,只能将文件压缩为*.gz文件)

gunzip 文件.gz (解压文件命令)

5.7.2 zip/unzip指令

zip用于压缩文件,unzip用于解压,这个在项目打包发布中很有用

基本语法:

zip [选项] XXX.zip 将要压缩的文件内容(压缩文件和目录的命令)

unzip [选项] XXX.zip (解压缩文件)

zip常用选项:-r 递归压缩,即压缩目录

unzip常用选项:-d<目录> 指定解压后文件的存放目录

应用案例:

案例1:将/home下的所有文件即home文件夹进行压缩成 myhome.zip,zip -r myhome.zip /home/

案例2:将myhome.zip 解压到 /opt/tmp 目录下,unzip -d /opt/tmp /home/myhome.zip

5.7.3 tar指令

tar指令是打包指令,最后打包后的文件是 .tar.gz 的文件

基本语法:tar [选项] XXX.tar.gz 打包的内容(打包目录,压缩后的文件格式 .tar.gz)

选项说明:

在这里插入图片描述

应用案例:

案例1:压缩多个文件,将/home/pig.txt 和 /home/cat.txt 压缩成 pc.tar.gz,tar -zcvf pc.tar.gz /home/pig.txt /home/cat.txt

案例2:将/home的文件夹压缩成 myhome.tar.gz,tar -zcvf myhome.tar.gz /home/

案例3:将pc.tar.gz解压到当前目录,tar -zxvf pc.tar.gz

案例4:将myhome.tar.gz解压到/opt/tmp目录下,tar -zxvf /home/myhome.tar.gz -C /opt/tmp(-C是指定目录)

6. 组管理和权限管理

6.1 Linux组的基本介绍

在linux中的每个用户必须属于一个组,不能独立于组外。在linux中每个文件有所有者、所在组(所有者所在的组)、其它组(除所在组以外的其它组)的概念

6.2 文件/目录 所有者

一般为文件的创建者,谁创建了该文件,就自然地成为该文件的所有者。

6.2.1 查看文件的所有者

ls -ahl(或者 ll)
在这里插入图片描述

6.2.2 修改文件的所有者

chown 新用户者 文件/目录(改变所有者)

chown 新用户名:新组名 文件/目录(改变所有者和所在组)

chown -R 新用户名 目录(使目录下的所有子文件或目录递归生效)

6.3 文件/目录 所在组

当某个用户创建了一个文件后,这个文件的所在组就是该用户所在的组(默认)

6.3.1 查看文件/目录所在组

同上,ls -ahl(或者 ll)

6.3.2 修改文件所在组

chgrp 组名 文件名

6.4 其它组

除文件的所有者和所在组的用户外,系统的其它用户都是文件的其它组

6.5 改变用户所在组

在添加用户时,可以指定将该用户添加到哪个组中,同样的用root的管理权限可以改变某个用户所在的组

1.usermod -g 新组名 用户名

2.usermod -d 新目录名 用户名(改变该用户登录的初始目录,用户必须要有进入新目录的权限,才可以修改)

6.6 权限的基本介绍

image-20220714110356497

总共10位,0到9位的说明:

1.第0位确定文件类型(d,-,l,c,b)

  • -是普通文件

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

  • d是目录,相当于windows的文件夹

  • c是字符设备文件,鼠标 ,键盘

  • b是块设备,比如硬盘

2.第1-3位确定所有者(该文件的所有者)拥有该文件的权限

3.第4-6位确定所在组(同用户组的)拥有该文件的权限

4.第7-9位确定其他用户拥有该文件的权限

6.7 rwx权限详解
6.7.1 rwx作用到文件
  • r代表可读(read):可以读取,查看
  • w代表可写(write):可以修改,但是不代表可以删除该文件,删除一个文件的前提条件是对该文件所在的目录有写的权限,才能删除该文件
  • x代表可执行(execute):可以被执行
6.7.2 rwx作用到目录
  • r代表可读(read):可以读取,ls查看目录内容
  • w代表可写(write):可以修改,对目录内创建+删除+重命名目录
  • x代表可执行(execute):可以进入该目录

可用数字表示为;r=4,w=2,x=1 因此rwx=7

6.8 修改权限-chmod
6.8.1 基本说明

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

6.8.2 第一种方式:+、-、=变更权限

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

1.chmod u=rwx,g=rx,o=x 文件/目录名(分别给予权限)

2.chmod o+w 文件/目录名(给其他人增加写权限)

3.chmod a-x 文件/目录名(去除所有人执行的权限)

6.8.3 第二种方式:通过数字变更权限

r=4,w=2,x=1

rwx=4+2+1=7

chmod u=rwx,g=rx,o=x 就相当于 chmod 751

7. 定时任务调度

7.1 crond 任务调度
7.1.1 概述

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

任务调度分类:

1.系统工作:有些重要的工作必须周而复始地执行,如病毒扫描等等

2.个别用户工作:个别用户可能希望执行某些程序,比如对mqsql数据库的备份

7.1.2 基本语法

crontab [选项]

7.1.3 常用选项

在这里插入图片描述

指令:service crond restart (重启任务调度)

7.1.4 快速入门

现要求:每分钟执行一次指令 ls -l /etc/ > /tmp/to.txt

即:先 crontab -e 新建定时任务

再输入:image-20220714210349504

*/1 表示每隔1分钟执行一次

image-20220714210108308

特殊符号的说明:
在这里插入图片描述

特定时间执行的案例:

在这里插入图片描述

7.1.5 应用案例

案例1:每隔1分钟,就将当前的日期信息,追加到 /tmp/mydate 文件中

*/1 * * * * date >> /tmp/mydate

案例2:每隔1分钟,将当前日期和日历都追加到 /home/mycal 文件中

在/home下新建my.sh文件:

date >> /home/mycal
cal >> /home/mycal

*/1 * * * * /home/my.sh(每隔一分钟去执行shell脚本)

案例3:每天凌晨2:00 将mysql数据库testdb,备份到文件/home/db.bak中

0 2 * * * mysqldump -u root -p密码 testdb > /home/db.bak

7.2 at定时任务
7.2.1 基本介绍

image-20220715092236966

  • at命令是一次性定时计划任务,at的守护进程atd会以后台模式运行,检查作业队列来运行
  • 默认情况下,atd守护进程每60秒检查作业队列,有作业时,会检查作业运行时间,如果时间与当前时间匹配,则运行此作业
  • at命令是一次性定时计划任务,执行完一个任务之后不再执行此任务了
  • 在使用at命令的时候,一定要保证atd进程的启动,可以使用相关指令来查看:ps -ef | grep atd
7.2.2 at命令格式

at [选项] [时间]

Ctrl + D (都按两次)结束at命令的输入

Ctrl+删除键 进行删除

image-20220715091844518

7.2.3 at时间定义

在这里插入图片描述

7.2.4 应用案例

案例1:2天后的下午5点执行 /bin/ls /home

at 5pm + 2 days

at> /bin/ls /home

案例2:atq命令来查看系统中,没有执行的工作任务

atq

案例3:明天17点钟,输出时间到 /root/date100.log

at 5pm tomorrow

at> date > /root/date100.log

案例4:2分钟后,输出时间到 /root/date200.log

at now + 2 minutes

at> date > /root/date200.log

案例5:删除已经设置的任务

atrm 编号

8. Linux磁盘分区、挂载

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

image-20220715101134228
在这里插入图片描述

8.1.2 硬盘说明

在这里插入图片描述

8.1.3 查看所有设备挂载情况

命令:lsblk 或者 lsblk -f

image-20220715101632990

8.2 挂载的案例

分区、格式化、挂载、卸载

8.3 磁盘情况查询
8.3.1 查询系统整体磁盘的使用情况

基本语法:df -h

image-20220715110411825

8.3.2 查询指定目录的磁盘占用情况

基本语法:du -h 目录 (默认为当前目录)

-s 指定目录占用大小汇总

-h 带计量单位

-a 含文件

–max-depth=1 子目录深度

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

**应用案例:**查询 /opt 目录的磁盘占用情况,深度为1

du -h --max-depth=1 /opt

image-20220715111648269

8.4 磁盘情况-工作使用指令
8.4.1 统计/opt文件夹下文件的个数

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

(正则,以 - 开头的,即文件,wc进行统计)

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

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

8.4.3 统计/opt文件夹下文件的个数,包括子文件夹里的

ls -lR /opt | grep “^-” | wc -l

(-R 递归)

8.4.4 统计/opt文件夹下目录的个数,包括子文件夹里的

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

8.4.5 以树状显示目录结构

语法:tree 目录

默认情况下没有tree指令,使用 yum install tree 安装
在这里插入图片描述

9. 网络配置

9.1 Linux网络配置原理图

即ip地址必须要与wmnet8在同一个网段下才能ping通,192.168.2.*

image-20220715162655153

9.2 查看网络IP和网关

image-20220715163114198

windows下查看网络配置:ipconfig

linux下查看网络配置:ifconfig

9.3 Linux网络环境配置
9.3.1 第一种方法(自动获取)

linux登录后,通过界面来设置自动获取ip

特点:linux启动后会自动获取IP,缺点是每次自动获取的ip地址可能不一样,因此不能做服务器

image-20220715164344361

9.3.2 第二种方法(指定ip)

直接修改配置文件来指定IP,并可以连接到外网

编辑:vim /etc/sysconfig/network-scripts/ifcfg-ens33

要求:将 ip地址配置成静态的,比如:ip地址为192.168.200.130

进入文件夹后:

需修改:BOOTPROTO=“static”

添加:

#IP地址

IPADDR=192.168.200.130

#网关
GATEWAY=192.168.200.2

#域名解析器
DNS1=192.168.200.2

然后需要修改这里的子网ip

image-20220715163114198

与192.168.200.130在同一网段,并在NAT设置中,将网关修改为192.168.200.2

image-20220715170144276

最后重启网络服务或者重启:

service network restart/reboot

【小白入门 通俗易懂】2021韩顺平 一周学会Linux_哔哩哔哩_bilibili

9.4 设置主机名和host映射
9.4.1 设置主机名
  • 为了方便记忆,可以给linux系统设置主机名,也可以根据需要修改

  • 指令:hostname(查看主机名)

  • 修改文件在 /etc/hostname 指定

  • 修改之后,重启生效

9.4.2 设置host映射

image-20220715173632180

9.5 主机名解析过程分析(Hosts、DNS)

在这里插入图片描述

image-20220715175615324

10. 进程管理

10.1 基本介绍
  • 在Linux中,每个执行的程序都称为一个进程。每个进程都分配一个ID号(pid,进程号)
  • 每个进程都可能以两种方式存在。前台后台,所谓的前台进程就是用户目前的屏幕上可以进行操作的,后台进程则是实际在操作的。
  • 一般系统的服务器都是以后台进程的方式存在,并且都会常驻在系统中,直到关机才结束。
10.2 显示系统执行的进程
10.2.1 基本介绍

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

在这里插入图片描述

一般组合使用:ps -aus

10.2.2 ps详解

image-20220716102328512

10.2.3 应用案例

要求:以全格式显示当前所有的进程,查看进程的父进程。查看sshd的父进程信息

ps -ef 是 以全格式显示当前所有的进程

-e 显示所有进程 -f 全格式

即:ps -ef |grep sshd

10.3 终止进程kill和killall
10.3.1 介绍

若是某个进程执行一半需要停止时,或是已消耗了很大的系统资源时,此时可以停止该进程

10.3.2 基本语法

kill [选项] 进程号

killall 进程名称(进程名称也支持通配符,这在系统因负载过大而变得很慢时很有用)

10.3.3 常用选项

-9:表示强迫进程立即停止

10.3.4 应用案例

案例1:踢到某个非法登录用户

先ps查询sshd登录用户的进程号,然后:kill 某个用户的进程号

案例2:终止远程登录服务sshd,在适当时候再次重启 sshd服务

image-20220716104921212即:kill 7665

重启 :/bin/systemctl start sshd.service

案例3:终止多个gedit(文本编辑器)

killall gedit

案例4:强制杀掉一个终端

kill -9 bash对应的进程号

10.4 查看进程树pstree
10.4.1 基本语法

pstree [选项]

10.4.2 常用选项

-p:显示进程的PID

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

10.4.3 应用案例

案例1:以树状的形式显示进程的pid

pstree -p

案例2:以树状的形式显示进程的用户id

pstree -u

10.5 服务(service)管理
10.5.1 介绍

服务(service)本质就是进程,但是是运行在后台的,通常都会监听某个端口,等待其它程序的请求,比如(mysqld,sshd,防火墙等),因此我们又称为守护进程。

image-20220716113039174

10.5.2 service管理指令

image-20220716113234107

10.5.3 查看服务名

方式1:输入:setup,可以看到全部的系统服务

image-20220716114235067

image-20220716114253250

带*表示自动启动的服务,按空格可选择,按tab退出

方式2:ls -l /etc/init.d

10.5.4 服务的运行级别(runlevel)

在这里插入图片描述

10.5.5 chkconfig指令

设置服务在不同的运行级别上是否自启动

image-20220716115606113

使用细节:设置完之后,需要reboot才能生效

10.5.6 systemctl 管理指令

基本语法:systemctl [start|stop|restart|status] 服务名

systemctl指令管理的服务在 /usr/lib/systemd/system 查看

10.5.7 systemctl 设置服务的自启动状态

image-20220716120517250

10.5.8 细节讨论

在这里插入图片描述

10.5.9 防火墙

image-20220716122005909

在客户端通过telnet测试端口

在这里插入图片描述

在Linux服务器防火墙开启时:

在这里插入图片描述

客户端测试端口会失败:

image-20220716123602080

我们再关闭Linux的防火墙:

在这里插入图片描述

再次测试:

在这里插入图片描述

即可成功:

image-20220716123737817

10.5.10 firewall指令-打开/关闭端口

image-20220716143258910

10.5.11 应用案例

1.启用防火墙,测试111端口时候能telnet,不能

2.开放111端口,firewall-cmd --permanent --add-port=111/tcp,然后需要 firewall-cmd --reload

2.关闭111端口,firewall-cmd --permanent --remove-port=111/tcp,然后需要 firewall-cmd --reload

10.6 动态监控进程
10.6.1 介绍

top与ps命令很类似。它们都用来显示正在执行的进程 。top与ps最大的不同之处,在于top在执行一段时间后可以更新正在运行的进程。

10.6.2 基本语法

top [选项]

10.6.3 选项说明

在这里插入图片描述

10.6.4 交互操作说明

在这里插入图片描述

10.6.5 应用案例

image-20220716150348562

10.7 监控网络状态
10.7.1 查看系统网络情况netstat

基本语法:

netstat [选项]

选项说明:

-an 按一定顺序排列输出

-p 显示哪个进程在调用

一般会直接使用 netstat -anp

11. RPM与YUM

11.1 rpm包的管理
11.1.1 介绍

在这里插入图片描述

11.1.2 rpm包的简单查询指令

查询已安装的rpm列表:rpm -qa | grep XXX

11.1.3 rpm包名基本格式

image-20220717090338124

11.1.4 rpm包的其它查询指令

image-20220717090906781

11.1.5 卸载rpm包

基本语法:rpm -e rpm包的名称//erase

应用案例:删除firefox安装包,rpm -e firefox

细节讨论:image-20220717091546600

11.1.6 安装rpm包

基本语法:rpm -ivh rpm包全路径名称 (安装文件包)

参数说明:

i=install 安装

v=verbose 提示

h=hash 进度条

11.2 yum
11.2.1 介绍

yum是一个shell前端软件包管理器。基于rpm包管理,能够从指定的服务器自动下载rpm包并且安装,可以自动处理依赖性关系,并且一次安装所有依赖的软件包

11.2.2 yum的基本指令

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

yum list | grep xx

安装指定的yum包

yum install xxx

12. Shell编程

Shell是一个命令行解释器,它为用户提供了一个向Linux内核发送请求以便运行程序的界面系统级程序,用户可以用Shell来启动、挂起、停止甚至编写一些程序

12.1 Shell脚本的执行方式
12.1.1 脚本格式要求
  • 以 #!/bin/bash 开头
  • 脚本要有可执行权限
12.1.2 编写输出“hello world”的脚本
#!/bin/bash
echo "helllo world~"
12.1.3 脚本的常用执行方式
  • 方式1(输入脚本的绝对路径或相对路径):首先赋予脚本+x的权限,再执行脚本
  • 方式2(sh 脚本):不用赋予脚本+x的权限,直接执行即可
12.2 Shell的变量
12.2.1 Shell变量介绍
  • Shell变量分为系统变量和用户自定义变量
  • 系统变量: H O M E , HOME, HOMEPWD, S H E L L , SHELL, SHELLUSER
  • set指令,显示当前shell中所有变量
12.2.2 Shell变量的定义

image-20220720094152601

image-20220720094845857

12.2.3 定义规则

image-20220720095405408

image-20220720095433558

12.3 设置环境变量

在/etc/profile 文件中添加环境变量

在这里插入图片描述

12.4 位置参数变量
12.4.1 介绍

image-20220720100912594

12.4.2 基本语法

在这里插入图片描述

12.5 预定义变量

就是shell设计者事先已经定义好的变量,可以在shell脚本中使用

image-20220720101937103

三、Linux高级篇

1. 日志管理

1.1 基本介绍
  • 日志文件是重要的系统信息文件,其中记录了许多重要的系统事件,包括用户的登录信息、系统的启动信息、系统的安全信息、邮件相关信息、各种服务相关信息等
  • 日志对于安全来说也很重要,它记录了系统每天发生的各种事情,通过日志来检查错误发生的原因,或者受到攻击时,攻击者留下的痕迹
  • 日志就是用来记录重大事件的工具
1.2 系统常用日志
  • /var/log/ 目录就是系统日志文件的保存位置:

image-20220717101753017

  • 系统常用的日志

image-20220717101937208

1.3 日志管理服务 rsyslogd

查询Linux中的 rsyslogd 服务是否启动:

ps aux | grep “rsyslog” | grep -v “grep”(grep -v 反向匹配,只选择不匹配的行,这里即挑选出不含"grep"的)

查询 rsyslogd 服务的自启动状态:

systemctl list-unit-files | grep rsyslog

rsyslogd 服务的配置文件【重点】:

/etc/rsyslog.conf

image-20220718103750354

image-20220718103832604

由日志服务rsyslogd记录的日志文件,日志文件的格式包含以下4列:
在这里插入图片描述

日志管理服务的应用实例:自定义日志

要求:在/etc/rsyslog.conf 中添加一个日志文件 /var/log/zmc.log,当有事件发送时(比如sshd服务相关事件),该文件会接收到信息并保存。通过重启、登录,看看是否有日志保存

vim /etc/rsyslog.conf,添加配置日志

image-20220718105252727

然后,> /var/log/zmc.log 创建空的日志文件

重启,登录后,查看日志文件如下:

image-20220718105808800

自定义日志成功。

1.4 日志轮替
1.4.1 基本介绍

日志轮替就是把旧的日志文件移动并改名,同时建立新的空日志文件,当旧日志文件超出保存范围之后,就会删除

1.4.2 日志轮替文件命名

image-20220718113356197

1.4.3 logrotate配置文件

image-20220718114011475

参数说明:

image-20220718114201668

1.4.4 把自己的日志加入日志轮替
  • 第一种方法:直接在/etc/logrotate.conf 配置文件中写入该日志的轮替策略
  • 第二种方法:在/etc/logrotate.d/目录中新建立该日志的轮替文件,在该轮替文件中写入正确的轮替策略 ,因为该目录中的文件都会被 "include"到/etc/logrotate.conf配置文件中,所以也会把日志加入轮替
  • 推荐使用第二种方法,因为系统中需要轮替的日志非常多,如果全部直接写入 /etc/logrotate.conf 配置文件,那么这个文件的可管理性就会非常差,不利于此文件的维护
  • 在/etc/logrotate.d/ 配置轮替文件一览:在这里插入图片描述
1.4.5 日志轮替机制原理

日志轮替之所以可以在指定的时间备份日志,是依赖系统定时任务。在/etc/cron.daily/目录,就会发现这个目录中是有logrotate文件(可执行),logrotate通过这个文件依赖定时任务执行的

image-20220718121058667

1.5 查看内存日志

image-20220718121259024

2. Linux系统备份与恢复

2.1 基本介绍

实体机没有办法做快照,有两种方式进行备份和恢复:

  • 把需要的文件(或者分区)用tar打包就行,下次需要恢复的时候,再解压开覆盖即可
  • 使用dumprestore命令

没有安装过dump和restore指令的,需要先安装:

yum -y install dump

yum -y install restore

2.2 使用dump完成备份
2.2.1 dump基本介绍

dump支持分卷和增量备份(所谓增量备份是指上次备份后 修改/增加过的文件,也称差异备份)

2.2.2 dump语法说明

image-20220719181820156

2.2.3 dump应用案例

案例1:将/boot 目录所有内容备份到 /opt/boot.bak.bz2 文件中,备份层级为"0"

dump -0uj -f /opt/boot.bak0.bz2 /boot

案例2:再次备份/boot 目录,备份层级为"1"(只备份上次使用层次"0"备份后发生 过改变的数据)

dump -1uj -f /opt/boot.bak1.bz2 /boot

2.2.4 dump -W

显示需要备份的文件及最后一次备份的层级,时间,日期

2.2.5 查看备份时间文件

cat /etc/dumpdates

2.2.6 dump 备份文件或者目录

只有分区支持增量备份,

如果备份文件或者目录,只能使用0级别备份

2.2.7 提醒

重要的备份文件,比如数据区,建议上传到其他服务器上保存!

2.3 使用restore完成恢复
2.3.1 基本介绍

restore用于从dump生成的备份文件中恢复原文件

2.3.2 restore基本语法

在这里插入图片描述

2.3.3 应用案例

在这里插入图片描述

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值