Linux学习笔记

GNU/Linux学习笔记

一、Linux概述

1、Unix来源:
image-202104252029305292、Linux来源:image-202104252030236333、Unix和Linux关系:image-202104252031229804、安装:一般都安装在Windows虚拟机Vmware上,傻瓜式安装。

二、重要知识点

1、网络链接的三种模式:

image-20210425203515271

2、Linux世界里,一切皆文件。

3、绝对路径和相对路径:

image-20210425214508415

三、常用指令与功能

1、目录结构

  • /bin (/usr/bin、/usr/local/bin)存放经常使用的命令
  • /sbin (/sur/sbin、/usr/local/sbin) 存放系统管理员使用的系统管理程序。
  • /home 存放普通用户的主目录,Linux中每个用户都有自己的目录,以用户账号命名。
  • /root 系统管理员的主目录。
  • /lib 系统开机所需的动态共享库。
  • /etc 所有系统管理所需的配置文件和子目录,如安装mysql数据库my.conf。
  • /usr 存放用户的应用程序和文件,功能类似window下的program files。
  • /opt 存放主机额外安装软件所安装的目录。一般通过编译源码的方式安装程序。

2、远程登陆到Linux

  • 公司开发场景:

一般是小组成员共享开发,项目运行在公网上,程序员需要远程登录到Linux进行管理和开发;常用工具有:Xshwll6(windows远程登录到公司的服务器,操作)、Xftp6(远程在服务器上传、下载文件)

3、Vim编辑器

Linux系统内置Vi编辑器,vim是vi的增强版

  • vim的三种模式:

    • 正常模式:以vim打开一个文档就可进入,如vim hello.java ,使用【上下左右】按键移动光标,可以【删除字符】或【删除整行】也可以【复制、粘贴】文件内容
    • 插入模式:要对文本进行编辑,输入i即可。
    • 命令行模式:输入esc再输入:即可。该模式可以读取、保存、替换、离开vim、显示行号等。
    • 各模式切换图:
      image-20210425210238569
  • 常用快捷键:

image-20210425210533150

4、关机&重启

shutdown -h now 立刻关机
shutdown -h 1 "hello,1分钟后会关机了"
shutdown -r now 重启
halt 关机
reboot 重启
sync 把内存数据同步到磁盘(建议关机前先运行此命令)

5、用户登录&注销

  • 超级用户:root;如何由普通用户切换到root:“su - root”
  • 注销:logout

6、用户&用户组管理

(1)用户
  • 添加账户: useradd 用户名(此时默认在家目录创建用户); user -d 指定目录
  • 指定/修改密码:passwd 用户名;
  • 显示当前用户所在目录:pwd;
  • 删除用户:userdel 用户名(删除用户但保留用户家目录);userdel -r 用户名(删除家目录及其用户)
  • 查询用户信息:id 用户名;
  • 切换用户:su - 切换用户名
  • 查看当前用户/登录用户:who am i
(2)用户组
  • 概念:系统对有共性\权限的多个用户进行统一管理。一般建立用户时,默认和建立者的组一致。
  • 新增组:groupadd 组名;
  • 删除组:groupdel 组名;
  • 为用户分配组:useradd -g 组名 用户名
  • 更改用户所在组:usermod -g 新组名 用户名

7、实用指令

(1)运行级别

0:关机;

1:单用户【找回丢失密码】;

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

3:多用户状态有网络服务(非图形化界面,常用);

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

5:图形界面(与3切换使用);

6:系统重启;

  • 指令切换:init [123456]
(2)ls指令

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

  • 常用选项:-a:显示所有文件和目录,包括隐藏目录 ; -l :以列表的方式显示
(3)cd指令
  • cd ~或者cd : 回到自己的家目录,如你是root,cd~到 /root

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

(4)创建目录mkdir
  • 创建一个目录:mkdir /home/dog
  • 创建多级目录:mkdir -p /home/animal/tiger
(5)删除空目录rmdir
  • 删除空目录:rmdir /home/dog
  • 删除非空目录:rm -rf /home/animal
(6)创建文件touch

touch 文件名

  • touch hello.txt
(7)复制cp
  • 复制文件:cp 要复制的文件 目标文件夹
  • 复制文件夹:cp -r 要复制的文件夹 目标文件夹(系统不提示:\cp -r 要复制的文件夹 目标文件夹)
(8)移动或重命名mv
  • 重命名:mv 旧文件名or目录名 新文件名or目录名
  • 移动:mv 要移动的文件or目录地址 目标文件or目录地址
  • 例1:将/opt/bbb移动到home/下:mv /opt/bbb /home/
  • 例2:将hello.txt重命名为Hello.txt:mv hello.txt Hello.txt
(9)删除文件或目录rm
  • 删除文件:rm 文件
  • 删除文件夹(目录):rm -rf 非空或空文件夹
(10)查看文件内容cat
  • cat -n 要查看的文件(-n:显示行号)
  • 细节:1、cat只能浏览文件,而不能修改。2、一般会加上管道命令|more
  • 例:查看文件:cat -n /etc/profile | more[进行交互](交互指令看(11)的表格)

理解:"|"表示将前面的命令结果交给后面的命令处理,cat执行后一般是将全部内容都显示出来了,而more可以对文档进行交互操作

(11)查看文件内容more

more指令是一个基于VI编辑器的文本过滤器,它以全屏幕的方式按页显示文本文件的内容。nore 指令中内置了若干快捷键(交互的指令),详见操作说明

  • 语法:more 要查看的文件 (如more /etc/profile)

操作说明:

image-20210425222132165
(12)查看文件内容less

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

  • 语法:less 要查看的文件

操作说明:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-x7uFYtbn-1632659510687)(https://i.loli.net/2021/04/25/RL9N1mWvoJKiZ7M.png)]

(13)查看文件的三种指令对比

cat和more结合使用最好,能够看到行号,切适用于小型文档查看。less适合查看大型文档。

(14)输出内容到控制台echo
  • 语法:echo 内容
(15)查看文件开头内容head
  • 语法:head 文件(默认查看前10行内容)
  • head -n 5 文件(查看头5行内容,5可以是任意数字)
(16)查看文件尾部内容tail
  • 语法:tail 文件(默认查看尾10行内容)
  • tail -n 5 文件(查看尾部5行内容,5可以是任意数字)
  • tail -f 文件 (实时追踪文档的所有更新)
(17)输出重定向>和追加>>
  • 语法:ls -l >文件 (功能:将列表内容写入文件a.txt中,覆盖写)
  • ls -al >> 文件 (功能:将列表所有内容追加到文件aa.txt的末尾)
  • cat 文件1 > 文件2 (功能:将文件1的内容覆盖到文件2,cat是查看内容)
  • echo “内容” >> 文件(追加)
  • 将当前日历信息追加到文件b.txt:cal >>b.txt
(18)软链接ln
  • 语法:ln -s [原文件或目录] [软连接名] (功能:给原文件或文件夹创建一个软连接,相当于快捷方式)
  • 例:在/home下创建软连接myroot,链接到/root目录:ln -s /root /home/myroot
(19)查看历史指令history
  • 语法:history (功能:查看已执行过的命令)
  • 注:history 10 (显示最近使用过的10各命令)、!5(执行历史编号为5的指令)
(20)时间日期类date

查看日期:

  • date (显示当前时间)
  • date + %Y(显示当前年份)
  • date + %m(月份)
  • date + %d(哪一天)
  • date “+%Y-%m-%d %H:%M:%S”(显示年月分妙)

设置日期:

  • date -s 字符串时间
  • 例:设置时间为2020-11-03 20:02:10 ——date -s “2020-11-03 20:02:10”
  • cal查看当前日历,cal 2020查看2020年日历
(21)查找指令find

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

  • 语法:find [搜索范围] [选项],选项有以下选择:

image-20210426174625592

  • 例:按照名字查找/home下的hello.txt:find /home -name hello.txt
(22)查找指令locate

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

  • 语法:locate 搜索文件
  • 例:请使用locate指令快速定位hello.txt文件所在目录:locate hello.txt
  • which 指令,可以查看某个指令在哪个目录下,比如 ls指令在哪个目录:which ls
(22)过滤查找文件内容指令grep

用于查找文档内容,过滤查找,一般结合cat查看文件和管道命令“|”使用,管道符“|”,表示将前一个命令的处理结果输出传递给后面的命令处理。

  • 语法:grep -n 查找内容 源文件(显示行号)
  • 语法:grep -i 查找内容 源文件(忽略大小写)
  • 例:在hello.txt中查找“yes”所在行,显示行号:
    • 写法1:cat /home/hello.txt | grep “yes”
    • 写法2:grep “yes” /home/hello.txt
(23)压缩解压文件gzip和gunzip
  • 语法:gzip 文件(压缩,得到*.gz文件)
  • 语法:gunzip 文件 (解压)
(24)压缩解压文件或目录zip和unzip
  1. 压缩:
  • 语法1:zip XXX.zip 要压缩的文件、语法2:zip -r XXX.zip 要压缩的目录(xxx为指定压缩后的名字)
  1. 解压:
  • 语法1:unzip XXX.zip、语法2:unzip -d 解压后存放的目录(-d表示指定解压后的目录)
(25)压缩解压tar.gz文件指令tar

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

  1. 压缩:
  • tar -zcvf XXX.tar.gz 要打包的内容

  • 例:将/home/pig.txt和 /home/cat.txt压缩成pc.tar.gz

    • tar -zcvf pc.tar.gz /home/pig.txt /home/cat.txt
  1. 解压:
  • 语法1:tar -zxvf 要解压的文件(*.tar.gz)
  • 语法2:tar -zxvf 要解压的文件 -C 解压后存放目录(-C表示指定解压目录)
  • 例1:将pc.tar.gz解压到当前目录
    • tar -zxvf pc.tar.gz
  • 例2:将pc.tar.gz解压到/opt/tmp2
    • tar -zxvf pc.tar.gz -C /opt/tmp2
(26)三种压缩解压对比
  • gzip/gunzip用于文件,压缩得到的文件为*.gz
  • zip/unzip用于单个文件或单个目录(压缩目录:zip -r …、指定解压存放位置:unzip -d …)得到*.zip文件
  • tar指令用于压缩多个文件和多个目录,压缩得到*.tar.gz,指定解压存放位置时用 -C

四、组管理和权限管理

1、Linux组的基本介绍

每个用户必须属于一个组,不能独立于组外。一般建立用户时默认添加到用户名相同的组,组之间可以互相转换,同一个组内的成员之间的权限是不同的。一般谁创建了该文件,谁就是该文件的所有者,且该文件与所属者属于同一个组。下图理解:

image-20210426204129398
(1)查看文件所有者
  • 指令:ls -ahl

image-20210426204756877

(2)修改目录/文件所有者
  • 修改文件/目录所有者指令:chown 新用户名 文件名/目录名(root下,此操作只会更改目录或文件的所有者,但不会更改该目录里面的文件的所有者,实在不懂就去跑跑看)
  • 修改目录下所有文件所有者指令:chown -R 新用户名 目录名
  • 例1:请将/home/abc.txt文件的所有者修改成tom
    • chown tom /home/abc.txt
  • 例2:请将/home/test目录下所有的文件和目录的所有者都修改成tom
    • chown -R tom /home/test
(3)创建和修改组
  • 创建组:groupadd 组名
  • 创建用户并且把用户放在组中:useradd -g 组名 用户名
  • 修改用户所在组:usermod -g 新组名 用户名
  • 查看组:ls -ahl

image-20210426205352620

  • 修改文件/目录所在组:chgrp -g 新组名 文件/目录名
(4)权限的基本介绍rwx
  • 查看权限命令:ls -l 或者ll

image-20210426210538015

0-9位说明:

  1. 第0位确定文件类型(d,- , i , c , b)
  • -是文件
  • I是链接,相当于windows的快捷方式
  • d是目录,相当于windows的文件夹
  • c是字符设备文件,鼠标,键盘
  • b是块设备,比如硬盘
  1. 第1-3位确定所有者(该文件的所有者)拥有该文件的权限。—User
  2. 第4-6位确定所属组(同用户组内的其他成员)拥有该文件的权限,—Group
  3. 第7-9位确定其他用户(其他组内的成员)拥有该文件的权限—Other
(5)rwx权限详解
  • rwx作用到文件

1)[ r ]代表可以读(read):可以读取、查看

2)[ w ]代表可写(write):可以修改但是不代表可以删除文件,删除一个文件的前提条件是对该文件所在的目录有写权

3)[ x ]代表可执行(excute):可以被执行

  • rwx作用到目录

1)[ r ]代表可读(read):可以读取,ls查看目录内容

2)[ w ]代表可写(write):可以修改,对目录内创建+删除+重命名目录

3)[ x ]代表可执行(execute);可以cd进入该目录

  • 详细讲解案例:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-npNvcobS-1632659510694)(https://i.loli.net/2021/04/26/hBT9DygUJsF3K6x.png)]

  • 可以用数字表示为:r=4,w=2,x=1,因此,rwx=4+2+1=7可以任意组合。
(6)修改权限chmod

方法一:用+、-、=来表示:

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

  • 命令:chmod u=rwx,g=rx,o=x 文件名/目录名(如果要同时修改权限,逗号不能掉)

  • 例1:给abc文件的所有者读写执行权限,给所在组读和执行权限,给其他组执行权限

    • chmod u=rwx , g=rx , o=x abc
  • 例2:给abc文件的所在组添加写权限,给其他组去掉执行权限

    • chmod g+w,o-x abc

方法二:用数字表示

r=4,w=2,x=1 rwx=4+2+1=7

  • chmod u=rwx,g=rx,o=x 文件/文件名 相当于chmod 751 文件/文件名
  • 例:将/home/abc.txt文件的权限修改成rwxrw-r-x,使用给数字的方式实现:
    • chmod 765 /home/abc.txt

五、定时任务调度

1、定时重复调度(crond)

  • crontab -e 开始一个定时任务
  • crontab -l 列出当前所有任务调度
  • crontab -r 删除/终止所有任务
(1)步骤:
  • 设置任务调度文件:/etc/crontab

  • 设置个人任务调度:执行crontab -e

  • 输入调度信息:如:*/1 * * * * ls -l /etc/ > /tmp/to.txt (意思是每隔1分钟执行一次:ls -l /etc/ > /tmp/to.txt命令)

  • 五个占位符说明:上例中*/是特殊符号,代表每隔多久执行一次。其他星号之间有空格。

image-20210517165359389
  • 特殊符号:
image-20210517165505079
  • 相关案例:
image-20210517165944348

image-20210609153722174

2、定时单次调度(atd)

(1)格式
  • at 【选项】 【时间】

    • 【选项】:

image-20210609145802521

    • 【时间】定义规则:

image-20210609145951338

  • **退出输入模式:**Ctrl +d (两次,结束内容输入,连续两次)

  • 示意图:

image-20210609145327141

(2)查看系统中执行的工作任务
  • 直接输入:atq
(3)案例
  • 案例1: 两天后的下午五点执行 /bin / ls / home

image-20210609150902518

  • 案例 2: 明天17点,输出日期到指定文件内,如:/root/date.log

image-20210609151819391

  • 案例3:两分钟后输出时间到指定文件内:如/root/date.log

image-20210609153033947

  • 案例4:删除编号为4的任务号:atrm 4 //编号为4的job删除。

六、磁盘分区、挂载

image-20210609162819282

(1)查看硬盘信息和挂载情况
  • lsblk

image-20210609162626010

  • lsblk -f

image-20210609162001373

(2)虚拟机内增加磁盘应用实例

建议直接看视频:[韩顺平学Linux-增加磁盘应用实例]([小白入门 通俗易懂]2021韩顺平 一周学会Linux_哔哩哔哩_bilibili)

(3)磁盘常用指令
  • 查看磁盘使用情况:df -h
  • 查询指定目录的磁盘占用情况:du -hac --max-depth=1 /opt

注意:/opt代表文件夹,可以换做另外的任意文件夹

image-20210609171905910 image-20210609171919981
(4)磁盘情况-工作实用指令

image-20210609172917462

七、Linux网络配置

(1)修改网络配置
  • 在相同的网段才能访问相关网络192.168.2._(才能ping得通)

  • Linux查看网络适配:ifconfig

image-20210612111811004

  • Windows查看网络适配:ipconfig
  • 查看虚拟网络编辑器和修改ip地址:

image-20210612111913443

  • 查看网关:

image-20210612112000277

  • 一般linux会自动分配ip,点击下图的ipv4可以查看。

image-20210612112110020

  • 到工作环境后,应该用固定ip,需要手动配置固定的ip。

==方法:==修改配置文件vim /etc/sysconfig/network-scripts/ifcfg-ens33,例如要求将ip地址配置成静态的192.168.2.130

    • ifcfg-ens33文件说明:

image-20210612112335582

    • 修改以下内容:

image-20210612112550040

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-1GXaYB4d-1632659510717)(C:/Users/Administrator/AppData/Roaming/Typora/typora-user-images/image-20210612112459320.png)]

(2)设置主机名和host映射

1)设置主机名

  • 设置 主机名:为了方便记忆,可以给Linux系统设置设置主机名
  • 查看主机名指令:hostname
  • 修改主机名:vim /etc/hostname
  • 重启生效

2)设置host映射

理解:如何通过主机名能够找到(比如ping 名字,而不是IP地址)某个Linux系统?

  1. 在windows中想要直接通过主机名访问Linux的ip(如:ping xuechaopeng就能达到ping 192.168.2.133 的效果?)
  • 在window中C:\Windows\System32\drivers\etc\hosts 文件中直接指定即可:如直接在文件中添加:192.168.2.133 xuechaopeng
  1. 在Linux中想要直接通过主机名访问Windows的IP地址:
  • 在/etc/hosts 文件中指定即可:vim /etc/hosts,例如:192.168.2.1 Lenovo Thinkpad-PC

八、Linux进程管理

(1)查看进程ps -aux
  • 指令:ps -aux
  • 拓展1:指定查看某个进程: ps -aux |grep xxx
  • 拓展2:搭配more查看更高效:ps -aux |more

image-20210615093607508

(2)查看当前所有进程 ps -ef
  • 指令:ps -ef ,以全格式查看当前所有进程 (可通过此查看某进程的父子进程

image-20210615095119565

  • 拓展1:指定查看当前某个进程:ps -ef |grep xxx
  • 拓展2:搭配more查看更高效:ps -ef |more
(3)终止进程kill & killall
  • 指令:kill [选项] 进程号(功能:通过进程号终止进程)

  • 常用选项:-9(功能:表示强迫进程立即停止)

  • 指令:killall 进程名称 (功能:通过进程名称杀死进程)

  • 提示:要终止某个进程之前需要用前面的指令先查看这指令的PID或者名称

  • 案例:

image-20210615100233158

(4)查看进程树pstree
  • 指令:pstree [选项] 能直观的查看进程信息;

  • 常用选项:-p :显示进程的PID -u:显示进程的所属用户

(5)服务(service)管理
(1)管理指令
  1. 理解:服务本质就是进程,在后台运行,通常会监听某个端口,等待

其他程序请求(比如:mysql,sshd,防火墙等),也称为守护进程。

  1. 管理指令:service 服务名称 [start|stop|restart|reload|status]

[]括号内表示可以选择的内容,status意思是查看当前状态

  1. 在CentOS7.0后很多服务不再使用service ,而是systemctl (后面专门讲)

  2. service指令管理的服务在/etc/init.d查看

image-20210615115257694

(2)查看服务名
  • 方式一:使用指令:setup,有星号的代表开机自启,如果想取消,光标到星号位置点击空格;点击tab键,可以选者退出

image-20210615115526976

  • 方式二:/etc/init.d 看到service指令管理的服务 :ls -l /etc/init.d
(3)服务的运行级别(runlevel)
  • 三.7中有讲过,平时用的最多的是指令3和5,此处重点说明CentOS7后的运行级别说明:

init 3 == systemctl set-default multi-user.target

init 5 == systemctl set-default graphical.target

  • 查看当前默认级别:systemctl get-default
(4)为服务设置自启/关闭chkconfig指令

注意:在CentOS7.0后,很多服务systemctl (后面讲)

  • chkconfig指令的管理服务再/etc/init.d查看

  • 用法:

    • 查看服务:chkconfig --list [|grep xxx]
    • chkconfig 服务名 --list
    • chkconfig --level 5 服务名 on/off
  • 细节:chkconfig指令设置后需要重启后生效

(5)systemctl管理指令
  • 基本语法:systemctl [start|stop|restart|status] 服务名(注意和service对比)

指令管理的服务可以在 /usr/lib/systemd/system查看(当不知道服务叫什么时可以查看,如防火墙之类的)

  • systemctl设置服务自启状态

image-20210615132250087

  • 例子:查看当前防火墙的状况,关闭和重启防火墙(firewalld.service)

    • systemctl status; systemctl stop firewalld; systemctl start firewalld
(6)打开或者关闭指定端口
image-20210615132701115
  • firewall指令:

image-20210615133024257

(7)动态监控进程top
  • top指令与ps指令相似,区别在于top可以自动更新进程运行状况
  • 指令:top [选项]

image-20210615133433875

  • 常用选项:

image-20210615133530929

  • 交互说明:

image-20210615133554242

(8)监控网络状态netstat(常用)
  • 语法:netstat [选项]
  • 常用选项:-an 按照一定顺序排序输出; -p 显示哪个进程在调用
  • 例子:请查看服务名为sshd的服务信息
    • netstat -anp |grep sshd

image-20210615133932208

image-20210615133946516

(9)检测主机连接命令ping

用于检测远程主机是否正常,或者是两部主机间的网卡网线故障,如:ping 对方ip地址。

九、RPM和YUM

(1)RPM包管理
  • 介绍:rpm类似于windows的setup.exe,从网上下载rpm包后,就可以通过指令在本地查看和安装。

  • RPM包简单查询

    • 查询已安装的rpm列表:rpm -qa
    • 如:查看当前系统是否安装了Firefox:rpm -qa | grep firefox
  • 包名的基本格式:

image-20210615150119583

  • 其他指令:

    • rpm -qa:查询所有安装的rpm软件包
    • rpm -qa | more
    • rpm -qa | grep xxx
    • rpm -q 软件包名 :查询软件包是否安装(如:rpm -q firefox,不用写全)
    • rpm -qf 文件全路径名:查询文件所属的软件包(如:rpm -qf /etc/passwd:表示查询passwd文件属于哪个rpm包)
    • 安装rpm软件包:rpm -ivh 软件包路径名称(其中:i=install【安装】; v=verbose【提示】;h=hash【进度条】 ,例如安装firefox:rpm -ivh /opt/firefox)
    • 卸载rpm在软件包:rpm -e 软件包名称(若提示错误,可以强制删除:rpm -e --nodeps 软件包名称)
(2)YUM包管理
  • 介绍:yum是一个shell前端软件包管理器,基于rpm包管理,能够从指定服务器自动下载rpm包并且安装,可以自动处理依赖性关系,并且一次安装所有的软件
  • 指令:yum list | grep xxx(先查询服务器是否有需要安装的xxx软件包)
  • yum install xxx(然后再直接安装)

十、JDK,tomcat,IDEA,mysql的安装

官网上下载以下软件对应的Linux版本,视频:韩顺平30天学JAVA良心推荐!!!

image-20210615173638114
(1)JDK安装
image-20210615173730227
(2)tomcat安装
image-20210615174000591
(3)idea2020安装

image-20210615174110644

(4)mysql5.7安装
  1. 新建文件夹/opt/mysql,并cd进去
  2. 运行wget http://dev.mysql.com/get/mysql-5.7.26-1.el7.x86_64.rpm-bundle.tar,下载mysql安装包 PS:centos7.6自带的类mysql数据库是mariadb,会跟mysql冲突,要先删除。
  3. 运行tar -xvf mysql-5.7.26-1.el7.x86_64.rpm-bundle.tar
  4. 运行rpm -qa|grep mari,查询mariadb相关安装包
  5. 运行rpm -e --nodeps mariadb-libs,卸载
  6. 然后开始真正安装mysql,依次运行以下几条 rpm -ivh mysql-community-common-5.7.26-1.el7.x86_64.rpm rpm -ivh mysql-community-libs-5.7.26-1.el7.x86_64.rpm rpm -ivh mysql-community-client-5.7.26-1.el7.x86_64.rpm rpm -ivh mysql-community-server-5.7.26-1.el7.x86_64.rpm
  7. 运行systemctl start mysqld.service,启动mysql
  8. 然后开始设置root用户密码 Mysql自动给root用户设置随机密码,运行grep "password /var/log/mysqld.log可看到当前密码
  9. 运行mysql -u root -p,用root用户登录,提示输入密码可用上述的,可以成功登陆进入mysql命令行
  10. 设置root密码,对于个人开发环境,如果要设比较简单的密码(生产环境服务器要设复杂密码),可以运行 set global validate_password_policy=0; 提示密码设置策略 (validate_password_policy默认值1,)
  11. set password for ‘root’@‘localhost’ =password(‘123123abc’); //123123abc
  12. 运行flush privileges;使密码设置生效, (笔记:我自己已改为123123abc
  13. 测试密码登录使用:mysql -u root -p

十一、SHELL编程

  • 简介:shell是一个命令行解释器,为用户提供一个向Linux内核发送请求以便于运行程序的界面运行级程序,用shell来启动、挂起、停止或者编写程序等。

image-20210616090422826

(1)Shell脚本的运行方式
  • 脚本开头必须以下面代码开头:

    #!/bin/bash
    
  • 需要有执行权限(具有相应的x权限)

(2)Shell脚本的执行方式
  • 方式一:输入脚本的相对路径或者绝对路径(需要有相应的执行权限,如: ./hello.sh或者/root/shcode/hello.sh)

  • 方式二:直接使用sh+脚本名称(不需要有x权限,直接执行即可,如:sh hello.sh,当然也能使用其相对路径)

(3)编写第一个Shell脚本
  • 需求:创建一个shell脚本,输出hello world!
vim hello.sh   #创建一个.sh文件,输入i开始编辑,vim用法

#!/bin/bash
echo "hello world!" #echo表示输出内容到屏幕,前面有学过
#wq保存后,命令行执行./hello.sh即可输出内容。
(4)Shell变量的定义
  • 基本语法:

    • 定义变量:变量名=值(等号两边不能有空格)
    • 撤销变量:unset 变量
    • 声明静态便变量:readonly 变量(注意:不能unset)
  • 举例:

#案例1:定义变量A
#案例2:撤销变量A
#案例3:声明静态变量 B=2,不能unset

#!/bin/bash
A=100			#案例1:定义变量A
echo A=$A		#输出或者使用变量时要加上$,输出A=100
echo "A=$A"	 	#和上面输出效果相同
unset A			#案例2:撤销变量A
echo A=$A		#输出:A=
readonly B=2	#案例3:声明静态变量 B=2,不能unset
echo B=$B		#输出B=2
unset B			#报错
  • 其他说明:1)等号两边不能有空格; 2)变量名习惯用大写,规范;3)变量名可以由字母,数字,下划线组成,不能以数字开头;
  • 将命令的返回值赋给变量

image-20210616101645921

(5)设置环境变量
  • 基本语法
  1. export 变量名=变量值(功能:将shell变量输出为环境变量/全局变量)

  2. source 配置文件 (功能:让修改后的配置信息立即生效)

3)echo $变量名 (功能:查询环境变量的值)

  • 举例:

1)在/etc/profile文件中定义TOMCAT_HOME环境变量

2)查看环境变量TOMCAT_HOME的值

3)在另外一个shell程序中使用TOMCAT_HOME

​ 注意:在输出TOMCAT_HOME变量前,要让其生效:source /etc/profile

image-20210616141849107

  • shell脚本的多行注释: :<<! 内容 !

image-20210616114705211

(6)位置参数变量
  • n : ( n:( n:n是数字,$0表示向屏幕输入的指令本身,$1- 9 代 表 第 一 到 第 九 个 参 数 向 屏 幕 输 入 的 参 数 , 十 以 上 用 9代表第一到第九个参数向屏幕输入的参数,十以上用 9{10},如下图:
  • $*:表示命令行中的所有参数(不包括$0,把所有参数看作一个整体)
  • $@:和上面一样,表示命令行中的所有参数,但是它是吧每个参数区分对待的
  • $#:表示命令行中所有参数个数,详情仔细查看shell代码和输入输出的内容,不行就自己跑一边就懂了。

image-20210617100128447

image-20210617100107968

(7)运算符
  • 语法:" ( ( 运 算 式 ) ) " 或 者 " ((运算式))" 或者 " (())""[运算式]" 或者"expr m + n "
  • 注意expr运算符之间都要有空格,如果要将expr的结果赋值给某个变量,则要在整体上加``反引号。
  • expr \ *, / , % 乘、除、取余
  • 更推荐方法er,其他的方法都要知道即可,仔细分析下面的代码,
#/root/shcode/test04.sh文件夹下
#!/bin/bash

#1、求(10+20)*4的值

#方法一:
sum1=$(((10+20)*4))  #细节:方法一的式子总是要用$(())
echo "sum1 = $sum1"

#方法二:推荐
sum2=$[(10+20)*4]
echo "sum2 = $sum2"

#方法三:注意空格,不推荐
sum=`expr 10 + 20`
sum0=`expr $sum \* 4`
echo "sum3 = $sum0"


#2、求出命令行输出的参数的和
sum4=$[$1+$2]
echo "sum4 = $sum4"
#下图有输出的值:

image-20210617105516066

(8)条件判断
  • 基本语法:[ condition ](注意,condition前后必须有空格)

    ​ #非空返回true,空返回false

  • 案例1:[ CentOs ] 返回true;案例2: [ ] 返回false

  • 注意:[ condition ]&&echo OK||echo notok 条件满足执行后面的语句。

  • 判断语句汇总:

(1) =字符串比较
(2)两个整数比较
-lt小于(little)
-le小于等于(little equal)
-eq等于(equal)
-gt大与(getter)
-ge大于等于
-ne不等于
(3)按照文件权限判断
-r有读的权限
-w有写权限
-x有执行权限
(4)按照文件类型进行判断
-f文件存在并且是一个常规文件
-e文件存在
-d文件存在并且是一个目录
  • 案例汇总:
image-20210617153127905
(9)流程控制
(1)if语句:
  • 语法:
if[ 条件判断式 ]
then
	代码
fi

#或者多分枝代码如下:
if[ 条件判断式 ]
then
	代码
elif[ 条件判断式 ]
then
	代码
fi

注意[ 条件判断式 ]中前后空格不能省去

  • 案例:编写脚本如果输入的参数大与60,则输出”及格了“,小于60输出”不及格“
#!/bin/bash
if [ $1 -ge 60 ] #注意空格,要结合前面的位置参数来用
then
	echo "及格了~"
elif [ $1 -lt 60 ]
then
	echo "不及格"
fi
(2)case语句
  • 语法:
case $变量名 in
"值1")
若变量值等于1,则执行程序1
;;
"值2")
若变量值等于2,则执行程序2
;;
....省略其他分支....
*)
如果变量的值都不是以上的值,则执行此程序
;;
esac
  • 案例:当参数命令是1时,输出“周一”, 是2时,输出“周二”,其他情况输出“other…”
#!/bin/bash
case $1 in
"1")
echo "周一"
;;
"2")
echo "周二"
;;
*)
echo  "other.."
;;
esac
(3)for循环
  • 语法1:
for  变量  in  值1 值2 值3....
do
程序/代码
done
  • 语法2:
for((初始值;循环控制条件;变量变化))
do
程序/代码
done
  • 案例1:打印命令行输入的参数(体验 ∗ 和 *和 #的区别)

image-20210617165605215

  • 案例2:打赢输出1到100的整数和
#! /bin/bash
sum=0
for ((i=1; i<=100;i++))
do
	sum=$[$sum+$i]
done
echo "总和SUM是:$sum"
(4)while语句
  • 基本语法:
while [ 条件判断式子 ]
do
程序/代码
done
#当while[ .... ]为真时,才会执行下面的代码,注意空格
(10)read读取控制台输出
  • 语法:read 【选项】 空格 参数

  • 选项:-p:指定读取值时的提示符 ; -t :指定读取等待时间,如果没有在指定时间输入,就不再等待

  • 参数: 指定读取的变量,直接看案例

  • 案例1:读取控制台输入一个NUM1值

  • 案例2:10秒内读取控制台输入一个NUM2值

#案例1:读取控制台输入一个NUM1值
#! /bin/bash
read -p "请输入一个NUM1=" NUM1 #注意空格
echo "你输入的NUM1 = $NUM1"

#案例2:10秒内读取控制台输入一个NUM2值
#! /bin/bash
read -t 10 -p "请输入一个NUM2=" NUM2
echo "你输入的NUM2 = $NUM2"
(11)函数
(1)basename基本语法
  • 功能:返回完整路径最后 / 的内容,常用于获取文件名。

  • 案例:请返回/home/aaa/test.txt的”test.txt“部分

    • basename /home/aaa/test.txt
(2)dirname基本语法
  • 功能:与前面刚好相反,获取最后 / 前面的部分,常用于返回路径部分,

  • 案例:找到/home/aaa/test.txt的/home/aaa部分

    • dirname /home/aaa/test.txt
(3)自定义函数
#语法:
function functionname(){
		Action
		程序/代码:要返回的值
}

直接调用函数名:functionname 值

#案例:计算输入两个参数的和(动态获取),getSum
#! /bin/bash
function getSum(){
	sum=$[$n1+$n2]
	echo "输入的和是:$sum"
}
#提示输入两个值:
read -p "请输入一个数:n1 = " n1
read -p "请输入一个数:n2 = " n2
#调用自定义函数:
getSum $n1 $n2



十二、Ubuntu安装及详解

(1)虚拟机安装
(2)root用户介绍
  • Ubuntu安装后都是普通用户,并没有root权限,想要有高权限可以用sudo +命令 ,很麻烦,故需要用su root来切换用户,但是初次使用root是没有密码的,需要重新设定再切换才行。方法:
  • 输入sudo passwd ,设定root密码;再用su root 再输密码即可切换到root用户。
(3)APT软件管理和远程登录
(1)apt包相关介绍
  • apt是Advanced Packaging Tool 的简称,是一款安装包管理工具。在Ubuntu下,我们可以使用apt命令进行软件包的安装、删除、清理等,类似于Windows中的软件管理工具。

image-20210618141851420

  • 相关指令:
#常用必须掌握:(提示:已经切换到root用户,则可以不用sudo超级权限)
sudo apt-get update  #更新源
sudo apt-get install package  #安装包   
sudo apt-get remove package  #删除包
sudo apt-cache show package   #获取包的相关信息
sudo apt-get source package   #下载该包的源代码
==================================================
#不常用:
sudo apt-cache search package #搜索软件包
sudo apt-get install package --reinstall  #重新安装包
sudo apt-get -f install  #修复安装
sudo apt-get remove package --purge  #删除包,包括配置文件等
sudo apt-get build-dep package  #安装相关的编译环境
sudo apt-get upgrade   #更新已安装的包
sudo apt-get dist-upgrade   #升级系统
sudo apt-cache depends package  #了解使用该包依赖那些包
sudo apt-cache rdepends package  #查看该包被哪些包依赖

image-20210618151405049

  • 步骤:

1)备份ubuntu原来的配置文件(sudo cp /ect/apt/sources.list /ect/apt/sources.list .backup );

2)再更改配置文件内容为镜像内容(vi sources.list 删除内容并且粘贴上图左边的内容);

3)更新源地址(sudo apt-get update)

(2)远程登录Ubuntu
  • Windows登录ubuntu(ssh相关介绍)

    ​ SSH为Secure Shell的缩写,由IETF的网络工作小组(Network Working Group)所制定;SSH为建立在应用层和传输层基础上的安全协议。

    ​ 使用SSH服务,需要安装相应的服务器和客户端。客户端和服务器的关系:如果,A机器想被B机器远程控制,那么,A机器需要安装SSH服务器,B机器需要安装SSH客户端。

image-20210618155248430
  • ==和CentOS 不一样,Ubuntu默认没有安装SSHD服务(使用netstat 指令查看: apt install net-tools),==可以看到没有相关的端口监听,所以要安装ssh服务器(sshd),执行:sudo apt-get install openssh-server;;安装后执行 service sshd restart 即可打开服务.
  • 通过上面步骤即可在windows客户端例如:xshell上登录链接ubuntu
(3)两台Linux互相访问
  • 语法:ssh 用户名@IP(如:ssh xcp@192.168.200.131)
  • 注意:对于Ubuntu,相应的配置要先设置好(sshd服务器安装配置等)

十三、日志管理

(1)日志文件
  • 在 /var/log 文件夹下,直接cd打开即可查看文件。
(2)常用日志及意义

image-20210805150600697

depends package #了解使用该包依赖那些包
sudo apt-cache rdepends package #查看该包被哪些包依赖




- 更新apt包下载源(国外—>国内配置)

- - 国内镜像源:[清华大学镜像网](https://mirrors.tuna.tsinghua.edu.cn/)

[外链图片转存中...(img-eCVVdMDs-1632659510749)]

- 步骤:

1)备份ubuntu原来的配置文件(sudo cp /ect/apt/sources.list   /ect/apt/sources.list .backup );

2)再更改配置文件内容为镜像内容(vi  sources.list 删除内容并且粘贴上图左边的内容);

3)更新源地址(sudo apt-get update)



##### (2)远程登录Ubuntu

- Windows登录ubuntu(ssh相关介绍)

  ​	SSH为Secure Shell的缩写,由IETF的网络工作小组(Network Working Group)所制定;SSH为建立在应用层和传输层基础上的安全协议。

  ​	使用SSH服务,需要安装相应的服务器和客户端。客户端和服务器的关系:如果,A机器想被B机器远程控制,那么,A机器需要安装SSH服务器,B机器需要安装SSH客户端。

<img src="https://i-blog.csdnimg.cn/blog_migrate/2c0ed6776640d3de9a2c347fce0f971b.png" alt="image-20210618155248430" style="zoom:80%;" />

- ==和CentOS 不一样,Ubuntu默认没有安装SSHD服务(使用netstat 指令查看: apt install net-tools),==可以看到没有相关的端口监听,所以要安装ssh服务器(sshd),执行:sudo apt-get install openssh-server;;安装后执行 service sshd restart 即可打开服务.
- 通过上面步骤即可在windows客户端例如:xshell上登录链接ubuntu



##### (3)两台Linux互相访问

- 语法:ssh  用户名@IP(如:ssh xcp@192.168.200.131)
- 注意:对于Ubuntu,相应的配置要先设置好(sshd服务器安装配置等)

、

## 十三、日志管理

#### (1)日志文件

- 在  /var/log 文件夹下,直接cd打开即可查看文件。

#### (2)常用日志及意义

[外链图片转存中...(img-VNnTo3CO-1632659510749)]

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值