Linux从入门到进阶
初始Linux-入门
操作系统概述
初识Linux
Linux内核
Linux发行版
虚拟机介绍
什么是虚拟机?
借助虚拟化技术,我们可以在系统中,通过软件模拟计算机硬件,并给虚拟硬件安装真实的操作系统。
VMware WorkStation安装
了解vm-通过虚拟化技术,可以虚拟出计算机的硬件
-
下载vm
网址:下载 VMware Workstation Pro | CN
-
安装vm
一直下一步安装
-
检查虚拟网卡
打开网络设置->高级网络设置->网络适配器
要确保有VMnet1和VMnet8两个虚拟网卡
没有这个虚拟机无法上网
如果没有,重新安装
在VMware上安装Linux
-
下载CentOS
网址:centos-7-isos-x86_64安装包下载_开源镜像站-阿里云 (aliyun.com)
-
打开vm新建虚拟机
典型->安装os镜像->配置账户名密码(我的密码:5477)->虚拟硬盘40GB
ctrl+alt从虚拟机回到本机
输入密码进入
Mac系统Linux环境
使用VMware Fusion在MacOS中安装Linux虚拟机
-
下载
-
剩下一样的
远程连接Linux系统
-
图形化和命令行两种操作模式
- Linux的图形化不好用、不稳定
- 命令行形式效率更高、更直观、资源占用率低且运行更稳定
-
为什么使用命令行操作Linux系统
-
使用FinalShell软件连接Linux操作系统
-
下载
-
网址:http://www.hostbuf.com/t/988.html
-
一直下一步安装
-
终端使用帮助
终端使用帮助
相关快捷键
终端:
alt 命令历史
双击ctrl 切换到命令输入框命令输入框:
alt 命令历史
tab 补全
双击ctrl 切换到终端列表窗口:
backspace 上一级目录
alt/tab/esc 关闭窗口
上下箭头 选择行 -
安装好
-
连接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地址,这就是主机名映射(域名解析)
配置主机名映射
- 管理员身份打开记事本
- 打开c盘-Windows-system32-drivers-etc
- 选择所有文件,打开hosts
配置Linux固定IP地址
为什么需要固定IP?
当前虚拟机的Linux操作系统,其IP地址是通过DHCP服务获取的
DHCP动态获取IP地址,即每次重启设备后都会获取一次,可能导致IP地址频繁变更
配置固定IP的步骤:
- 在VM中配置IP地址网关和网段(IP地址的范围)
- 在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
持续更新中。。。