Linux系统快速入门(完整版)

发布时间 2023-11-05 22:01:32作者: 小曾Study平台

LINUX基础知识

I、Linux概述

linux是啥?

一套免费使用和自由传播的类Unix操作系统,是一个基于POSIX和Unix的多用户、多任务、支持多线程和多CPU的操作系统。它能运行主要的Unix工具软件、应用程序和网络协议。它支持32位和64位硬件。Linux继承了Unix以网络为核心的设计思想,是一个性能稳定的多用户网络操作系统。

linux可以做啥?

  1. Linux作为企业级服务器的应用
    Linux系统可以为企业架构WWW服务器、数据库服务器、负载均衡服务器、邮件服务器、DNS服务器、代理服务器、路由器等,不但使企业降低了运营成本,同时还获得了Linux系统带来的高稳定性和高可靠性,且无须考虑商业软件的版权问题。
  2. 嵌入式Linux系统应用领域
    由于Linux系统开放源代码,功能强大、可靠、稳定性强、灵活而且具有极大的伸缩性,再加上它广泛支持大量的微处理体系结构、硬件设备、图形支持和通信协议,因此,在嵌入式应用的领域里,从因特网设备(路由器、交换机、防火墙,负载均衡器)到专用的控制系统(自动售货机,手机,PDA,各种家用电器),LINUX操作系统都有很广阔的应用市场。特别是经过这几年的发展,它已经成功地跻身于主流嵌入式开发平台。
  3. 个人桌面Linux应用领域
    所谓个人桌面系统,其实就是我们在办公室使用的个人计算机系统,例如:Windows xp、windows 7、Mac等。Linux系统在这方面的支持也已经非常好了,完全可以满足日常的办公及家长需求。

linux有啥特点?

  1. 免费、开源

    Linux系统是通过公共许可协议GPL的自由软件。这种软件具有两个特点,一是开放源代码并免责提供,二是开发者可以根据自身需要自由修改、复制和发布程序的源码。因此,用户可以从互联网上很方便地免费下载并使用Linux操作系统,不需要担心版权问题。

  2. 良好的硬件平台可移植性

    硬件平台可移植性是指将操作系统从一个硬件平台转移到另一个硬件平台时,只需改变底层的少量代码,无需改变自身的运行方式。Linux系统最早诞生于PC机环境,一系列版木都充分利用了X86 CPU的任务切换能力,使X86 CPU的效能发挥得淋漓尽致。另外,Linux系统几乎能在所有主流CPU搭建的体系结构上运行,包括 Intel/AMD、HP-PA、MIPS、Powerpc、 ULTRASPARC和 ALPHA等,其伸缩性超过了所有其他类型的操作系统。

  3. 完全符合POSIX标准

    POSⅨ也称为可移植的Linux操作系统接口,是由ANSI和ISO制订的一种国际标准,它在源代码级别上定义了一组最小的Linux操作系统接口。Linux系统遵循这一标准,使得它和其他类型的Linux系统之间可以很方便地相互移植平台上的应用软件。

  4. 具有良好的图形用户界面

    Linux系统具有类似于 Windows操作系统的图形界面,其名称是 X-Window系统。X- Window是一种起源于Linux操作系统的标准图形界而,它可以为用户提供一种具有多种窗口管理功能的对象集成环境。

  5. 具有强大的网络功能

    由于Linux系统是依靠互联网平台迅速发展起来的,所以也具有强大的网络功能。它在内核中实现了 TCP/TP协议簇,提供了对 TCP/TP协议簇的支持。同时,它还可以支持其他各种类型的通信协议,如 IPX'SPX、 Apple Talk、PP、SLP和ATM等。

  6. 丰富的应用程序和开发工具

    由于 Linux系统具有良好的可移植性,目前绝大部分其他Linux系统下使用的流行软件都已经被移植到 Linux系统中。另外,由于 Linux得到了IBM、 Intel、 Oracle及 Syabse等知名公司的支持,这些公司的知名软件也都移植到了 Linux系统中,因此, Linux获得越来越多的应用程序和应用开发工具。

  7. 良好的安全性和稳定性

    Linux系统采取了多种安全措施,如任务保护机制、审计跟踪、核心报校、访问授权等,为网络多用户环境中的用户提供了强大的安全保障。由于Linux系统的开放性及其他一些原因,使其对计算机病具有良好的防御机制, Linux平台基木上不需要安装防病毒软件。另外,Linux系统具有极强的稳定性,可以长时间稳定地运行。

常用linux发行版本

  • 下载地址:

Linux 官网:https://linux.org/

Linux 下载页面:https://linux.org/pages/download/

CentOS 下载地址:https://wiki.centos.org/Download

阿里云 CentOS 镜像站:https://mirrors.aliyun.com/centos-vault/

CentOS7.6 下载地址:http://vault.centos.org/7.6.1810

Ⅱ、shutdown指令、init指令

注:字母n、H、s代表数字,非管理员用户执行此指令时需要使用sudo指令来执行

sync指令

该指令用于关机或重启前将数据同步到磁盘上。

shutdown指令:关机

注:凡是定时的shutdown操作都可以通过shutdown -c来取消

shutdown -h 指令

  • shutdown -h now 立刻关机(halt指令、poweroff指令)
  • shutdown -h +n/n 系统将在n分钟后关机
  • shutdown -h H:s : 系统将在H:s关机

shutdown -r 指令

  • shutdown -r now 立刻重启(reboot指令)
  • shutdown -r +n/n 系统将在n分钟后重启
  • shutdown -r H:s 系统将在H:s重启

init指令

  • 0 立刻关机
  • 3 切换字符界面模式
  • 5 切换图形界面模式
  • 6 立刻重启

Ⅲ、user指令、group指令

注:所有用户的默认目录在/home下,home目录为用户主目录

user指令-用户的增删改

1、useradd - 添加新用户

useradd [option] 新用户名

[option]

  • -c comment 指定一段注释性描述。
  • -d 目录 指定用户主目录,如果此目录不存在,则同时使用-m选项,可以创建主目录。
  • -g 用户组 指定用户所属的用户组。
  • -s Shell文件 指定用户的登录Shell。
  • -u 用户编号 指定用户的用户号,如果同时有-o选项,则可以重复使用其他用户的标识号。

注:所有通过指令添加的新用户在没有设置密码前是不可以使用的

2、usermod - 修改用户信息

usermod [option] 用户名

[option]

  • -c comment 指定一段注释性描述。
  • -d 目录 指定用户主目录,如果此目录不存在,则同时使用-m选项,可以创建主目录。
  • -g 用户组 指定用户所属的用户组。
  • -s Shell文件 指定用户的登录Shell。
  • -u 用户号 指定用户的用户号,如果同时有-o选项,则可以重复使用其他用户的标识号。

3、userdel - 删除用户

userdel [option] 用户名

[option]

  • -r 删除用户以及用户目录中的所有文件
  • -f 强制删除用户

4、passwd - 设置用户口令

passwd [option] 用户名

[option]

  • -l 锁定口令,即禁用账号。
  • -u 口令解锁。
  • -d 使账号无口令。
  • -f 强迫用户下次登录时修改口令

注:passwd 如若不指定用户名,直接修改当前用户的口令。普通用户只能修改自己的口令,超级用户(root)可以修改任何用户的口令,但需要在修改时指定用户名。

group指令-用户组的增删改

注:每个用户都有一个用户组,系统可以对一个用户组中的所有用户进行集中管理。不同Linux 系统对用户组的规定有所不同,如Linux下的用户属于与它同名的用户组,这个用户组在创建用户时同时创建。用户组的管理涉及用户组的添加、删除和修改。组的增加、删除和修改实际上就是对/etc/group文件的更新。

1、groupadd - 添加用户组

groupadd [option] 用户组名

[option]

  • -g GID 指定新用户组的组标识号(GID)。
  • -o 一般与-g选项同时使用,表示新用户组的GID可以与系统已有用户组的GID相同。

2、groupmod - 修改用户组

groupmod [option] 用户组名

[option]

  • -g GID 为用户组指定新的组标识号。
  • -o 与-g选项同时使用,用户组的新GID可以与系统已有用户组的GID相同。
  • -n 修改用户组的名字

3、groupdel - 删除用户组

groupdel 用户组名

需要从系统中删除群组时,可用groupdel指令来完成这项工作。倘若该群组中仍包括某些用户,则必须先删除这些用户或者将用户移出后,方能删除该群组。

IV、目录指令、文件指令

image-20230918230427963

注:Linux的目录结构为树状结构,最顶级的目录为根目录 /。

  • 绝对路径:
    路径的写法,由根目录 / 写起,例如: /usr/share/doc 这个目录。
  • 相对路径:
    路径的写法,不是由 / 写起,例如由 /usr/share/doc 要到 /usr/share/man 底下时,可以写成: cd ../man

目录指令

1、ls - 列出目录

ls [option] 路径

[option]

  • -a 全部的文件,连同隐藏文件( 开头为 . 的文件) 一起列出来(常用)
  • -d 仅列出目录本身,而不是列出目录内的文件数据(常用)
  • -l 长数据串列出,包含文件的属性与权限等等数据(ll);(常用)
  • -ltr 时间升序显示文件详细
  • -F 以文件名层次结构显示
  • -lh 大小超过1k带单位

2、cd - 切换目录

cd是Change Directory的简写,这是用来变换工作目录的命令。

cd 路径或目录名

/是系统根目录,在任何目录下都可以通过cd / 来快速切回根目录,../代表一层目录。

3、pwd - 显示当前目录

pwd 是 Print Working Directory 的简写,也就是显示目前所在目录的命令或显示当前用户的工作目录。

pwd [option]

[option]

  • -P 显示出确实的路径,而非使用连结 (link) 路径。

4、mkdir - 创建新目录

mkdir 是 Make Directory 的简写,也就是创建新目录的命令。

mkdir [option] 新目录名字

[option]

  • -m 配置文件的权限喔!直接配置,不需要看默认权限 (umask) 的脸色
  • -p 帮助你直接将所需要的目录(包含上一级目录)递归创建起来

5、rmdir - 删除【空】目录

rmdir 是Remove Empty Directory 的简写,也就是删除目录的命令,此命令只能删除空目录。

rmdir [option] 目录名字

[option]

  • -p 连同上一级『空的』目录也一起删除

6、cp - 复制文件或目录

cp [option] 来源档(文件或目录) 目标档(文件或目录)

[option]

  • -f 为强制(force)的意思,若目标文件已经存在且无法开启,则移除后再尝试一次;
  • -i 若目标档(destination)已经存在时,在覆盖时会先询问动作的进行(常用)
  • -l 进硬式连结(hard link)的连结档创建,而非复制文件本身;
  • -p 连同文件的属性一起复制过去,而非使用默认属性(备份常用);
  • -r 递归持续复制,用於目录的复制行为;(常用)
  • -s 复制成为符号连结档 (symbolic link),亦即『捷径』文件,可理解成快捷方式;
  • -u 若 destination 比 source 旧才升级 destination !

7、rm - 删除文件或目录

rm [option] 文件或目录

[option]

  • -f 就是 force 的意思,忽略不存在的文件,不会出现警告信息;
  • -i 互动模式,在删除前会询问使用者是否动作
  • -r 递归删除啊!最常用在目录的删除了!这是非常危险的选项!!!

8、mv - 移动文件或目录

mv [option] 来源档(文件或目录) 目标档(文件或目录)

[option]

  • -f force 强制的意思,如果目标文件已经存在,不会询问而直接覆盖;
  • -i 若目标文件 (destination) 已经存在时,就会询问是否覆盖!
  • -u 若目标文件已经存在,且 source 比较新,才会升级 (update)

文件指令

1、cat - 正向查看文本内容

cat [option] 文件名

[option]

  • -n 显示文本行编号(行号)
  • -E 显示行结束符号$

注:cat还可以创建文件,语法为cat>file(文件名.后缀),Ctrl+D保存

2、tac - 倒序查看文本内容

tac [option] 文件名

[option]不常用,可通过tac --help 进行查看

3、head - 显示文本开头指定行内容

head [option] 文件名

[option]

  • -n 行数,显示文本头n行内容,不带-n时默认显示10行

4、tail - 显示文本末尾指定行内容

tail [option] 文件名

[option]

  • -n 行数,显示文本末尾n行内容,不带-n时默认显示10行
  • -f 查看文本末尾内容结束后不退出,跟随显示新增的行

5、more - 分屏显示文本内容

注:当内容显示完后会自动关闭文件

more [option] 文件名

[option]

  • -n 一次显示n行
  • -s 显示连续空行为一行
  • +n 从n 行开始显示
  • -f 统计实际行数
  • +/pattern 在每个文档显示前搜寻pattern字符串,然后从pattern之后开始显示

6、less - 分屏显示文本内容

less [option] 文件名

[option]

  • -e 当文件显示结束后按任意键都可关闭文件

  • -i 忽略搜索时的大小写

  • -m 显示百分比

  • -N 显示行号

  • -o 将输出的内容在指定文件中保存

  • -s 显示连续空行为一行

  • /pattern 向下搜索字符串,从上往下

  • ?pattern 向上搜索字符串,从下往上

注:Pg Up与Pg Dn只有在less中可以使用

7、创建文件

touch [fileName]

[option]

  • -a:或--time=atime或--time=access或--time=use 只更改存取时间;
  • -c:或--no-create 不建立任何文件;
  • -d:<时间日期> 使用指定的日期时间,而非现在的时间;
  • -f:此参数将忽略不予处理,仅负责解决BSD版本touch指令的兼容性问题;
  • -m:或--time=mtime或--time=modify 只更该变动时间;
  • -r:<参考文件或目录> 把指定文件或目录的日期时间,统统设成和参考文件或目录的日期时间相同;
  • -t:<日期时间> 使用指定的日期时间,而非现在的时间;
  • --help:在线帮助;
  • --version:显示版本信息。

8、建立文件链接

ln -s 源文件 目标文件

V、文件解压缩指令

zip - 压缩文件

注:通过zip指令压缩的文件格式为.zip,只能通过unzip进行解压

zip [option] [压缩后的文件名] [压缩的目录路径]

[option]

  • -a 将文件转成ASCII模式
  • -F 尝试修复损坏的压缩文件
  • -h 显示帮助界面
  • -m 将文件压缩之后,删除源文件
  • -o 将压缩文件内的所有文件的最新变动时间设为压缩时候的时间
  • -q 安静模式,在压缩的时候不显示指令的执行过程
  • -r 将指定的目录下的所有子目录以及文件一起处理
  • -S 包含系统文件和隐含文件(S是大写)

unzip - 解压缩文件

unzip [option] [待解压缩文件]

[option]

  • -n 解压缩时不要覆盖原有的文件;
  • -o 不必先询问用户,unzip执行后覆盖原有的文件;
  • -P [密码] 使用zip的密码选项;
  • -q 执行时不显示任何信息;
  • -d [目录] 指定文件解压缩后所要存储的目录;

gzip - 解/压缩文件

注:gzip指令压缩的文件一般格式为.gz

gzip [option] [压缩的目录路径]/[待解压缩文件]

[option]

  • -a 使用ASCII文字模式。
  • -c 显示压缩文件的所有内容。
  • -d 解开压缩文件。
  • -f 强行压缩文件。不理会文件名称或硬连接是否存在以及该文件是否为符号连接。
  • -h 获取在线帮助。
  • -l 列出压缩文件的相关信息。
  • -n 压缩文件时,不保存原来的文件名称及时间戳记。
  • -N 压缩文件时,保存原来的文件名称及时间戳记。
  • -q 不显示警告信息。
  • -r 递归处理,将指定目录下的所有文件及子目录一并处理。
  • -t 测试压缩文件是否正确无误。。
  • -<压缩效率> 压缩效率是一个介于1-9的数值,预设值为"6",指定愈大的数值,压缩效率就会愈高。

tar - 文件打包

注:tar指令打包的文件一般格式为.tar.gz.gz两种,只处理本身打包的文档。

tar [option] [打包后的文件名] [打包的目录路径]
常用命令:tar -xvf [打包后的文件名] [打包的目录路径]

[option]

  • -c 建立压缩档案
  • -x 解压档案
  • -t 查看内容
  • -r 向压缩归档文件末尾追加文件
  • -u 更新原压缩包中的文件
  • -m 还原文件时,不变更文件的更改时间
  • -w 遭遇问题时先询问用户
  • -z 通过gzip指令处理备份文件
  • -r 新增文件到已存在的备份文件的结尾部分
  • -cf 创建压缩文档
  • -tvf/-xf 解压缩文档

VI、VIM编辑器

vim(vi)是Linux上常用编辑器,在Windows上可以使用记事本来编辑文件内容,Vim也类似于记事本,但是Vim有更加强大的功能。在Vim中,有命令模式,输入模式 和 末行模式(底行命令模式)三种模式。

vi/vim [filename]

当vim后面跟随的是不存在的文件时,系统会自动创建这个新文件

[option]

  • :wq 正常保存退出(如果提示"readonly",则需要使用:wq!进行强制保存)

  • :w [filename] 将编辑的数据储存成新的文件

  • :q 在没有修改内容的情况直接退出

  • :q! 不保存,强制退出

  • i/I 在光标所在位置后面开始输入,插入

  • dd 删除光标所在行

  • x 删除光标所在字符

  • u 撤销上一次操作

  • s 替换光标所在位置的字符

  • /pattern 向前搜索(从上往下)

  • ?pattern 向后搜索(从下往上)

VII、服务管理

systemctl指令(CentOS7)

注:unit参数为服务名称(格式可以为unit或者unit.service),option为子命令。systemctl只可以在CentOS7系统中使用,在CentOS6系统中需要使用service指令对服务进行操作。

systemctl [option] [unit]

[option]

  • start 启动unit服务。
  • stop 关闭unit服务。
  • restart 重启unit服务。
  • reload 在不关闭unit服务的情况重新加载配置文件。
  • enable 设置开机自启服务。
  • disable 设置开机不自启服务(默认项)。
  • status 查看unit服务的运行状态。
  • mask 注销unit服务,从系统服务中删除unit服务

service指令(CentOS6)

注:unit参数为服务名称,option为子命令。

service [unit] [option]

[option]

  • start 启动unit服务。
  • stop 关闭unit服务。
  • restart 重启unit服务。
  • status 查看unit服务的运行状态。

ps指令

ps命令用于查看当前系统的进程状态。可以搭配kill指令随时中断、删除不必要的程序。

ps [option]

[option]

  • -ef 用标准的格式显示进程
  • aux/-aux 用BSD的格式显示进程
  • -u 查看特定用户运行的进程
  • -C 查看具体的某个进程信息
  • -f 将得到的信息进行格式化
  • -a 显示当前终端的所有进程信息
  • -u 以用户的信息显示进程
  • -x 显示后台进程的参数
  • -ef 以进程树界面显示进程

netstat 指令

netstat -nplt #查看正在使用的监听端口程序进程

kill指令

kill命令用来删除执行中的程序或进程。程序或进程的编号(pid)可利用ps指令查看。

kill [option] pid

[option]

Signal Name Number Description
SIGHUP 1 Hangup (POSIX)
SIGINT 2 Terminal interrupt (ANSI)
SIGQUIT 3 Terminal quit (POSIX)
SIGILL 4 Illegal instruction (ANSI)
SIGTRAP 5 Trace trap (POSIX)
SIGIOT 6 IOT Trap (4.2 BSD)
SIGBUS 7 BUS error (4.2 BSD)
SIGFPE 8 Floating point exception (ANSI)
SIGKILL 9 Kill(can't be caught or ignored) (POSIX)
SIGUSR1 10 User defined signal 1 (POSIX)
SIGSEGV 11 Invalid memory segment access (ANSI)
SIGUSR2 12 User defined signal 2 (POSIX)
SIGPIPE 13 Write on a pipe with no reader, Broken pipe (POSIX)
SIGALRM 14 Alarm clock (POSIX)
SIGTERM 15 Termination (ANSI)
SIGSTKFLT 16 Stack fault
SIGCHLD 17 Child process has stopped or exited, changed (POSIX)
SIGCONT 18 Continue executing, if stopped (POSIX)
SIGSTOP 19 Stop executing(can't be caught or ignored) (POSIX)
SIGTSTP 20 Terminal stop signal (POSIX)
SIGTTIN 21 Background process trying to read, from TTY (POSIX)
SIGTTOU 22 Background process trying to write, to TTY (POSIX)
SIGURG 23 Urgent condition on socket (4.2 BSD)
SIGXCPU 24 CPU limit exceeded (4.2 BSD)
SIGXFSZ 25 File size limit exceeded (4.2 BSD)
SIGVTALRM 26 Virtual alarm clock (4.2 BSD)
SIGPROF 27 Profiling alarm clock (4.2 BSD)
SIGWINCH 28 Window size change (4.3 BSD, Sun)
SIGIO 29 I/O now possible (4.2 BSD)
SIGPWR 30 Power failure restart (System V)

VIII、网络管理

ping - 测试主机网络连通性

注:domain是指目标域名,ip是指目标主机的IP地址。

ping [option] [domain]/[ip]

[option]

  • -c 设置完成要求回应的次数
  • -d 使用Socket的SO_DEBUG功能

ifconfig - 配置和显示网络参数

ifconfig [option]

[option]

  • -a 显示所有网络参数
  • [ip] 设定临时IP地址
  • up 启动指定的网络设备
  • down 关闭指定的网络设备
  • [name] 指定网络设备名称

配置静态IP vim /etc/sysconfig/network-scripts/ifcfg-*

  BOOTPROTO="dhcp"改成BOOTPROTO="static"
  									
  IPADDR=192.168.*.n
  									
  NETMASK=255.255.255.0
  									
  GATEWAY=192.168.*.2
  									
  DNS=8.8.8.8

systemctl restart network 修改完配置文件之后需要重启网络服务才可以使配置文件生效

怎么查看子网掩码、网关Ip、有效Ip呢?

image-20230919083723114

image-20230919083848137

image-20230919084007700

image-20230919084319171

hostname - 显示和设置主机名

hostname [option]

[option]

  • -a 显示主机别名
  • -d 显示DNS域名
  • -i 显示主机的IP地址

修改主机名:hostnamectl set-hostname [新主机名]

ifup/ifdown - 激活/ 禁用网络接口

ifup/ifdown [name] 

注:[name] 是指网络设备的名字

nslookup - 查询域名DNS信息

nslookup [domain]/[ip]

注:domain是指目标域名,ip是指目标主机的IP地址。

wget - Linux系统下载工具

wget命令用来从指定的URL下载文件。wget非常稳定,它在带宽很窄的情况下和不稳定网络中有很强的适应性,如果是由于网络的原因下载失败,wget会不断的尝试,直到整个文件下载完毕。如果是服务器打断下载过程,它会再次联到服务器上从停止的地方继续下载。这对从那些限定了链接时间的服务器上下载大文件非常有用。

wget [option] [url]

[option]

  • -V(大写) 显示版本信息
  • -h 获取帮助信息
  • -o 下载文件时以不同的文件名保存
  • -c 使用wget断点续传下载
  • -b 使用wget后台下载
  • -P 下载到指定目录
  • -r 指定递归下载
  • -N 只获取比本地文件新的版本
  • -q 安静模式(无信息输出)

tail -f wget-log 查看文件下载进度

curl - 文件下载工具

curl命令是一个利用URL规则在命令行下工作的文件传输工具。它支持文件的上传和下载,所以是综合传输工具,但按传统,习惯称curl为下载工具。作为一款强力工具,curl支持包括HTTP、HTTPS、ftp等众多协议,还支持POST、cookies、认证、从指定偏移处下载部分文件、用户代理字符串、限速、文件大小、进度条等特征。做网页处理流程和数据检索自动化,curl可以祝一臂之力。

curl [option] [url]

[option]

  • -C(大写) 断点续转
  • -o 将获取到的文件以新名字保存
  • -O(大写) 将获取到的文件以原名字保存
  • -c 将[url]中的cookie信息保存到文件中
  • -# 显示下载进度条
  • -s 不显示下载进度条

curl [url] >> [filename] 通过重定向的方式保存文件

yum-镜像文件下载工具

1、先备份好原有镜像

cp /etc/yum.repos.d/CentOS-Base.repo  /etc/yum.repos.d/CentOS-Base.repo.back

2、下载并配置阿里云镜像

curl -o /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo

3、清理缓存

yum clean all

4、生成缓存

yum makecache

5、查看yum镜像源

yum repolist

6、查找命令所在的包名

yum provides [命令]

IX 权限管理

chmod

Linux/Unix 的文件调用权限分为三级 : 文件拥有者、群组、其他。利用 chmod 可以藉以控制文件如何被他人所调用。

chmod [option][mode] [filename]

[option]

  • -c 若该文件权限确实已经更改,才显示其更改动作
  • -f 若该文件权限无法被更改也不显示错误信息
  • -v 显示权限变更的详细资料
  • -R 对目前目录下的所有文件与子目录进行相同的权限变更
  • --help 显示帮助说明
  • --version 显示版本

[mode]

  • u 表示该文件的拥有者,g 表示与该文件的拥有者属于同一个群体(group)者,o 表示其他以外的人,a 表示这三者皆是。

  • +表示增加权限、- 表示取消权限、= 表示唯一设定权限。

  • r:read=4 w:write=2 x:execute=1

chmod 777 [filename] #所有授权文件    r+w+x=7   r+x=5  r+w=6  w+x=3
chmod u+x [filename] #拥有者执行权限
chmod ugo+x [filename] #所有文件群组的执行权限
chmod ugo+x,g-x [filename] #所有文件群组,除去拥有者所属组的执行权限

X 防火墙

防火墙是一组规则。当数据包进出受保护的网络区域时,进出内容(特别是关于其来源、目标和使用的协议等信息)会根据防火墙规则进行检测,以确定是否允许其通过。

firewalld

1、查看firewalld服务状态

systemctl status firewalld
  • 出现Active: active (running)切高亮显示则表示是启动状态。

  • 出现 Active: inactive (dead)灰色表示停止,看单词也行。

2、查看firewalld的状态

firewall-cmd --state
  • 出现running(黑色)表示正常运行
  • 出现not running(红色)表示停止

3、开启、重启、关闭firewalld.service服务**

systemctl start firewalld     # 启动防火墙
systemctl restart firewalld    # 重启防火墙
systemctl stop firewalld    # 停止防火墙

4、查看防火墙规则

firewall-cmd --list-all

5、查询、开放、关闭端口

firewall-cmd --query-port=端口号/tcp     # 查询端口
firewall-cmd --permanent --add-port=端口号/tcp    # 开放端口
firewall-cmd --permanent --remove-port=端口号/tcp  # 关闭端口
firewall-cmd --reload   #重启防火墙(修改配置后要重启防火墙)
  • firwall-cmd:是Linux提供的操作firewall的一个工具;

  • --permanent:表示设置为持久;

  • iptables

    https://blog.csdn.net/zhengsaisai/article/details/81063598)

    1、基本操作

    systemctl status  iptables     # 查看防火墙状态(iptables)
    systemctl stop iptables      # 停止防火墙(iptables)
    systemctl start iptables       # 启动防火墙(iptables)
    systemctl restart iptables        # 重启防火墙(iptables)
    chkconfig iptables off    # 永久关闭防火墙(不会自动重启系统)(iptables)
    chkconfig iptables on  # 永久关闭后重启(自动重启系统)(iptables)
    

    2、开启端口

    vim /etc/sysconfig/iptables   # vim编辑配置文件
    
    -A INPUT -m state --state NEW -m tcp -p tcp --dport 端口号 -j ACCEPT   # 添加新的端口号
    
    systemctl restart iptables   # 重启防火墙(iptables)
    
    netstat -tlnp    # 查询已开放的端口,端口必须要有程序在使用netstat -tlnp
    

    SELinux

    查看SELinux状态:

    • sestatus -v #如果SELinux status参数为enabled即为开启状态
    • getenforce #也可以用这个命令检查

    关闭SELinux:

1、临时关闭

setenforce 0 #设置SELinux 成为permissive模式(临时关闭)

2、修改配置文件(永久关闭)

修改/etc/sysconfig/selinux 文件,将SELINUX=enforcing改为SELINUX=disabled,保存并退出vim编辑器,接着重启系统(init 6 / shutdown -r now)方可生效。

XI 软件包管理

RPM

[option]

  • –i 安装(Install)软件。
  • –U 升级(Upgrade)旧版本的软件。
  • –e 移除/删除(Erase)软件。
  • –v 显示详细的处理信息。
  • –h 显示安装进度。卸载不能用
  • -q 查询软件/软件包
  • --force 强制覆盖安装

常用的查询已安装的软件包信息的命令:

  • a) rpm –qa:显示目前操作系统上安装的全部软件包,其中q是查询的第1个字母,a是all(全部)的第1个字母。

  • b) rpm –qf 文件名:显示这个文件是由哪个软件包安装的,f是file(文件)的第1个字母。

  • c) rpm –qi 软件包名:显示这个软件包的信息,i是information(信息)的第1个字母。

  • d) rpm –ql 软件包名:列出这个软件包中所包含的全部文件,其中l是list的第1个字母。

    YUM

    yum( Yellow dog Updater, Modified)是一个在Fedora和RedHat以及SUSE中的Shell前端软件包管理器。基於RPM包管理,能够从指定的服务器自动下载RPM包并且安装,可以自动处理依赖性关系,并且一次安装所有依赖的软体包,无须繁琐地一次次下载、安装。

    常用命令

    1.列出所有可更新的软件清单命令:yum check-update

    2.更新所有软件命令:yum update

    3.仅安装指定的软件命令:yum install <package_name>

    4.仅更新指定的软件命令:yum update <package_name>

    5.列出所有可安裝的软件清单命令:yum list

    6.删除软件包命令:yum remove <package_name>

    7.查找软件包 命令:yum search

    8.清除缓存命令:

    • yum clean packages: 清除缓存目录下的软件包
    • yum clean headers: 清除缓存目录下的 headers
    • yum clean oldheaders: 清除缓存目录下旧的 headers
    • yum clean, yum clean all (= yum clean packages; yum clean oldheaders)

安装jdk在/etc/profile里的配置环境如下:
Java_Home=/usr/java/jdk

Jre_Home=${Java_Home}/jre

CLASSPATH=.?{Java_Home}/lib:${Jre_Home}/lib

PATH=${Java_Home}/bin:$PATH

export PATH CLASSPATH Java_Home Jre_Home

然后用java -v 或者 javac 命令检测是否环境是否正确

XII 杂项指令

A 时间指令

tzselect - 设置时区

	Asia/亚洲时区 -> China/中国时区 -> BeiJingTime/北京时区 -> Yes/同意

date - 查看/设置时间

date [option] 

[option]

  • -R 查看当前的时区
  • -s 设置时间

注:更改了系统时间之后,记得以 clock -w 来将系统时间写入 CMOS 中,这样下次重新开机时系统时间才会持续保持最新的正确值。

ntpdate - 同步时间

ntpdate指令归属于ntp组件,组件安装指令为 yum install -y ntp

ntpdate cn.ntp.org.cn

注:更改了系统时间之后,记得使用 hwclock --systohc 来将系统时间写入 CMOS 中,这样下次重新开机时系统时间才会持续保持最新的正确值。

B 磁盘指令

df - 显示空间使用情况

df [option] [path]

[option]

  • -a 显示所有系统文件
  • -h 以容易阅读的方式显示
  • -H 以1000字节为换算单位来显示
  • --sync 在取得磁盘使用信息前先同步数据

free - 显示系统内存情况

free [option]

[option]

-b 以Byte为单位显示内存使用情况

-k 以KB为单位显示内存使用情况

-m 以MB为单位显示内存使用情况

-g 以GB为单位显示内存使用情况

-t 显示内存使用总合

top-内存中进程使用情况

top 

du-递归查看目录下所有文件大小

du -h

iotop-查看IO读写速度

iotop 查看IO读写速度
iotop -o 仅显示实际执行I/O的进程或线程,只显示在划硬盘的程序

C 文件指令

locate - 查找文件

在后台数据库中按文件名搜索(也只能按文件名搜索),搜索速度较快,数据库默认一天一更新,所以一般新建的文件,如果不手动更新该数据库,在该天内是无法使用locate命令来查看文件位置的,更新该数据库的命令为:updatedb。

locate <keyword>

grep - 查找文件(内容)

grep 指令用于查找内容包含指定的范本样式的文件,如果发现某文件的内容符合所指定的范本样式,预设 grep 指令会把含有范本样式的那一列显示出来。若不指定任何文件名称,或是所给予的文件名为 -,则 grep 指令会从标准输入设备读取数据。

grep [option] [filename]

[option]

  • -i 忽略字符大小写的差别
  • -l 列出文件内容符合指定的样式的文件名称
  • -L 列出文件内容不符合指定的样式的文件名称

grep使用场景

  • ls | grep <keyword> 筛选目录或文件
  • ps aux | grep <keyword> 筛选服务进程
  • rpm -qa | grep <keyword> 筛选已经安装的软件包
  • yum list | grep <keyword> 筛选YUM源中软件包

find-查找文件位置

用于查找目录下的文件位置

find [范围目录]  -name  [文件名]
  • 示例
find /var \! -atime -90 在/var目录下90天内未被修改的文件。
find /home -mtime +120 在/home目录下找出120天之前被修改过的文件。
find . -name 'mysql*' 查找mysql相关文件
  • basename:截取文件/最后一级目录名
basename /etc/file.sh
  • dirname:截取文件父路径(除最后一级目录/文件除外)
dirname /etc/file/test.sh

D 网络指令

netstat - 显示网络状态

netstat [option]

[option]

  • -a 显示所有连线中的Socket
  • -h 在线帮助
  • -l 显示监控中的服务器的Socket
  • -M 显示伪装的网络连线
  • -p 显示程序识别码和程序名称
  • -t 显示TCP传输协议的连线状况
  • -u 显示UDP传输协议的连线状况
  • -v 显示指令执行过程
  • -V 显示版本信息

traceroute - 路由跟踪

traceroute [option] [ip/url]

[option]

  • -F 设置勿离断位
  • -n 直接使用IP地址而非主机名称
  • -v 显示指令的执行过程
  • -w 设置等待远端主机回报的时间
  • -x 开启或关闭数据包的正确性检验

dig - DNS查询

Dig是一个在类Unix命令行模式下查询DNS包括NS记录,A记录,MX记录等相关信息的工具。

dig [ip/url]

host - 分析域名查询工具

host [option] [ip/url]

[option]

  • -a 显示详细的DNS信息

  • -v 显示指令执行的详细信息

  • -w 如果域名服务器没有给出应答信息,则一直等待,直到域名服务器给出应答

  • -W 指定域名查询的最长时间,如果在指定时间内域名服务器没有给出应答信息,则退出指令

  • -4/-6 使用IPv4/IPv6

    E 系统管理

    fwhios - 查找显示用户信息

    本指令的功能有点类似finger指令,它会去查找并显示指定帐号的用户相关信息。不同之处在于fwhois指令是到Network Solutions的WHOIS数据库去查找,该帐号名称必须有在上面注册才能寻获,且名称没有大小写的差别。

    fwhios [name]
    
    • whoami

    查看当前登录用户名

    sleep - 延迟动作执行时间

    sleep [option]
    

    [option]

    • --help 显示辅助信息
    • --version 显示版本编号
    • number 时间长度,后面可接s(秒)、m(分)、h(小时)、d(日数)

    logname - 显示用户名称

    logname [option]
    

    [option]

    • --help 显示帮助信息
    • --version 显示版本信息

    who - 查看用户

    who命令用于显示系统中有哪些使用者正在上面,显示的资料包含了使用者 ID、使用的终端机、从哪边连上来的、上线时间、呆滞时间、CPU 使用量、动作等等。

    who [option]
    

    [option]

    • -H 显示各栏位的标题信息列
    • -u 显示闲置时间
    • -q 只显示登入系统的帐号名称和总人数
    • -w 显示用户的信息状态栏
    • --help 显示帮助信息
    • --version 显示版本信息

    last - 显示用户登录信息

    last [option]
    

    [option]

    • -R 省略hostname的栏位
    • -num 展示前num个
    • username 展示username的登入信息

    uname - 显示系统信息

    uname [option]
    

    [option]

    • -a 显示全部的信息
    • -m 显示电脑类型
    • -n 显示在网络上的主机名称
    • -r 显示操作系统的发行编号
    • -s 显示操作系统的版本
    • --help 显示帮助信息
    • --version 显示版本信息

E 系统设置

clear - 清屏

clear指令(Ctrl+l<小写L>)本质上让终端显示页向后翻了一页,如果向上滚动屏幕还可以看到之前的操作信息,而reset指令将会把之前的终端输入操作信息将都会被清空,但整个命令过程速度有点慢。

clear

alias - 指定别名

用户可利用alias,自定指令的别名。若仅输入alias,则可列出目前所有的别名设置。alias的效力仅及于该次登入的操作。

alias [别名]=[指令名称]

[option] : 若不加任何参数,则列出目前所有的别名设置

unalias - 删除别名

unalias [option] [别名]

[option]

  • -a 删除全部的别名

rdate - 显示远端主机时间

rdate [option] [url/ip]

[option]

  • -p 显示远端主机的日期与时间
  • -s 把从远端主机收到的日期和时间,回存到本地主机的系统时间
  • -u 传输协议使用UDP协议
  • -l 使用syslog显示错误信息
  • -t<时间> 设置超时时间

F corntab - 定时任务

corntab -e #打开文本编辑编写任务并使用corn表达式设置定时
  • corn表达式
分钟 时 日 月 星期 年
*/1 * * * * *  echo"hello word!" 每隔一分钟打印一次helloword

G which-查找shell命令完整路径

which [shell命令]
  • --skip-dot:跳过PATH中以“.”开头的目录。

  • --skip-tilde:跳过PATH中以“~”开头的目录和家目录下的可执行程序。

  • --show-dot:与--skip-dot相反,不跳过,但是不会显示完整的路径,而是显示“./programname”。

  • --show-tilde:当目录匹配为家目录的时候输出一个波浪号。如果which是以root用户执行的话,则此选项会被忽略。

H whereis-查找命令的二进制程序,源代码和man手册

whereis [- command...]  [shell命令]
  • -b:仅查找二进制文件。

  • -m:仅查找man手册文件。

  • -s:仅查找源代码文件。

  • -B:限制whereis查找二进制文件所使用的目录,多个目录使用空格分隔。

  • -M:限制whereis查找man手册文件所使用的目录,多个目录使用空格分隔。

  • -S:限制whereis查找源代码文件所使用的目录,多个目录使用空格分隔。

  • -f:终止目录列表并标志文件的开始。当-B、-M或者-S选项有被使用的时候,此选项必须被使用。

I who-显示已登录的用户

who [- mand] 

-b, --boot:显示系统上次引导(开机)的日期和时间。

-d, --dead:打印死亡进程。

-l, --login:打印系统登录进程。

-p, --process:打印由init所spawn出来的活跃进程。

-r, --runlevel:打印当前运行级别。

t, --time:打印上次系统时钟变化。

-T, -w, --mesg:添加用户的消息状态(+, -, ?)。

  • +:表示允许写消息;
  • -:表示禁止写消息;
  • ?:表示无法找到终端设备。

L 远程操作主机

rsync-同步数据(远程同步,增量复制)

会自动创建父路径

rsync -av /home/  [user]@[主机IP]:/home/
rsync -e 'ssh -p 10000'  -r usertalkremote.sh root@8.8.8.252:/home/  #指定端口远程主机同步

scp-拷贝远程主机(安全拷贝)

scp -r  源文件用户名A@主机名1:path1    目标文件用户名B@主机名2:path2

ssh-免密登录

ssh keygen -t rsa #生成私钥和公钥
ssh-copy-id -p [端口] user@IP #拷贝私钥
ssh user@IP #免密登录
ssh -t -p [端口]  [用户名]@[主机IP]  . /home/remote/remoteTalkScript.sh #登录并执行脚本

M 磁盘分区与挂载

image-20231027144142801

  • 查看磁盘挂载情况
df -h
  • 查看磁盘分区情况及大小类型
lsblk 

image-20231027143504703

  • 格式化显示磁盘分区信息

image-20231027144014111

type:disk(磁盘) part(分区) rom(系统光驱) lvm(链接)

fstype:ext2/3/4——扩展文件系通(推荐使用ext4支持快照)

​ xfs——XFS文件系统

​ btrfs——Btrfs文件系统

​ ntfs——NTFS文件系统

​ fat32——FAT32文件系统

UUID 文件唯一标识符

mountpoint:磁盘挂载点

  • 增加磁盘空间及分区步骤

选择虚拟机,设置

image-20231028230200054

image-20231028230309002

image-20231028230333318

image-20231028230528796

image-20231028230553462

image-20231028230612827

  • 重启虚拟机

2.2.分区

  • 查看挂载的磁盘名

image-20231028230904171

  • 分区
fdisk [path]  #图中路径是/dev/sda

image-20231028231045022

输入 n 回车

image-20231028231116403

  • 起始扇区直接默认

  • last扇区+扇区是大概的存储大小,

  • 默认回车选择w 保存并退出

2.3.格式化

image-20231028231228088

lsblk -f

image-20231028231259638

image-20231028231325859

2.4.挂载(这一步完成前不要关机,否则挂载失败)

注意要挂载在一个空目录下,否则有文件目录下的资源不能为访问。

mount /dev/sdb3  [空目录路径]  #挂载磁盘,使磁盘可用  暂时挂载 看磁盘可用吗  关机就恢复
df -h  查看磁盘是否成功挂载
unmount   /dev/sdb3  #取消挂载

永久挂载需要 修改/etc/fstab

vim /etc/fstab

image-20231028232218633

保存退出,执行mount -a或者关机重启生效!

df -h 或者 lsblk 查看是否挂载成功!

2.5.分区扩容

  • 扩容磁盘

先关闭虚拟机,把所有快照删除,选择虚拟机设置,选择硬件,选择扩展!

image-20231105095908104

image-20231105095927277

注意:图中的磁盘大小是总磁盘大小!

  • 虚拟机操作
lsblk  -- 查看扩容情况

image-20231105100054662

发现了扩展了磁盘,但是没有多余的容量

parted /dev/sda print free  #查看剩余空间

注意以下图中是lsblk命令查出的磁盘情况,sda2是根目录

image-20231105100259250

parted /dev/sda resizepart 2 100%   #把sda中40G全部给根目录

image-20231105100446165

lvextend -l+100%FREE /dev/mapper/centos-root  #把物理分区设置为逻辑分区
lsblk  #查看分区情况

image-20231105100646511

#最后让拓展生效 查看root是什么类型的磁盘 是ext还是xfs类型。
vim  /etc/fstab
#如果是 ext 类型的则执行
resize2fs /dev/mapper/centos-root
#如果是 xfs 类型的则执行
xfs_growfs /dev/mapper/centos-root

image-20231105100811894

df -h  #查看扩容后的磁盘情况

image-20231105100957233

XIII linux三剑客

1、sed

  • 查看指定行
sed -n 'np'(n为整数) [文件路径]
  • 匹配正则表达式
sed -n '/^root/p'  [文件路径]  #获取以root开头行记录
  • 匹配多行
sed -n '3,5p'  [文件路径]  #查看3-5行
  • 匹配最后一行
sed -n '$p' [文件路径] #查看最后一行

2、awk

基本格式

awk [选项参数] '/pattern/{action1} /pattern2/{action2}' [filename]
  • -F:以指定的符号分割成列(默认是空格或制表符)
  • -v:赋值用户自定义变量

实例

ifconfig ens33|awk '/netmask/{print $2}'  #切割IP地址,获取以空格切割后的第2列值
ifconfig |awk '/^$/{print NR}'  #获取空格所在的行数
ifconfig |awk 'END{print NR}'  #获取最后一行的行数
ifconfig |awk 'BEGIN{print NR}'
####指定输入字段分隔符为'|',输出字段分隔符为'~',并输出第二列和最后两列
awk -v FS='|' -v OFS='~' '{print $2,$(NF-1),$(NF)}' salary.txt
awk 'NR>1&&NR<=3{print $0}' salary.txt  #获取第二行和第三行的记录
awk -F : '{print "文件名:" FILENAME}{print "列数:"NF}{print "行号:"NR}' /etc/passwd

image-20231026212837789

3、cut

cut [-bn] [file] 或 cut [-c] [file] 或 cut [-df] [file]

选项与参数:
  -d :后面接分隔字符。与 -f 一起使用;
  -f :依据 -d 的分隔字符将一段信息分割成为数段,用 -f 取出第几段的意思;
  -c :以字符 (characters) 的单位取出固定字符区间;

  • 范例
cut -d " " -f 1(1,2/1-5/1-) [filename]   截取以空格分割的第一列(12列/1到5列/1到任意列)中的字符

4、grep

grep [- command] [filename]
grep -E [正则表达式]   #匹配扩展的正则表达式符号,如{},?,+等

-i:在搜索的时候忽略大小写

-n:显示结果所在行号

-c:统计匹配到的行数,注意,是匹配到的总行数,不是匹配到的次数

-o:只显示符合条件的字符串,但是不整行显示,每个符合条件的字符串单独显示一行

-v:输出不带关键字的行(反向查询,反向匹配)

-w:匹配整个单词,如果是字符串中包含这个单词,则不作匹配

-Ax:在输出的时候包含结果所在行之后的指定行数,这里指之后的x行,A:after

-Bx:在输出的时候包含结果所在行之前的指定行数,这里指之前的x行,B:before

-Cx:在输出的时候包含结果所在行之前和之后的指定行数,这里指之前和之后的x行,C:context

-e:实现多个选项的匹配,逻辑or关系

-q:静默模式,不输出任何信息,当我们只关心有没有匹配到,却不关心匹配到什么内容时,我们可以使用此命令,然后,使用”echo $?”查看是否匹配到,0表示匹配到,1表示没有匹配到。

-P:表示使用兼容perl的正则引擎。

-E:使用扩展正则表达式,而不是基本正则表达式,在使用”-E”选项时,相当于使用egrep。

echo "15717961340" | grep -E ^1[35679][0-9]{9}  #匹配前面的号码
grep -v "root" -E ^1[35679][0-9]{9}  /etc/passwd  #匹配不含root且是手机号的行记录

XIV 服务器部署

一、安装mysql8.0

  • 1.首先进入官网 https://downloads.mysql.com/archives/community/

image-20230919170719461

  • 2.如果复制了链接地址,进入存放mysql压缩包目录中,进行命令下载。
wget [复制的链接的地址]  #进行压缩包下载
tar -xvf [下载后的文件名]  #对.tar文件进行解压。

image-20230919171126567

  • 3.按照安装顺序进行安装
[1]rpm -ivh  mysql-community-common-8.0.16-2.el7.x86_64.rpm
[2]rpm -ivh  mysql-community-libs-8.0.16-2.el7.x86_64.rpm
[3]rpm -ivh  mysql-community-libs-compat-8.0.16-2.el7.x86_64.rpm
[4]rpm -ivh  mysql-community-client-8.0.16-2.el7.x86_64.rpm
[5]rpm -ivh  mysql-community-server-8.0.16-2.el7.x86_64.rpm
  • 4.检查是否已经安装
rpm -qa|grep mysql #出现以下五个包表示安装成功!

image-20230919171715100

  • 5.初始化mysql服务
mysqld --initialize
这个命令执行后会在/var/lib/下生成一个mysql文件夹,这个文件夹就是mysql的data,同时也会生成一个用户名为 root 和一个初始化密码,密码在 /var/log/mysqld.log文件中,可以使用 cat /var/log/mysqld.log | grep password 命令进行查找.
  • 6.查看mysql配置文件,并查看日志文件和数据存放路径
cat  /etc/my.cnf

image-20230919172454089

  • 7.查看mysql初始化密码
cat /var/log/mysqld.log|grep password

image-20230919172740370

  • 8.启动mysql服务
systemctl start mysqld  #centOs7启动命令
service mysqld start    #centOs6启动命令
  • 9.使用初始化密码登录并修改密码
mysql -uroot -p[rlt,5eh=k-xT(初始化密码)]

[注意] 如果你登不上,而且打印信息有mysql.sock 那你就配置/etc/my.cnf文件,如果你发现没有my.cnf,使用touch my.cnf创建文件

touch my.cnf
  • 打开文件并导入相关配置信息
vim /etc/my.cnf #编辑mysql配置文件
  • 配置信息如下:
[client]
port = 3306
socket = /var/lib/mysql/mysql.sock
default-character-set=utf8
# For advice on how to change settings please see
# http://dev.mysql.com/doc/refman/8.0/en/server-configuration-defaults.html

[mysqld]
#
# Remove leading # and set to the amount of RAM for the most important data
# cache in MySQL. Start at 70% of total RAM for dedicated server, else 10%.
# innodb_buffer_pool_size = 128M
#
# Remove leading # to turn on a very important data integrity option: logging
# changes to the binary log between backups.
# log_bin
#
# Remove leading # to set options mainly useful for reporting servers.
# The server defaults are faster for transactions and fast SELECTs.
# Adjust sizes as needed, experiment to find the optimal values.
# join_buffer_size = 128M
# sort_buffer_size = 2M
# read_rnd_buffer_size = 2M
#
# Remove leading # to revert to previous value for default_authentication_plugin,
# this will increase compatibility with older clients. For background, see:
# https://dev.mysql.com/doc/refman/8.0/en/server-system-variables.html#sysvar_default_authentication_plugin
# default-authentication-plugin=mysql_native_password
port = 3306
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
character-set-server=utf8

log-error=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid

[mysql]
no-auto-rehash
default-character-set=utf8
  • 然后重新启动服务。

  • 10.修改密码

 ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '[新密码]';
  • 11、退出重新登录
exit; 
mysql -uroot -p
  • 12、配置远程访问(linux系统上登录mysql后进行操作)
update mysql.user set host=‘%’ where user=‘root';
  • 13.刷新权限(linux系统上登录mysql后进行操作)
flush privileges
  • 14、防火墙开放端口
firewall-cmd --add-port=3306/tcp --permanent
systemctl restart firewalld
  • 15.使用可视化窗口进行数据库连接

image-20230919175153884

二、安装Tomcat9.0

  • 1、进入官网https://tomcat.apache.org/download-90.cgi

image-20230919175638739

  • 2、进入存放tomcat目录进行解压
wget [下载链接]  #在线下载tomcat9
tar -zvxf  [tomcat文件名]  #解压缩文件

image-20230919175910564

  • 3、可以更改端口号(默认端口号:8080)
vim /conf/server.xml

image-20230919180318726

  • 4、防火墙开放端口号
firewall-cmd --add-port=9999/tcp --permanent
  • 5、启动Tomcat (cd /tomcat/bin进入bin目录)
./startup.sh #启动
./shutdown.sh #关闭
  • 6、浏览器访问http://Ip地址:9999

image-20230919180710997

三、安装JDK8

在线安装

  • 1、先配置阿里云镜像
mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup #备份原来镜像
curl -o /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-7.repo #下载并配置阿里云镜像。
  • 2、查看yum中的JDK安装包
yum  list|grep jdk8

image-20230919181613480

  • 3、安装JDK8
yum install -y java-1.8.0-openjdk-demo.x86_64  
  • 4、测试java是否安装成功
java -version

image-20230919181815374

  • 5、项目打包详见springboot基础知识打包部署。
打好的war包,包文件名就是项目站点路径名,然后上传到tomcat的webapp文件中,并进行访问。
  • 6、动态检测日志文件(同步更新日志文件,相当于IDEA的控制台输出)
tail -f /tomcat/logs/catalina.out

离线安装

  • 1、下载jdk-linux包

https://www.oracle.com/java/technologies/downloads/

  • 2、上传到指定文件夹下,解压到特定文件
tar -zvxf jdk-linux-***.tar.gz -C /usr/local/java/
  • 3、配置环境变量
vim /etc/profile
  • profile文件配置内容如下
export JAVA_HOME=/usr/local/java/jdk-1.8.0.56/
export PATH=${JAVA_HOME}/bin:$PATH
  • 4、测试java环境
java -version 

XV shell脚本语法

  • 概述
shell是一个命令行解释器,它接收应用程序/用户命令,然后调用操作系统内核,shell还是一个功能相当强大的编程语言,易编写,易调试,灵活性强。

image-20231027082303670

  • 查看Linux提供的默认shell解释器
cat /etc/shells

/bin/bash
/bin/sh
/usr/bin/sh
/usr/bin/bash
/bin/tcsh
/bin/csh
  • bash和sh的关系
bash -> sh    # bash快捷指向sh
  • centos默认解析器是bash
echo $SHELL
/bin/bash

基本语法

开头以 #!/bin/bash 开始
使用 .  bash  source  sh [脚本名]  执行脚本
区别:使用./source  [脚本名]  执行脚本可以共享变量   使用bash/sh [脚本名] 不能共享变量
使用 .  bash  source  sh [脚本名]  执行脚本不需要有执行权限
#也可以授权执行权限给脚本,直接./脚本名执行
""与''区别:双引号可以解析变量值,单引号不能解析变量值。
env|less  #查看所有全局系统变量
printenv USER  #查看当前用户,不用加$
set|less 查看局部和全局变量,以及用户自定义的环境变量
export [variableName] 设置全局变量,也就是执行时携带参数可以作用于脚本中定义的变量。
echo $HOME # 查看root目录
echo $PWD   #查看工作目录
echo $USER  #查看当前登录用户
echo $SHELL #查看shell解释器
${varible}与$varible  #是一样的,获取已经定义好的变量值
[ ]或[[ ]] #判断true或false值,使用时注意用空格隔开每个字符 [[ ]]比较数值时可以用> < = []比较只能用eq gt lt ge le。
$[ ]、(( ))与 let  #可以直接算术表达式并复制 如:((a=1+1)),let a=1+1
$(( )) #可以进行整数运算并在外赋值 如:a=$((1+1))
$()与` ` #执行命令表达式
  • 选择分支
shell 中for循环语句,推荐使用$@
for num in $@($*)
  do
     echo "${num}"
  done
# $@和$*区别:在双引号引用下,$@把所有参数分割成一个个,$*把参数分割成整体,没有引号引用,两者一样。
  • 数组
arr=(a b 'arr')# 定义数组
echo ${arr[@]}  #打印所有数组值
echo ${arr[n]} # 打印下标为n的数组值
echo ${#arr[@]} #打印数组长度
echo ${#arr[3]} #打印下标为3字符串的长度
echo (${arr[@] arr1[@]})  #合并两个数组
  • 字符串操作
字符串操作
name='helloword'
echo ${name:2}  从下标为2开始截取所有
echo ${name:2:5} 从下标为2开始截取并截取5个字符
echo ${name:0-1:2}从右往左下标1开始(从1开始计数),从左往右截取2个字符
echo ${name#*he} 截取从he开始不包括he的任意长度字符串。
echo ${name##*.} 截取从最后一个.字符串开始任意长度字符串
echo ${name%ls*} 截取从ls开始左边开始,任意长度字符串。
echo ${name%%ls*}截取从最后ls开始左边开始,任意长度字符串。
echo shell${name}  字符串与变量值拼接
basename $path  打印文件名
dirname $path 打印文件路径
  • shell运算符
-lt(<)  -gt(>) -eq(==) -ne(!=)  -le(<=) -ge(>=)
[ ] 注意空格  必须使用-a表示&& -o表示|| 
[[ ]] 可以直接使用"&& ||"
  • 选择分支
if [ ]
then
....
....
elif [ ]
then
.....
.....
else
.....
fi
  • 开关选择分支
case 值 in 
"")
  ...
 ;;
"")
  ...
;;
*)
  ...
;;
esac
  • 循环
# for循环
for 值 in loop
do
  ...

done
#while循环
while(( ))
do
  ....
done
  • 函数
unction function_name(){

   return [返回值]
}
# 调用函数
function_name [参数1] [参数2] ...
echo $? #获取函数返回值 但是有个缺陷 只能返回0-255数值 尽量取变量
  • 常用的正则表达式
$:以什么结尾匹配
^:以什么开头匹配
.:表示匹配任意一个字符
*:表达匹配0个1个或多个字符
?:表示匹配0个或1个
+:表示一个或多个字符
[a,b]:表示a或b出现
[a-z]:表示出现所有字符
.*:表示出现任意个数的任意字符
{n}:表示n个字符
{m,n}:表示n个到m个字符
():表示固定的匹配格式  比如:(abc)表示 abc,(abc|def)表示 abc、def
!():表示固定的匹配格式取反
\w:单词字符,等价于[a-z0-9A-Z_]	  大小写字母 、数字、下划线
\W:非单词字符
\s:空白字符
\S:可见字符
\d:数字,等价于0-9
\D:非数字