Linux学习

167 阅读13分钟

1、Linux的介绍

1.1 应用领域

image-20220308151405065

1.2 学习路线和方法

image-20220308152037676

1.3 基本介绍

image-20220308152853815

image-20220308152533900

image-20220308152936012

1.4 Linux和Unix的关系

  • Unix的产生

image-20220308153147507

  • Linux的产生

image-20220308153216635

  • 两者的关系

image-20220308153249552

  • Linux和Windows的比较

image-20220308154440870

2、环境搭建和工具安装

我有阿里云服务器。。。。

2.1 文件基础目录结构

1.基本介绍

image-20220308161334007

2.具体介绍

image-20220308163041062

image-20220308163057652

image-20220308163118973

image-20220308163220886

image-20220308163251776

  • 总结

1、linux的目录中有且只要有一个根目录

2、linux的各个目录存放的内容是规划好的,不要乱放文件

3、linux是以文件的形式管理我们的设备,因此linux系统,一切皆为文件

4、linux的各个文件目录下面存放什么内容,需要有个认识

5、要有一个linux目录树的概念

3、远程登录和文件下载

3.1 远程登录--Xshell

  • 图解

image-20220308174557686

  • 说明

image-20220308174705039

我的帐号 : root

密码 : 大小写加@

image-20220308181035468

  • 命令测试
cd /home/
touch hello

image-20220308181230447

3.2 上传下载文件--Xftp

image-20220308181428099

4、vi和vim编辑器

4.1基本介绍

image-20220308211826808

4.2 vi和vim的三种常见模式

image-20220308212215959

4.3 入门案例

  • 模式切换

image-20220308213455232

命令含义
wq保存并退出
q退出
q!强制退出
  • 实操
  1. 先输入 vim Hello.java

  2. 按 i 进入插入模式

  3. public class Hello{
      
            public static void main(String[] args){
    
                    System.out.println("Hello,Linux!");
            }
    }
    
    
  4. 输入 : ESC 退出 插入模式

  5. 输入 : ":" 进入 命令行模式

  6. 输入: "wq"命令 表示写入并退出文档

4.4 快捷键的使用

注意:所有的快捷键都需要在正常模式下输入,在插入模式下只能输入文本字符

  • 拷贝光标所在当前行 : 【yy】 ; 拷贝多行 : 【__yy】 ; 在光标所在行粘贴 : 【p】

  • 删除光标所在当前行 : 【dd】 ; 删除多行 : 【__dd】

  • 在文件中查询某个单词 : 先在正常模式下输入 :【/】 ; 然后在输入要查询的单词

  • 设置文件的行号,取消文件的行号 : 在命令模式下输入 【set nu】 或者 【set nonu 】

  • 查看 /etc/profile 文件 , 使用快捷键到文档的最末行【G】 和 最首行【gg】

  • 撤销动作 【u】

  • 移动光标到20行 先输入【20】 , 在输入【shift+g】

  • 键盘图

image-20220308220826770

5、关机、重启、注销

5.1 关机&重启命令

命令说明
shutdown -h now表示立即关机
shutdown -h 1表示1分钟之后关机
shutdown -r now立即重启
halt直接使用,效果等效于关机
reboot就是重启系统
syn把内存的数据同步到磁盘上·

5.2 用户的登录和注销

image-20220308223227273

6、用户管理

6.1基本介绍

image-20220309154833630

image-20220309154915700

6.2 添加用户

  • 添加语法 :

      		【useradd  (选项)  用户名】
    
  • 结果

image-20220309155228574

  • 细节说明
  1. 当用户创建成功,会自动在home目录下创建同名子目录
  2. 也可以使用 【useradd -d (指定目录)新的用户名】来创建

6.3 指定密码和修改密码

  • 基本语法

      		【passwd  用户名】
    
  • 结果

image-20220309161013214=

6.4 删除用户

  • 基本语法
  1. 【userdel 用户名】 保留了home目录下面的用户子目录

  2. 【userdel -r 用户名】 删除了home目录下的子目录 (最好还是要保留)

6.5 查询、切换用户

  • 基本语法

    1. 查询用户 : 【id 用户名】
    2. 切换用户 : 【su 】
    3. 查看当前用户 :【whoami / who am i】
  • 结果

image-20220309161611743

image-20220309162118798

image-20220309162327500

6.6 组的管理

  • 基本语法

    1. 创建组 : 【groupadd 组名】
    2. 删除组 : 【groupdel 组名】
    3. 增加用户时加上组名 : 【useradd -g 用户组 用户名】
    4. 修改用户组 : 【usermod -g 新用户组 用户名】
  • 结果

image-20220309163623748

image-20220309164829709

6.7 用户和组的配置文件

image-20220309170005742

7、实用指令

7.1 运行级别和找回root密码

  • 运行级别

image-20220309173308981

image-20220309173234383

  • 找回root密码

注意:主要一点是进入到单用户模式

image-20220309180243821

7.2 帮助指令类

image-20220310145511653

1.man指令

  • 基本语法

               【man  指令】
    
  • 实例

image-20220310145259875

2.help指令

  • 基本语法

    help     指令】
    
  • 实例

image-20220310145829905

7.3 文件目录类

1. pwd指令(路径)

  • 基本语法

                      显示当前目录的绝对路径
      
      			  【pwd
  • 实例

  1. 查看绝对路径

image-20220310150157094

2. ls指令(显示目录)

  • 基本语法

    ls  (选项)(目录或是文件)】
    
  • 常用选项

  1. -a 显示目录所有的文件和目录,包括隐藏的
  2. -l 以列表的方式显示信息
  • 实例

image-20220310150632076

3. cd指令(跳转)

  • 基本语法

    cd  (参数)】
    
  • 常用参数

  1. 绝对路径:从根目录开始定位
  2. 相对路劲:从当前工作目录开始定位到指定目录
  3. cd ~ :回到自己的家目录
  4. cd .. :回到当前目录的上级目录
  • 案例
  1. 绝对目录和相对目录

image-20220310151310007

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

image-20220310151340925

  1. 回到自己的家目录

image-20220310151538949

4. mkdir指令(创建空目录)

  • 基本语法

      				用于创建目录
      
      				【mkdir  (选项) 目录】
    
  • 常用选项

  1. -p :创建多级目录
  • 实例

image-20220310152014959

image-20220310152159868

5. rmdir指令(删除空目录)

  • 基本语法

      				删除空目录
      
      				【rmdir   (选项) 要删除的空目录】
    
  • 实例

  1. 删除空目录

image-20220310152446622

  1. 删除非空目录(失败)

image-20220310152710757

  1. 删除非空目录( 【使用 rm -rf 目录】)

image-20220310154155891

6. touch指令(创建空文件)

  • 基本语法

      				创建空文件
      
      				【touch  文件名】
    
  • 实例

  1. 创建空文件Hello.txt

image-20220310154727879

  1. 一次创建多个文件

image-20220310154820663

7. cp指令(拷贝)

  • 基本语法

      				拷贝文件到指定目录
      
      			  【cp  (选项) 指定目录 】
    
  • 常用选项

  1. -r : 递归复制整个文件夹
  • 实例
  1. 将/home/aaa.txt 拷贝到 /home/bbb 目录下
    image-20220310155814621

image-20220310155754353

  1. 使用 -r 选项 将 bbb目录全部拷贝到test目录下

image-20220310160410455

  1. 再次拷贝(提示覆盖)

image-20220310160716183

  1. 通过使用 \cp 来取消提示

image-20220310160807238

8. rm指令(删除)

  • 基本语法

      				指令移除文件或者目录
      
      			  【rm  (选项) 要删除的文件或者目录】
    
  • 常用选项

  1. -r : 遍历删除整个文件夹
  2. -f : 强制删除不要提示
  • 实例
  1. 删除文件

image-20220310161345561

  1. 删除整个文件夹

image-20220310161452597

  1. 删除但不提示

image-20220310161559150

9. mv指令(移动)

  • 基本指令

      				移动文件或目录或重命名
      
      			  【mv  old   new】:重命名
      
      			  【mv  文件名  指定地点  】:移动
    
  • 案例

  1. 重命名文件

image-20220310161933239

  1. 移动文件或者目录

image-20220310162115366

image-20220310162205246

10. cat指令(查看)

  • 基本语法

      				查看文件内容
      
      			  【cat (选项)要查看的文件】
    
  • 常用选项

  1. -n : 显示行号
  • 实例
  1. 以只读的方式,显示行号的打开

image-20220310162441043

  1. 分页的方式 加上【| more】(管道命令)打开文件查看

image-20220310162924255

11. more指令(高级查看)

  • 基本语法

image-20220310163105569

12. less指令(查看大文件)

  • 基本语法

image-20220310163355816

  • 实例
  1. 看小说

image-20220310163837970

13. 输出重定向和追加指令(> 和 >>)

  • 基本语法
  1. 【 ls -l > 文件】 : 列表内容覆盖写入到文件中

  2. 【ls -al >> 文件】: 列表内容追加到文件的末尾

  3. 【cat 文件1 >> 文件2】: 将文件1的内容追加到文件2

  • 实例
  1. 列表覆盖

image-20220310165152104

  1. 列表追加

image-20220310165239736

  1. 内容覆盖

image-20220310165356599

14. echo指令(输出内容)

  • 基本语法

      				输出内容到控制台
      
      				【echo (选项)输出内容】
    
  • 实例

  1. 输出环境变量

image-20220311144529683

  1. 指令输出:“hello world”

image-20220311144626495

15. head指令(看开头)

  • 基本语法

      				显示文件的开头部分,默认是前十行
      
      			    【head 文件】
      
      				【head -n  (行数) 文件】
    
  • 实例

  1. 默认的

image-20220311145000072

  1. 自定义行数

image-20220311145027278

16. tail指令(结尾、更新)

  • 基本语法

      				输出文件中尾部的内容,默认后十行
      
      				【tail   文件】
      
      				【tail   -n  (行数) 文件】
      
      				【tail   -f   文件】 : 实时追踪该文件的所有更新
    
  • 实例

  1. 默认

image-20220311145523585

  1. 自定义

image-20220311145542660

  1. 追踪更新
一个用户使用 【tail -f 文件】来查看该文件 ,这时如果该文件的内容出现了变化,则发生的变化会实时的显示出来。。。常用于查看日志文件,调试

17. ln 指令(链接)

  • 基本语法

      				  给原文件创建一个快捷方式
    
      				【ln -s (原文件)(链接文件名)】 
    
  • 实例

  1. 给root目录创建一个软链接

image-20220311150912661

  • 详细内容

image-20220311150938905

  • 使用

image-20220311151123089

虽然路径名不是 /root 
但是可以看见root下的所有文件
  1. 删除链接

image-20220311151426887

18. history指令(历史)

  • 基本语法

      				可以查看已经执行过的指令,或者执行历史指令
      
      				【history
  • 实例

  1. 查看所有历史指令

image-20220311151801570

  1. 显示历史10个指令

image-20220311152012512

  1. 执行历史上第 ?个指令

                                            【!(指令行数)】
    

image-20220311152223144

7.4 时间日期类

1. date指令(当前日期)

  • 基本语法

image-20220311152627523

  • 实例
  1. 显示当前日期

image-20220311152742999

  1. 显示当前年份

image-20220311152818541

  1. 显示当前月份

image-20220311152854838

  1. 显示当前天

image-20220311152910354

  1. 显示年月日时分秒

image-20220311153147830

  1. 显示年月日

image-20220311153247407

  1. 多种变化,【 “ ” 】中任意拼接

image-20220311153658095

2. 设置时间

  • 基本语法

      				设置当前系统时间
      
      			   【date   -s   时间】
    
  • 实例

image-20220311154016410

3. 当前硬件时间

  • 基本语法

      				【hwclock --show】  : 查看硬件时间
      
      				【hwclock --hctosys】:以硬件时间为基准,修改系统时间
    

4. cal指令(日历)

  • 基本语法

      				【cal  (选项)】
    
  • 实例

  1. 显示当前日历时间

image-20220311154729977

  1. 显示2020年日历

image-20220311154804063

  1. 显示2020年2月的日历

image-20220311155456150

  1. 显示2222年2月22日的日历

image-20220311155529294

7.5 搜索查找类

1. find指令

  • 基本语法

      				从指定目录开始,向下遍历查找目录。。符合条件的输出在控制台
      
      				【find  (搜索范围) (选项)】
    
  • 选项说明

image-20220311161746928

文件大小 : +n 表示大于   -n 表示小于  =n 表示等于
  • 实例
  1. 按文件名

image-20220311162055359

  1. 按用户名

image-20220311162116190

  1. 按文件大小
  • 大于28M

image-20220311162432999

  • 等于28M

image-20220311162625367

  1. 查找带txt后缀的文件

image-20220311164356822

2. locate指令

image-20220311164700856

  1. 建立locate数据库

image-20220311165131736

  1. 查询Test.txt

image-20220311165143582

3. grep指令和管道符号|

  • 基本语法

      				grep过滤查找,
      
      				管道符“|”,表示将前一个命令的处理结果输出传递给后面的命令处理。
      
      		  	【 grep  (选项)查找内容  原文件】
    
  • 常用选项

image-20220311170109553

  • 实例
  1. 在root下的Test.txt查找ok333,显示行号

image-20220311170823740

  1. 用cat指令查看该文件,把结果传递给后面的grep来过滤

image-20220311171023020

  1. 不区分大小写的查看

image-20220311171255743

7.6 压缩和解压缩类

1. gzip和gunzip指令

  • 基本语法

      				【gzip   文件】 : 用于压缩文件
      
      				【gunzip  文件.gz】: 用于解压缩文件
    
  • 注意 : 使用gzip压缩后,原文件会消失

  • 实例

  1. gzip压缩

image-20220312162128506

  1. gunzip解压缩

image-20220312162204542

2. zip和unzip指令

  • 基本语法

    zip  (选项)(xxx.zip)  内容】 : 压缩内容(文件或者目录)
      
      				【unzip (选项)(xxx.zip)】:解压缩文件
    
  • 常用选项

  1.       -r  :   递归压缩,压缩目录
    
  2.      -d <路径> :    指定解压后内容放在哪里
    
  • 实例
  1. 压缩文件

image-20220312162845568

  1. 解压文件到指定位置

image-20220312162943079

  1. 压缩目录

image-20220312163130574

  1. 解压是目录的压缩包

image-20220312163409566

3. tar指令

  • 基本语法

      				打包指令,为   *.tar.gz 的文件
      
      				【tar  (选项) 文件.tar.gz】
      
      				【tar -czvf】:压缩
      
      				【tar -xzvf】:解压
    
  • 常用选项

image-20220312163815558

  • 实例
  1. 压缩多个文件

image-20220312164312558

  1. 将/home下的所有文件打包

image-20220312164505764

image-20220312164515781

  1. 解压文件到当前目录

image-20220312164818150

  1. 解压文件到指定路径

image-20220312165032573

image-20220312165042984

8、组管理和权限管理

8.1 组管理

1. 组的基本介绍

image-20220312172044851

image-20220312172104435

image-20220312172132788

2. 对文件/目录的所有者操作

image-20220312172810406

image-20220312174818688

image-20220312175107719

  • 实例
  1. 创建属于police 的 用户 tom , 用tom 创建 ok.txt 文件

image-20220312173551956

  1. 查看创建的文件

image-20220312173602889

  1. 修改文件的所有者
					将由root创建的okk文件,所有者修改为tom

image-20220312174148912

  1. 修改文件的所在组

image-20220312174923865

  1. 改变用户所在组

image-20220312175755516

8.2 权限的基本介绍

1.图示

image-20220313155532808

2. rwx的权限详解

image-20220313155921480

3. 实际案例

image-20220313160535872

8.3 权限管理

1. 修改权限(chmod)

  • 基本语法

image-20220313161204455

image-20220313162440451

  • 实例
  1. 给abc文件设置权限

image-20220313161951931

  1. 给abc文件的所有者除去执行权限,增加组写的权限

image-20220313162324150

  1. 给所有的用户添加读

image-20220313162416464

2. 修改文件所有者(chown)

  • 基本语法

image-20220313162813204

  • 案例
  1. 修改abc的所有者为tom

image-20220313163159751

  1. 修改root/Test/的所有文件所有者为tom,组为bandit

image-20220313163526603

3. 修改文件所在组(chgrp)

image-20220313164429665

8.4 总结案例

  • 题目

image-20220313164534255

  • 实操
  1. 创建组

image-20220313170058762

  1. 创建用户

image-20220313170319531

image-20220313170531148

  1. jack创建文件,修改权限

image-20220313170852154

image-20220313170919177

  1. jack修改文件的限权

image-20220313171235330

  1. xh投靠警察,看看是否可以读写文件

image-20220313171420994

image-20220313172320795

9、任务调度(crontab)

image-20220314134919504

9.1 概述

image-20220314134431346

9.2 使用

  • 基本语法

      				【crontab (选项)】
    
  • 常用选项

image-20220314134558622

  • 实例

image-20220314134639201

  1. 输入crontab -e 进入编辑模式
  2. 输入 : 【 */ * * * * ls -l /etc/ >> /tmp/to.txt 】
  3. 当保存退出后就启动程序
  4. 每分钟都会自动生成文件的输入命令
  • 参数说明

image-20220314140350124

image-20220314140848339

image-20220314141014402

9.3 几个应用实例

image-20220314141210550

  1. 每隔1分钟就写入日期

image-20220314141509603

image-20220314141920034

  1. 每隔1分钟就从/home/mycal.sh 中读取指令 (将日期和日历写入)(要注意给mycal.sh 执行和写的权限)

image-20220314142407946

image-20220314142631897

image-20220314143013538

10、磁盘分区、挂载

10.1 磁盘分区基本知识

image-20220314143740641

image-20220314143807346

10.2 Linux分区

  • 基本原理

image-20220314153341142

  • 硬盘说明

image-20220314154424227

image-20220314154353366

10.3 查看磁盘分区

  1. 查看系统分区和挂载情况

image-20220314155140413

  1. 查看内存大小

image-20220314155347209

10.4 给Linux增加分区

image-20220314155609417

  1. 添加硬盘

image-20220314160325797

  1. 新增分区处理

image-20220314160417224

  1. 格式化磁盘

image-20220314160508561

image-20220314160556500

image-20220314160719560

10.5 磁盘情况查询

1. 基本查询

image-20220314161103086

  • 实例

image-20220314161128632

image-20220314161719578

  • 实例
  1. -h 选项

image-20220314162008772

  1. -s 选项

image-20220314162109193

  1. -a 选项

image-20220314162133508

  1. --max-depth = 1

image-20220314162244107

2. 工作实用

image-20220314162401964

  1. 显示home所有文件 , 然后交给后面筛选“-”打头的(^ 是定位符), 然后交给后面(wc)统计个数

image-20220314162650150

  1. 显示home所有文件 , 然后交给后面筛选“d”打头的(^ 是定位符), 然后交给后面(wc)统计个数

image-20220314162901507

image-20220314163010638

image-20220314163050998

image-20220314163136538

11、网络配置

  • 模式图

image-20220315153336573

  • 查看 linux 的ip地址

image-20220315152830543

  • 查看 Windows 的ip地址

image-20220315152909477

12、进程管理

12.1 基本介绍

image-20220315154231633

12.2 查看进程(ps指令)

image-20220315154735513

image-20220315160109995

image-20220315160224802

  • 实例
  1. 【ps -aux | more】

image-20220315155613703

  1. 只查看sshd服务 【ps -aux | grep sshd】

image-20220315155940130

  1. 显示父进程 【ps -ef | more】

image-20220315160319438

12.3 终止进程(kill指令)

  • 基本语法

    kill  (选项) 进程号】  : 通过进程号杀死进程
      
      				【killall  进程名称】: 通过进程名杀死进程,支持使用通配符,这在系统运行缓慢时,很有用
    
  • 常用选项

  1. -9 表示强迫进程停止
  • 实例

image-20220315161010417

  1. 发现tom登录,踢出tom
  • 发现登录

image-20220315161729481

  • 踢出 kill tom的进程号

image-20220315161912191

  • 踢出成功

image-20220315161900785

  1. 终止远程服务sshd,需要时再开启

image-20220315162955442

image-20220315162941900

  1. 强制终止一个终端

image-20220315163156786

  1. 查看进程树

image-20220315163251562

image-20220315163348522

12.4 服务管理

1. 介绍

image-20220315173430184 image-20220315173516377

2. 防火墙指令

image-20220315173421780

  • 案例
  1. 下载安装防火墙,查看防火墙状态

image-20220315174412365

  1. 关闭防火墙

image-20220315174543756

  1. 细节讨论

image-20220315174820386

3. 查看服务

  • 基本语法

    ls -l /etc/init.d/】
    
  • 实例

image-20220315175302867

4. 服务器的运行级别(重点)

image-20220315175400323

image-20220315175714948

5. chkconfig指令

image-20220315180556341

  • 实例
  1. 查看服务

image-20220315180714747

12.5 查看网络状况

image-20220316141158881

  • 实例
  1. 查看服务名为sshd的服务信息

image-20220316141254343

  1. 查看所有的网络服务

image-20220316143148639

12.6 动态监控进程

  • 基本语法

    top  (选项)】
    
  • 常用选项

image-20220316141820377

image-20220316142251390

  • 实例
  1. top 查看 进程

image-20220316142543533

  1. 终止指定进程

image-20220316142757314

13、RPM管理

13.1 基本介绍

image-20220316143833734

13.2 软件包查询指令

  • 基本语法

      				【 rpm  - qa | grep (应用名称)】
    

image-20220316144631942

image-20220316144555349

  • 实例
  1. 查找Python的软件包

image-20220316144406824

  1. 查询所有的软件包

image-20220316153600270

  1. 查询软件包信息

image-20220316153742470

  1. 查看软件包的文件和所在位置

image-20220316153835571

  1. 查询文件所属软件包

image-20220316153924749

13.3 卸载软件包

  • 基本语法

      				【rpm -e   RPM包的名称】
    

image-20220316154130478

13.4 安装RPM包

  • 基本语法

      				【rpm -ivh  软件包的路径名】
    
  • 参数说明

  1. i : install 安装
  2. v :verbose 提示
  3. h : hash 进度条
  • 实例

image-20220316154933584

image-20220316154951478

14、YUM管理

14.1 基本介绍

image-20220316155128472

image-20220316155337944

14.2 使用

  • 实例
  1. 查看yum服务器提供的所有包

image-20220316160338195

  1. 查看指定的包

image-20220316160535870

  1. 安装 【yum install 软件名】

image-20220316160645042

15、javaEE定制

image-20220316161220294

  • 文件上传

image-20220316161721051

15.1 JDK的安装和配置

  1. 解压文件 【tar -xzvf jdk-7u79-linux-x64.gz】

image-20220316162938983

  1. 配置环境变量

image-20220316162517313

环境变量注册完后要注销用户,重新登录

  1. 测试 java命令

image-20220316163226308

  1. 写一个简单的java文件

image-20220316163509327

15.2 Tomcat的安装和配置

  1. 解压

image-20220316163655122

  1. 启动(在tomcat的bin目录下,启动)

image-20220316170230501

  1. 要注意防火墙的设置
  • 启动防火墙和放行端口

image-20220316173013248

  • 重启防火墙

image-20220316173100231

  • 监听端口

image-20220316173118013

  • 找到8080端口,说明tomcat启动成功

image-20220316173144238

  1. 测试成功

image-20220316172922734

15.3 MySql的安装和配置

  1. 查询本机是否有mysql

image-20220317151301849

  1. 有的话,删除
rpm -e mysql-libs
rpm -e mysql-common
  1. 安装编译环境
yum -y install make gcc-c++ cmake bison-devel ncurses-devel
  1. 解压mysql
tar -xzvf mysql-5.6.14.tar.gz
  1. 编译
cmake -DCMAKE_INSTALL_PREFIX=/usr/local/mysql-DMYSQL_UNIX_ADDR=/usr/local/mysql/mysql.sock-DDEFAULT_CHARSET=utf8-DDEFAULT_COLLATION=utf8_general_ci-DWITH_MYISAM_STORAGE_ENGINE=1-DWITH_INNOBASE_STORAGE_ENGINE=1-DWITH_MEMORY_STORAGE_ENGINE=1-DWITH_READLINE=1 -DENABLED_LOCAL_INFILE=1-DMYSQL_DATADIR=/var/mysql/data-DMYSQL_USER=mysql -DMYSQL_TCP_PORT=3306
  1. 安装
make && make install
mount -t iso9660 -o loop /dev/cdrom /mnt/rheliso/
  1. 查看是否有Mysql用户组

image-20220317152801826

  1. 如果没有,则创建用户组