Linux从入门到进阶

Linux从入门到进阶

初始Linux-入门

操作系统概述

在这里插入图片描述

初识Linux

Linux内核

请添加图片描述

Linux发行版

请添加图片描述

虚拟机介绍

什么是虚拟机?

借助虚拟化技术,我们可以在系统中,通过软件模拟计算机硬件,并给虚拟硬件安装真实的操作系统。

请添加图片描述

VMware WorkStation安装

了解vm-通过虚拟化技术,可以虚拟出计算机的硬件

  1. 下载vm

    网址:下载 VMware Workstation Pro | CN

    请添加图片描述

  2. 安装vm

    一直下一步安装

  3. 检查虚拟网卡

    打开网络设置->高级网络设置->网络适配器

    要确保有VMnet1和VMnet8两个虚拟网卡

    请添加图片描述

    没有这个虚拟机无法上网

    如果没有,重新安装

在VMware上安装Linux

  1. 下载CentOS

    网址:centos-7-isos-x86_64安装包下载_开源镜像站-阿里云 (aliyun.com)

    请添加图片描述

  2. 打开vm新建虚拟机

    典型->安装os镜像->配置账户名密码(我的密码:5477)->虚拟硬盘40GB

    请添加图片描述

    ctrl+alt从虚拟机回到本机

    输入密码进入

    请添加图片描述

Mac系统Linux环境

使用VMware Fusion在MacOS中安装Linux虚拟机

  1. 下载

    请添加图片描述

  2. 剩下一样的

远程连接Linux系统

  • 图形化和命令行两种操作模式

    • Linux的图形化不好用、不稳定
    • 命令行形式效率更高、更直观、资源占用率低且运行更稳定
  • 为什么使用命令行操作Linux系统

    请添加图片描述

  • 使用FinalShell软件连接Linux操作系统

    • 下载

      1. 网址:http://www.hostbuf.com/t/988.html

      2. 一直下一步安装

      3. 终端使用帮助

        终端使用帮助

        相关快捷键

        终端:
        alt 命令历史
        双击ctrl 切换到命令输入框

        命令输入框:
        alt 命令历史
        tab 补全
        双击ctrl 切换到终端

        列表窗口:
        backspace 上一级目录
        alt/tab/esc 关闭窗口
        上下箭头 选择行

      4. 安装好

        请添加图片描述

      5. 连接Linux系统

        • 虚拟机中打开终端

        • 输入 ifconfig 得到虚拟机的ip地址

          192.168.42.128

          ens33开头的inet

          请添加图片描述

        • finalshell连接

          请添加图片描述
          请添加图片描述

          请添加图片描述

        请添加图片描述

        双击进入

        请添加图片描述

        效果一致,可以正常使用

        请添加图片描述

拓展

什么是WSL?

请添加图片描述

win11开启WDSL

请添加图片描述
请添加图片描述

勾选此功能,并重启电脑
请添加图片描述

部署WSL

  • 打开应用商店
  • 搜索ubuntu,进行安装
  • 设置用户名密码
  • 搜索terminal,进行安装(win11自带,powershell)

虚拟机快照

请添加图片描述

制作快照

  • 先把虚拟机关机

    请添加图片描述
    请添加图片描述

  • 还原快照
    请添加图片描述

Linux基础命令-会用

Linux目录结构

请添加图片描述

Linux是撇,Windows是捺

请添加图片描述

练习

请添加图片描述

Linux命令入门

什么是命令、命令行?

命令行:Linux终端,是一种命令提示符页面。

命令:Linux程序。已给命令就是一个Linux的程序。

Linux命令的基础格式👇

command [-options] [parameter]
本体 [可选的选项] [可选的参数]

ls命令

作用:列出目录下的内容

语法👇

ls [-a -l -h] [Linux路径]
-a-l-h是可选的选项
Linux路径是此命令的可选的参数
直接使用ls命令本体表示,以平铺的形式,列出当前工作目录下的内容
—————————————选项 -a——————————————
ls -a 
-a表示列出全部文件(包含隐藏的文件/文件夹)
.开头的文件/文件夹表示是Linux系统的隐藏文件
———————————————选项 -l——————————————
ls -l
-l表示以竖表的形式展示内容,并展示更多信息
———————————————选项 -a-l——————————————
写法:
1. ls -l -a
2. ls -la
3. ls -al
———————————————选项 -a-l同时指定根目录——————————————
ls -la /
———————————————选项 -h以易于阅读的形式,列出文件大小——————————————
ls -lh
-h必须要和l一起使用

ls -a

请添加图片描述

ls -l

请添加图片描述

ls -l -a

请添加图片描述

ls -la

请添加图片描述

ls -al

请添加图片描述

ls -lh /

请添加图片描述

home目录和工作目录

Linux系统的命令行终端,在启动的时候,默认会加载

当前登录的用户的home目录作为当前工作目录

所以,ls命令列出的是home目录的内容

什么是home目录?

home目录是每个Linux操作用户在Linux系统的个人账户目录

路径在 /home/用户名

Windows系统和Linux系统均设有home目录

目录切换相关命令(cd/pwd)

cd切换工作目录命令

语法👇

cd [Linux路径]
cd命令无需选项,只有参数,表示要切换到哪个目录下
cd命令直接执行,不写参数,表示回到用户的home目录

pwd展示当前工作目录命令

通过ls验证当前的工作目录,是不恰当的

通过pwd命令,来查看当前所在的工作目录

语法👇

pwd
pwd命令没有选项没有参数

相对路径、绝对路径和特殊路径符

特殊路径符

. 表示当前目录
.. 表示上一级目录
~ 表示home目录

创建目录命令(mkdir)

通过mkdir命令可以创建新的目录(文件夹)

语法👇

mkdir [-p] Linux路径
参数必填,表示Linux路径,就是要创建的文件夹的路径,相对路径或绝对路径都可
-p选项可选,表示自动创建不存在的父目录,适用于创建连续多层级的目录
mkdir -p ff/aa/ss/bb
清空屏幕 clear
创建文件夹需要修改权限,请确保操作都在home目录内
~表示home目录内

文件操作命令(touch、cat、more)

touch命令创建文件

语法👇

touch Linux路径
例如 touch test.txt

d开头的是文件

-开头的是文件夹

cat命令查看文件内容

语法👇

cat Linux路径
cat test.txt

more命令查看文件内容

more命令和cat命令的区别:

  • cat是直接将内容全部显示出来
  • more支持翻页(空格翻页,q退出查看),如果文件内容过多,可以一页页的展示

语法👇

more Linux路径
more test.txt

文件操作命令(cp、mv、rm)

cp命令复制文件文件夹

语法👇

cp [-r] 参数1 参数2
-r选项,可选,用于复制文件夹使用,表示递归
参数1,Linux路径,表示被复制的文件夹或文件
参数2,Linux路径,表示要复制去的地方
cp test.txt ./test2.txt

mv移动文件或文件夹

语法👇

mv 参数1 参数2
参数1,Linux路径,表示被移动的文件或文件夹
参数2,Linux路径,表示要移动去的地方,如果目标不存在,则进行改名,确保目标存在

rm删除文件或文件夹

语法👇

rm [-r -f] 参数1 参数2 ......参数N
-r选项用于删除文件夹
-f表示force,强制删除(不会跳出提示确认信息)
	普通用户删除内容不会弹出提示,只有root管六安用户删除内容才会有提示
	所以一般普通用户用不到-f选项
	通过su -root并输入密码,临时切换到root用户
	通过exit命令,退回到普通用户
参数1、参数2、......、参数N表示要删除的文件或文件夹路径,按照空格隔开

rm命令支持通配符*,用来做模糊匹配
test*表示匹配任何以test开头的内容
*test表示匹配任何以test结尾的内容
*test*表示匹配任何包含test的内容

查找命令(which、find)

which命令查看所使用的一系列的程序文件存在哪里

语法👇

which 要查找的命令
which cd

find命令按文件名查找文件

语法👇

find 起始路径 -name "被查找文件名"
find命令也可以使用通配符*
find / -name "test*"

find命令按文件大小查找文件

语法👇

find 起始路径 -size +|- n[kMG]
+、-表示大于和小于
n表示大小数字
kMG表示大小单位,k表示kb,M表示MB,G表示GB
查找小于10kb的文件 find / -size -10k

grep、wc和管道符

grep命令过滤文件内容

从文件中通过关键字过滤文件行

语法👇

grep [-n] 关键字 文件路径
-n表示在结果中显示匹配的行的行号
关键字,表示过滤的关键字,带有空格或其他特殊符号,建议使用“”将关键字包围起来
文件路径,表示要过滤内容的文件路径,可作为内容输入端口

wc命令统计内容数量

通过wc命令统计文件的行数、单词数量等

语法👇

wc [-c -m -l -w] 文件路径
-c,统计bytes数量
-m,统计字符数量
-l,统计行数
-w,统计单词数量

管道符的概念和应用

管道符是 |

将左边命令的结果当作右边的输入内容

cat test.txt | grep "fei fie"
=
grep "fei fie" test.txt

管道符的嵌套使用
cat ts.txt | grep "haha" | grep "xixi"
cat ts.txt作为内容输入到 grep "haha"
cat ts.txt | grep "haha"作为内容输入到 grep "xixi"

echo、tail和重定向符

echo命令输出内容

语法👇

echo 输出的内容
复杂内容可以用“”包围,空格或?等特殊字符

反引号`的使用

被``包围的内容会被当作命令执行

echo `pwd`  这就会被当成pwd命令执行

tail命令跟踪文件更改

可以查看文件尾部内容,跟踪文件的最新更改

语法👇

tail [-f -num] Linux路径
-f表示持续跟踪 ctrl+c强制停止
-num表示查看尾部多少行,不填写默认10行

重定向符号的使用

重定向符号:>和>>

>,将左侧命令的结果,覆盖写入到符号右侧指定的文件中
>>,将左侧命令的结果,追加写入到符号右侧指定的文件中
echo "hello junjun" > test.txt
echo ", nice to meet you!" >> test.txt

vi编辑器

使用vi\vim编辑器完成文件编辑工作

vim是vi的加强版本,兼容vi的所有指令,不仅能编辑文本,而且还具有shell程序编辑的功能,可以不同颜色的字体来辨别语法的正确性,极大方便了程序的设计和编辑性。

请添加图片描述

请添加图片描述

请添加图片描述

请添加图片描述

通过vi/vim编辑文件
vi 文件路径
vim 文件路径
如果文件不存在,该命令会用于编辑新文件

在命令模式按i,进入输入模式
按esc从输入模式回到命令模式
按:从命令模式到底线命令模式
w保存,q退出,q!强制退出

Linux权限管控-懂权限

了解root用户

root用户比普通用户权限大

用户切换的命令

su [-] [用户名]
-表示是否在切换用户后加载环境遍历,建议带上
用户名省略代表切换到root
切换到用户后,可以用exit命令退回到上一个用户,也可以使用快捷键ctrl+d

普通用户切换到其他用户,需要输入密码
root用户切换到其他用户,无需密码

sudo命令

不建议长期使用root用户,使用sudo命令,为普通的命令授权,临时以root身份执行

语法👇

sudo 其他命令
并不是所有用户都有权力使用sudo,需要为普通用户配置sudo认证

sudo认证
切换到root用户,执行visudo命令,会自动通过编辑器打开L:/ect/sudoers
在文件最后添加:
用户名 ALL=(ALL) NOPASSWD:ALL
NOPASSWD:ALL表示使用sudo命令,无需输入密码
wq保存并退出

切换回普通用户,执行命令均以root运行
sudo ls/root
sudo mkdir/test.txt

用户和用户组

用户组管理(需要root用户执行)

创建用户组
groupadd 用户组名


删除用户组
groupdel 用户组名

用户管理

创建用户
useradd [-g -d] 用户名
-g表示指定用户的组,不指定-g,会创建同名组并自动加入,指定-g需要组已经存在,如已经存在同名组,必须使用-g
-d表示指定用户home路径,不指定,home目录默认在/home/用户名

删除用户
userdel [-r] 用户名
-r表示删除用户的home目录,不使用-r删除用户时,home目录保留

查看用户
id[用户名]
用户名,被查看的用户,如果不提供则查看自身

修改用户所属组
usermod -aG 用户组 用户名

getent命令查看当前系统中全部用户信息
getent passwd

getent group查看系统全部组信息

请添加图片描述

r可读,w可写,x可执行

请添加图片描述

chmod修改权限信息

使用chmod命令,修改文件、文件夹的权限信息

语法👇

chmod [-R] 权限 文件或文件夹
-R对文件夹内的全部内容应用同样的操作

chomod u=rwx,g=rx,o=x hello.txt 将文件权限修改为:rwxr-x-x
u表示user所属用户权限,g表示group组权限,o表示other其他用户权限

使用数字序号标记权限

请添加图片描述

chown命令修改所属用户、用户组

只有root用户可以使用chown命令

语法👇

chown [-R] [用户] [:] [用户组] 文件或文件夹
-R对文件夹内全部内容应用相应规则
用户,修改所属用户
用户组,修改所属用户组
:用于分隔用户和用户组

chown root hello.txt 将hello.txt所属用户修改为root
chown :root hello.txt 将hello.txt所属用户组修改为root
chown -R root test 将文件夹test的所属用户修改为root并对文件夹内全部内容应用相同规则

Linux实用操作-熟练

yum为CentOS系统安装软件

yum:RPM包软件管理器,用于自动化安装配置Linux软件,并可以自动解决依赖问题

语法👇

yum [-y] [install | remove | search] 软件名
-y,自动确认,无需手动确认安装或卸载过程
install,安装
remove,卸载
search,搜索

yum命令需要root权限,需要联网

yum [-y] install wget 通过yum命令安装wget程序
yum [-y] remove wget 通过yum命令卸载wget命令
yum search wget 通过yum命令搜索是否有wget安装包

扩展:apt为Ubuntu安装软件

请添加图片描述

systemctl命令

使用systemctl命令控制内置的或第三方软件的启动、停止、开机自启

语法👇

systemctl start | stop | status | enable | disable 服务名
enable开启开机自启
disable关闭开机自启

软连接

将文件、文件夹链接到其他位置

语法👇

ln -s 参数1 参数2
-s选项,创建软连接
参数1,被链接的文件或文件夹
参数2,要连接去的目的地

date命令

通过date命令在命令行中查看系统的时间

语法👇

date [-d] [+格式化字符串]
-d按照给定的字符串显示日期,一般用于日期计算
格式化字符串:通过特定的字符串标记,来控制显示的日期格式

date "+%Y-%m-%d %H:%M:%S" 加上双引号避免格式化字符串出现空格报错
date -d "+1 day" 显示明天的日期
date -d "-2 year"

修改Linux时区

请添加图片描述

ntp程序联网自动校准系统时间

安装:yum -y install ntp
启动并设置开机自启:
systemctl start ntpd
systemctl enable ntpd
启动后会定期自动校准时间
手动校准(需要root权限):ntpdate -u ntp.aliyun.com

IP地址、主机名

什么是IP地址

ifconfig查看IP地址

什么是主机名

hostname查看主机名

hostname set-hostname 新主机名

什么是域名解析

可以通过主机名找到对应计算机的ip地址,这就是主机名映射(域名解析)

配置主机名映射
  1. 管理员身份打开记事本
  2. 打开c盘-Windows-system32-drivers-etc
  3. 选择所有文件,打开hosts
    请添加图片描述

配置Linux固定IP地址

为什么需要固定IP?

当前虚拟机的Linux操作系统,其IP地址是通过DHCP服务获取的

DHCP动态获取IP地址,即每次重启设备后都会获取一次,可能导致IP地址频繁变更

配置固定IP的步骤:

  1. 在VM中配置IP地址网关和网段(IP地址的范围)
  2. 在Linux系统中手动修改配置文件,固定IP

网络请求和下载

通过ping命令检查指定的网络服务器是否是可联通状态

语法👇

ping [-c num] ip或主机名
-c,检查的次数,不适用-c会无限次持续检查
ping -c 3 baidu.com 检查3次百度是否能联通

wget命令是非交互式的 文件下载器,可以在命令行内下载网络文件

语法👇

wget [-b] url
-b,后台下载,会将日志写到当前工作目录的wget-log文件
url,下载链接

curl命令可以发送http请求,可用于下载文件、获取信息等

语法👇

curl [-O] url
-O,用于下载文件,当url是下载链接时,可以使用此选项保存文件
url,要发起请求的网络地址

curl cip.cc 获取主机ip

端口

物理端口和虚拟端口

通过nmap命令,安装nmap:yum -y install nmap
需要先切换到root用户 su root

查看端口
nmap 被查看的ip地址

通过netstat查看指定端口的占用情况
安装netstat:yum -y install nett-tools
语法:netstat -anp | grep 端口号

请添加图片描述

ps [-e -f]
通过ps命令查看Linux系统中的进程信息
-e表示显示出全部的进程
-f表示以完全格式化的形式展示信息
ps -ef列出全部进程的全部信息

UID 表示进程所属的用户ID
PID 表示进程的进程号ID
PPID 表示进程的父ID(启动此进程的其他进程)
C 表示进程的CPU占用率
STIME 表示进程的启动时间
TTY 表示此进程的终端序号,如显示?表示非终端启动

kill [-9] 进程ID
结束进程,-9表示强制关闭进程

主机状态

通过top命令查看CPU、内存使用情况,类似Windows的任务管理器

默认每五秒刷新一次,语法:top

按q或CTRL+C退出

请添加图片描述

文件的上传和下载

先安装zr和sz

yum -y install lrzsz

上传文件

rz

请添加图片描述

下载文件

sz 下载的文件

请添加图片描述

压缩格式

Linux用的有zip、tar、gzip,后两种比较常用

请添加图片描述

Windows用的格式有zip、7zip以及rar

MacOS用的格式是zip

  # 使用tar命令均可以进行解压和压缩的操作
  tar [-c -v -x -f -z -C] 参数1 参数2...参数N
  -c表示创建压缩文件,用于压缩模式
  -v表示显示压缩、解压过程,用于查看进度
  -x表示解压模式
  -f表示要创建的文件,或要解压的文件,-f选项必须在所有选项中位置处于最后一个
  -z表示gzip模式,不使用-z就表示是普通tarball格式
  -C表示选择解压的目的地,用于解压模式
  
  # 常见的两种压缩模式(-z可以减少大小)
  1. tar -cvf 压缩包名.tar 要压缩的文件1 要压缩的文件2 要压缩的文件3
  2. tar -zcvf 压缩包名.tar.gz  要压缩的文件1 要压缩的文件2 要压缩的文件3
  
  # 常用的三种解压模式
  1. tar -xvf 压缩包名.tar
  2. tar -xvf 压缩包名.tar -C 目标路径
  3. tar -zxvf 压缩包名.tar.gz -C 目标路径
  
  # zip命令压缩文件
  zip [-r] 参数1 参数2 ... 参数N
  -r,被压缩的包含文件夹的时候,需要使用-r,和rm、cp等命令的-r效果一致
  zip -r 压缩包名.zip 文件夹名 文件名
  zip 压缩包名.zip 文件名 文件名
  
  # unzip命令解压文件
  unzip [-d] 参数
  -d表示指定要解压去的位置

实战软件部署-深入掌握

安装MySQL5.7

# 配置yum仓库(先进入root用户)
# 更新密钥
rpm --import https://repo.mysql.com/RPM-GPG-KEY-mysql-2022
# 安装MySQL yum库
rpm -Uvh http://repo.mysql.com//mysql57-community-release-el7-7.noarch.rpm
# 安装MySQL社区版服务
yum -y install mysql-community-server
# 启动MySQL
systemctl start mysqld
# 设置MySQL为开机自启动
systemctl enable mysqld
# 检查MySQL的运行状态
systemctl status mysqld
# 配置MySQL
# 获取MySQL初始密码 NY5k-GfgfiMg
grep 'temporary password' /var/log/mysqld.log
# 登录MySQL
mysql -uroot -p
# 更改MySQL密码,密码大于8位且要包含特殊字符和大写字母
alter user 'root'@'localhost' identified by '5477@JJdmm';

安装MySQL8.0

# 安装MySQL yum库
rpm -Uvh http://repo.mysql.com//mysql57-community-release-el7-7.noarch.rpm# 配置yum仓库(先进入root用户)
# 更新密钥
rpm --import https://repo.mysql.com/RPM-GPG-KEY-mysql-2022
# 安装MySQL yum库
rpm -Uvh http://repo.mysql.com/get/mysql80-community-release-el7-2.noarch.rpm
# 安装MySQL社区版服务
yum -y install mysql-community-server
# 启动MySQL
systemctl start mysqld
# 设置MySQL为开机自启动
systemctl enable mysqld
# 检查MySQL的运行状态
systemctl status mysqld
# 配置MySQL
# 获取MySQL初始密码 NY5k-GfgfiMg
grep 'temporary password' /var/log/mysqld.log
# 登录MySQL
mysql -uroot -p
# 更改MySQL密码,密码大于8位且要包含特殊字符和大写字母
alter user 'root'@'localhost' identified by '5477@JJdmm';

输入exit 或按ctrl+d退出MySQL命令行

java部署安装

# 安装jdk
到官网下载Linux版本的jdk,.gz后缀的
放入root文件夹下
创建export/server文件夹存放安装包
mkdir -p export/server
# 解压并安装tomcat
 tar -zxvf jdk-8u381-linux-x64.tar.gz -C /export/server
# 创建软连接(保留文件夹名可以确保jdk的版本)
ln -s /export/server/jdk1.8.0_381/ /export/server/jdk
# 进入/export/server/jdk/bin查看Java版本
./java -version
# 构建全局变量
vim /etc/profile
# 最下方写
export JAVA_HOME=/export/server/jdk
export PATH=$PATH:$JAVA_HOME/bin
# 退出后生效配置
source /etc/profile
# 查看Java的执行路径
echo $PATH
# 返回~查看Java版本
java -version
# 查找执行的Java是哪里安装的
which java
# 删除多余Java
rm -f /usr/bin/java  (这里以前安装过一个jdk11)
# 软连接将新安装的Java放入
ln -s /export/server/jdk/bin/java /usr/bin/java

Nginx安装部署

Nginx是一个高性能的http和反向代理web服务器,同时也提供了MAP/P0P3/SMTP服务。

同Tomcat一样,NGINX可以托管用户编写的web应用程序成为可访问的网页服务,同时也可以作为流量代理服务器,控制流量的中转。

下载模块依赖性 Nginx 需要依赖下面3个包

gzip 模块需要 zlib 库 ( 下载: http://www.zlib.net/ )
rewrite 模块需要 pcre 库 ( 下载: http://www.pcre.org/ )
ssl 功能需要 openssl 库 ( 下载: http://www.openssl.org/ )

# 一键安装四个依赖
yum -y install gcc zlib zlib-devel pcre-devel openssl openssl-devel
# 下载并解压压缩包
wget http://nginx.org/download/nginx-1.13.7.tar.gz
tar -xvf nginx-1.13.7.tar.gz
# 安装nginx
# 进入安装包目录
cd nginx-1.13.7
# 编译,执行配置: 考虑到后续安装ssl证书 添加两个模块
./configure --with-http_stub_status_module --with-http_ssl_module
# 安装
make && make install
# 在/usr/local/nginx/sbin目录下启动
# 启动
# 启动
./nginx
# 重启
./nginx -s reload
# 关闭
./nginx -s stop
# 或者,指定配置文件启动
./nginx -c /usr/local/nginx/conf/nginx.conf
# 查看进程:
ps -ef | grep nginx

持续更新中。。。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值