1.Linux目录结构
Linux的目录结构是一个树形结构,只有一个根目录/。
删库跑路大法:rm -rf /
2.Linux命令入门
1. 命令行:即Linux终端,是一种命令提示符页面。
2. 命令:即Linux程序。命令没有图形化页面,可以在命令行提供字符化的反馈
3. Linux命令基础格式:
- 语法:
command [-options] [parameter]command:命令本身-options:[可选]命令的一些选项,可以通过选项控制命令的行为细节parameter:[可选]命令的参数,多数用于命令的指向目标等
- 示例:
ls -l /home/itheima,意思是以列表的形式,显示/home/itheima目录内的内容
4.ls命令
- 语法细节:
ls [-a -l -h] [Linux路径],其中-h表示易于阅读的形式,列出文件大小(带单位K,M,G),并且必须配合-l一起使用 - 当直接使用ls命令本身,表示:以平铺形式,列出当前工作目录下的内容
5.pwd命令:Print Work Directory,打印当前工作目录
6.mkdir命令:Make Directory,创建目录
- 语法:
mkdir [-p] Linux路径- 参数必选,表示Linux路径
- -p选项可选,表示自动创建不存在的父目录,适用于创建连续多层级的目录
7.文件操作命令
- touch命令:创建文件
- cat命令:直接显示全部文件内容
- more命令:支持翻页的查看文件内容,按空格翻页,按q退出
- vim命令:编辑文件内容
- 使用:
vim test.txt,编辑一个新文件,执行后进入命令模式 - 在命令模式内,按键盘i,进入输入模式
- 输入完成后,按esc回退到命令模式
- 在命令模式下,按键盘:,进入底线命令模式
- 在底线命令模式下输入wq,保存文件并退出vi编辑器
- cp命令:复制文件、文件夹
- 语法
cp [-r] 参数1 参数2- -r选项,可选,用于复制文件夹使用,表示递归
- 参数1,表示Linux路径,表示被复制的文件或文件夹
- 参数2,表示Linux路径,表示要复制去的地方
- mv命令:移动文件、文件夹
- rm命令:删除文件、文件夹
- 语法
rm [-r -f] 参数1 参数2 ... 参数N- 同cp命令一样,-r用于删除文件夹
- -f表示force,强制删除
- 参数1、参数2、...、参数N表示要删除的文件或文件夹路径,按空格隔开
- rm命令支持通配符*,用于模糊匹配,其中
test*,表示匹配任何以test开头的内容;*test*,表示任何包含test的内容;*test,表示任何以test结尾的内容。
- which命令:查看所使用的命令的程序文件的存放路径
- find命令:搜索指定的文件
- 语法1:
find 起始路径 -name "被查找文件名",表示按文件名查找 - 语法2
find 起始路径 -size +|-n[kMG],表示按文件大小查找 - find命令支持通配符*,用于模糊匹配。
- grep命令:从文件中通过关键字过滤文件行
- 语法
grep [-n] 关键字 文件路径- 选项-n,可选,表示结果中显示匹配的行的行号
- 参数,关键字,必填,表示过滤的关键字,带有空格或其他特殊符号,建议使用" "将关键字包围起来
- 参数,文件路径,必填,表示要过滤的文件路径,可作为内容输入端口
- wc命令:统计文件的行数、单词数量等
- 语法
wc [-c -m -l -w] 文件路径- -c,统计bytes数量
- -m,统计字符数量
- -l,统计行数
- -w,统计单词数量
- 文件路径,被统计的文件,可作为内容输入端口
- 管道符"|":将管道符左边命令的结果,作为右边命令的输入
- 示例:
cat test.txt | grep "张文祥 | wc -m"
- echo命令:输出指定内容
- 输出某个命令的执行结果,而不是把命令当作字符串输出,用反引号括住
- 重定向符>,将左侧命令的结果,覆盖写入到符号右侧指定的文件中,
each "张文祥" > test.txt - 重定向符>>,将左侧命令的结果,追加写入符号右侧指定的文件中,
each "张文祥" >> test.txt
- tail命令:查看文件尾部内容,跟踪文件的最新更改
- 语法:
tail [-f -num] Linux路径- 选项,-f,表示持续跟踪,通过ctrl+c停止跟踪
- 选项,-num,表示查看尾部多少行,不填默认10行
- Linux路径:表示被跟踪的文件路径
3.用户权限控制
1.用户组管理
- 创建用户组:
groupadd 用户组名 - 删除用户组:
groupdel 用户组名
2.用户管理
- 创建用户:
useradd [-g -d] 用户名
- -g指定用户的组,不指定-g,会创建同名组并自动加入,指定-g需要组已经存在。如已存在同名组,必须使用-g
- -d指定用户HOME路径,不指定,HOME目录默认在:/home/用户名
- 删除用户:
userdel [-r] 用户名
- -r,删除用户的HOME目录,不使用-r,删除用户对,HOME目录保留
- 查看用户所在组:
id [用户名] - 修改用户所属组:
usermod -aG 用户组 用户名 - 查看当前系统中有哪些用户:
getent passwd - 查看当前系统中有哪些用户组:
getent group
3.查看权限信息
- r表示读权限
- w表示写权限
- x表示执行权限
4.修改权限控制
- chmod命令:修改文件、文件夹的权限信息
- 语法:
chmod [-R] 权限 文件或文件夹- -R,表示对文件夹内的全部内容应用同样的操作
- 示例:
chmod -R u=rwx,g=rx,o=x test
- chown命令:修改文件、文件夹的所属用户和用户组
- 语法:
chown [-R] [用户] [:] [用户组] 文件或文件夹- -R,表示对文件夹内的全部内容应用同样的操作
- 用户,修改所属用户
- :,用于分割用户和用户组
- 用户组,修改所属用户组
- 示例:
chown :root test.txt,将test.txt所属用户组修改为root
4.Linux使用操作的相关技巧
1.各类快捷键
- ctrl+c:强制停止
- ctrl+d:退出或登出
- history:查看历史输入过的命令
- ctrl+a,跳到命令开头
- ctrl+e,跳到命令结尾
- ctrl+键盘左键,向左跳一个单词
- ctrl+键盘右键,向右跳一个单词
- ctrl+l或者clear,可以清空终端内容
2.软件安装
- yum命令:RPM包软件管理器,用于自动化安装配置Linux软件,并可以自动解决依赖问题
- 语法:
yum [-y] [install | remove | search] 软件名称- -y,表示自动确认,无需手动确认安装或卸载过程
3.systemctl控制软件启动关闭
- systemctl命令:控制软件的启动、停止、开机自启
- 语法:
systemctl start | stop | status | enable | disable 服务名- status,表示查看状态
- enable,表示开启开机自启动
- disable,表示关闭开机自启动
- 系统内置的服务
- NetworkManager,主网络服务
- network,副网络服务
- firewalld,防火墙服务
- sshd,ssh服务
4.软链接(=>)
- ln命令:在系统中创建软链接,可以将文件、文件夹链接到其他位置,类似Windows系统中的快捷方式
- 语法:
ln -s 参数1 参数2- -s,创建软链接
- 参数1,被链接的文件或文件夹
- 参数2,要链接去的目的地
5.日期
- date命令:查看系统的时间
- 语法
date [-d] [+格式化字符串]- -d,按照给定的字符串显示日期,一般用于日期计算
- 格式化字符串,通过特定的字符串标记,来控制显示的日期格式
- 示例1:
date "+%Y-%m-%d %H:%M:%S" - 示例2:
date -d "+1 day" +%Y-%m-%d
- ntp程序:自动校准系统时间
6.IP地址和主机名
- ifconfig命令:查看本机的ip地址
- 特殊ip地址
- 127.0.0.1,指代本机
- 0.0.0.0,可以用于指代本机,可以在端口绑定中用来确定绑定关系,可以在一些IP地址限制中,表示所有IP的意思。
- hostnamectl命令:修改主机名
- 语法
hostnamectl set-hostname centos
7.网络请求和下载
- ping命令:检查指定的网络服务器是否联通
- 语法:
ping [-c num] ip或主机名- -c,检查的次数,不使用-c选项,将无限次数持续检查
- wget命令:非交互式的文件下载器,可以在命令行内下载网络文件
- 语法:
wget [-b] url- -b,后台下载,会将日志写入到当前工作目录的wget-log文件
- curl命令:发送http网络请求,可用于下载文件、获取信息等
- 语法:
curl [-O] url- -O,用于下载文件,当url是下载链接时,可以通过此选项保存文件
- url,发起请求的网络地址
8.端口
- 虚拟端口:计算机内部的端口,是不可见的,是用来操作系统和外部进行交互使用的
- 计算机程序之间的通信,通过IP只能锁定计算机,但是无法锁定具体的程序
- 通过端口可以锁定计算机上具体的程序,确保程序之间进行沟通
- 公认端口:1~1023,通常用于一些系统内置或知名程序的预留使用,如SSH服务的22端口
- 注册端口:1024~49151,通常可以随意使用,用于松散的绑定一些程序、服务
- 动态端口:49152~65535,通常不会固定绑定程序,而是当程序对外进行网络连接时,用于临时使用
- 查看指定IP的对外暴露端口:
nmap 127.0.0.1 - 查看指定端口的占用情况:
netstat -anp | grep 端口号
9.进程管理
- 为管理运行的程序,每一个程序在运行的时候,便被操作系统注册为系统中的一个进程,并会为每个进程都分配一个独有的进程ID
- ps命令:查看Linux系统中的进程信息
- 语法:
ps [-e -f]- -e,显示出全部的进程
- -f,以完全格式化的形式展示信息
- kill命令:关闭进程
- 语法:
kill [-9] 进程ID- -9,表示强制关闭进程。不使用此选项会向进程发送信号要求其关闭,但是是否关闭看进程自身的处理机制
10.主机状态监控
- top命令:查看CPU、内存使用情况,类似Windows的任务管理器,默认每5秒刷新一次
- df命令:查看磁盘的使用情况
- 语法:
df [-h]- -h,以更加人性化的单位显示
- iostat命令:查看CPU、磁盘的相关信息
- 语法:
iostat [-x] [num1] [num2]- -x,显示更多信息
- num1,刷新间隔
- num2,刷新次数
- sar命令:查看网络的相关统计
- 语法:
sar -n DEV num1 num2- -n,查看网络
- DEV,表示查看网络接口
- num1,刷新间隔
- num2,刷新次数
11.环境变量
- 定义:环境变量是操作系统在运行的时候,记录的一些关键性信息,用以辅助系统运行
- env命令:查看当前系统中记录的环境变量
$:取变量的值,取得环境变量的值可以通过:$ 环境变量名- export命令:自行设置环境变量
- 临时设置:语法
export 变量名=变量值 - 永久生效
- 针对当前用户生效,配置在当前用户的:~/bashrc文件中
- 针对所有用户生效,配置在系统的:/etc/profile文件中,并通过语法:
source 配置文件,进行立刻生效,或重新登录
- 自定义环境变量PATH:将自己定义程序的路径添加到PATH中
- 在当前HOME目录内创建文件夹myenv,在文件夹内创建文件mkhaha
- 通过vim编辑器,在mkhaha文件内填入:echo 哈哈哈哈哈
- 临时修改PATH:export PATH=$PATH:/home/zwx/myenv
- 永久修改PATH:将export PATH=$PATH:/home/zwx/myenv填入用户环境变量文件或系统环境变量文件中
- 执行mkhaha
12.Linux文件的上传和下载
- rz命令:上传文件
- sz命令:下载文件
- 语法:
sz 下载的文件名
13.压缩和解压
- Linux系统的常用压缩格式:tar、gzip、zip三种压缩格式
- tar命令:对.tar和.gz两种格式的文件进行解压缩
- 语法:
tar [-c -v -x -f -z -C] 参数1 参数2 ... 参数N- -c,创建压缩文件,用于压缩模式
- -v,显示压缩、解压过程,用于查看进度
- -x,解压模式
- -f,要创建的文件,或要解压的文件,-f选项必须在所有选项中位置处于最后一个
- -z,gzip模式,不使用-z就是普通的tarball格式
- -C,选择解压的目的地,用于解压模式
- 示例:
tar -cvf test.tar 1.txt 2.txt 3.txt
- zip命令:压缩文件为zip压缩包
- 语法:
zip [-r] 参数1 参数2 ... 参数N- -r,被压缩的包含文件夹的时候,需要使用-r选项,表示递归
- 示例:
zip test.zip 1.txt 2.txt 3.txt
- unzip命令:解压zip压缩包
- 语法:
unzip [-d] 参数- -d,指定要解压去的位置
- 参数,被解压的zip压缩包文件
- 示例:
unzip -d /home/zwx test.zip
5.在Linux上部署各类软件
1.在CentOS安装MySQL8.0
- 配置yum仓库
- 更新密钥:
rpm --import https://repo.mysql.com/RPM-GPG-KEY-mysql-2022 - 安装Mysql8.0版本的yum库:
rpm -Uvh https://dev.mysql.com/get/mysql80-community-release-el7-2.noarch.rpm
- 使用yum安装MySQL
yum -y install mysql-community-server
- 启动MySQL并配置开机自启动
systemctl start mysqldsystemctl enable mysqld
- 检查MySQL的运行状态
systemctl status mysqld
- 获取MySQL的初始密码
grep 'temporary password' /var/log/mysqld.log
- 登录MySQL数据库系统
mysql -uroot -p
- 修改root密码
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '密码';密码要求:大于8位,有大写字母,有特殊字符
- 配置root的简单密码
set global validate_password.policy=0;set global validate_password.length=4;
- 允许root远程登录
create user 'root'@'%' IDENTIFIED WITH mysql_native_password BY '密码';(第一次设置密码)ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY '密码';(后续修改密码)
- 退出MySQL控制台页面
- exit或者ctrl+d
- 检查端口
- netstat -anp | grep 3306