
Linux目录结构
/
是所有目录的顶点,称为根目录。不同的目录下的数据可分布在不同的磁盘,所有目录按规则组织与命名。
Linux也分==绝对路径==与==相对路径==
系统目录
绝对路径 | 用途 |
---|---|
/ | 跟目录 |
/bin | ==常用的二进制命令所在目录,如:ls、cp、mkdir== |
/boot | Linux内核与系统引导程序目录 |
/dev | 设备文件的目录,如:声卡、磁盘、光驱 |
/etc | ==yum、rpm方式安装应用程序的默认配置文件路径== |
/home | 用于存放用户数据,用户的“家”目录 |
/var | 系统与软件服务运行日志目录 |
/lib | 启动系统与运行命令所需的共享库文件与内核模块目录 |
/proc | 系统运行时,进程信息与内核信息存放在此目录 |
/root | Linux超级用户目录,类似于windows的administrator |
/sbin | 系统管理命令存放目录,是超级用户root可执行命令的存放地 |
/usr | ==存放用户应用程序的目录,包含两个重要子目录== |
/usr/local | ==编译方式安装程序的默认目录== |
/usr/src | ==编译方式安装程序的默认目录== |
Linux命令
命令 | 用途 |
---|---|
cd | 切换目录 |
pwd | 查看当前目录 |
ls、ll | 显示目录内容 |
mkdir | 创建目录 |
cp | 赋值文件与目录 |
mv | 移动或重命名文件 |
rm | 删除文件或目录(需确认是否删除) |
rm -f | 强制删除文件 |
rm -rf | 强制删除整个目录(慎用!) |
find | 查找目录或文件 |
- 小技巧,cd 后面不用写全名称,只输入前面几个字母,按Tab就能补全。如果前缀相同的话连续按两次Tab就能列出所有符合要求的同前缀项
- 在命令后面加 --help 就能看到这个命令所能使用到的所有参数
- 加 -v 可以看执行过程v可以和其他命令连写,比如 -pv
VIM文本编辑器
vi是Linux重要的文字编辑工作,Vim是它的增强版,vim用于在远程环境下用命令的形式对文本进行在先编辑。用法格式:vim [选项] [文件]
vim三种模式
- 普通模式: 默认模式,文本只读,不可编辑。
- 编辑模式:编辑文本模式,普通模式按i键进入,ESC键退出
- 命令模式:执行保存、搜索、退出等操作
vim快捷键
命令 | 用途 |
---|---|
delete或x | 删除单个字符 |
dd | 删除整行 |
/str | 全文查找str字符串,n下一个,N前一个 |
:% s/old/new/g | 替换文件内所有old字符串为new |
u | 撤销最近一次操作 |
:wq或:wq! | 退出并保存,只读文件要额外加! |
:q! | 强制退出放弃保存 |
Linux文本工具
命令 | 用途 |
---|---|
echo | 屏幕打印与文本输出 |
cat | 合并文件或查看文件内容 |
tail | 显示文件内容尾部 |
grep | 文本过滤工具 |
echo "Hello" #在屏幕上输出Hello
echo "Hello" > hello.txt #将Hello存储到hello.txt文件内
echo "Hello" >> hello.txt #追加内容到hello.txt
echo > hello.txt << ESC #在hello.txt内存储内容以ESC为结尾,其中ESC可以为任意字符
cat hello.txt #显示文本内所有内容
cat -n hello.txt #显示文本并加上序号
cat -nE hello.txt #显示文本前边加序号并且末尾空格转换为$
cat -n hello.txt #显示文本并加上序号
tail hello.txt #显示末尾内容(默认3行)
tail -n 2 hello.txt #显示末尾内容并加上序号
grep nb hello.txt #显示包括nb的文本行
grep -v nb hello.txt #显示不包括nb的文本行
grep d...nb hello.txt #可以用正则表达式的方式过滤内容
#通道
ll | grep hello.txt
ll | grep -E hello[1-9].txt #正则表达式方式过滤内容
打包与压缩
gzip
是Linux中的文件压缩程序
gzip
压缩文件扩展名:.gz
大流量网站默认都在使用
gzip
进行数据压缩传输
tar打包与压缩
tar
是Linux系统将多个文件打包和压缩的工具tar
本质是打包软件,扩展名.tar
tar
可结合gzip
或其他压缩工具实现打包压缩,扩展名.tar.gz
#压缩命令:tar zcvf 打包名 打包目录
tar zcvf tomcat.tar.gz /usr/local/tomcat
#解压命令:tar zxvf 包名 -C“将当前文件释放到:” 目录
tar zxvf tomcat.tar.gz -C /usr/local/tomcat
选项 | 用途 |
---|---|
z | 通过gzip压缩或解压 |
c | 创建新的tar.gz |
v | 显示执行过程 |
f | 指定压缩文件名称 |
x | 解压缩tar.gz文件 |
-C | 指定解压缩目录 |
yum方式安装应用程序
在CentOS中安装第三方应用程序包含两种方式:
- rpm:Red Hat软件包管理器,相当于应用程序安装文件的执行者
- 编译安装:用户自己从网站下载程序源码进行编译安装
yum与rpm的关系
rpm安装过程中,需要用户自己解决依赖问题
yum通过引入软件长裤,联网下载rpm包及依赖,并依次安装
yum常用命令
命令 | 用途 |
---|---|
yum search 应用名 | 在仓库中查询是否存在指定应用 |
yun insrall -y 应用名 | 全自动下载安装应用及其依赖 |
yum info 应用名 | 查看应用详细信息 |
yum list insralled 应用名 | 查看已安装的应用程序 |
rpm -ql 应用名 | 查看安装后输出的文件清单 |
yum remove -y 应用名 | 全自动卸载指定应用 |
编译安装
如yum仓库未提供rpm,往往需要采用编译安装
编译安装是指从应用官网下载源码后,对源码进行编译安装后使用
编译命令:
make
使用对应编译器对源码编译生成可执行文件
yum安装 | 编译安装 | |
---|---|---|
兼容性 | 差,每个发行版都要准备 | 好,全平台适用 |
复杂度 | 简单 | 复杂 |
安装速度 | 块 | 慢 |
来源 | 应用仓库 | 官网下载 |
应用场景 | 日常系统软件 | 开源软件,最近版本 |
编译安装Redis
- 安装gcc():
yum install -y gcc
- 进入Redis解压缩文件夹执行:
make
- 运行Redis:
./src/redis-server redis.conf
Linux系统管理命令
命令 | 用途 |
---|---|
ifconfig | 查看网卡IP |
netstat (-tulpn或-ano) | 查看网络端口号 |
ps -ef&kill -9(s) PID | 查看进程&杀掉进程 |
netstat常用选项
选项 | 用途 |
---|---|
t | 显示tcp传输协议的连接状况 |
u | 显示udp传输协议的连接状况 |
l | 显示处于监听状态的网络连接 |
p | 显示应用PID和程序名称 |
n | 显示ip地址 |
a | 显示所有连接 |
o | 显示计时器 |
应用服务化
应用服务化是指让应用程序以服务的方式在系统后台运行
Linux系统对服务化应用进行统一管理
服务管理命令:
systemctl
指令 | 用途 |
---|---|
start | 启动服务 |
stop | 停止服务 |
restart | 重启服务 |
enable | 设置开机启动 |
disable | 禁止开启启动 |
status | 查看服务状态 |
daemon-reload | 重载服务配置文件 |
list-unit-files | 列出所有服务 |
shutdown -r now | 重启系统 |
[Unit]
Description=Redis
#在服务启动中描述顺序,必须在以下完成后再启动Redis
After=syslog.target network.target remote-fs.target nss-lookup.target
[Service]
#服务在后台运行
Type=forking
#描述进程编号的PID文件
PIDFile=/run/redis_6379.pid
#服务启动时调用redis-server以及redis-
ExecStart=/usr/local/redis/src/redis-server /usr/local/redis/redis.conf
#服务关闭
ExecStop=/bin/kill -s QUIT $MAINPID
#为每一个服务设置私有的tmp临时文件目录
PrivateTmp=true
[Install]
#Redis服务分配到multi-user服务组上
WantedBy=multi-user.target
用户与用户组管理
Linux
是多用户任务系统,包含两个概念:用户与用户组- 用户与账户是同一概念,用于登录系统与区分资源权限
- 用户让系统变得更安全,同时也保护了用户的个人数字资产
- 用户组就是将用户分组,隶属用户自动拥有组权限
- 一个用户可隶属于多个组,用户可以任意切换当前组
- 用户组的出现让用户权限变得更轻松
命令 | 用途 |
---|---|
useradd | 创建新用户 |
passwd | 修改密码 |
usermod | 修改用户信息/分配组(覆盖原组) |
groupadd | 创建新的用户组 |
groups | 查看当前用户所在用户组 |
chown | 更改文件的属主或属组(所有权) |
chmod | 更改文件的访问权限 |
newgrp | 切换用户当前组 |
文件权限代码表


# 改变指定目录的属主以及所对应的用户组
# 更改权限 负责人账户:组名 目录名
chown d1:developer dev-document

# 改变对应文件或目录的权限
chomd 750 dev-document/

chmod命令
chmod 750
组用户可读写,其他用户不允许访问chmod 777
所有用户拥有完整的权限chmod 700
只有属主拥有完整权限
sudo获取超级管理员权限
- sudo可以让普通用户拥有超级管理员的权限
- 普通用户要经过超级管理员授权才能使用
- 授权命令:
visudo
$ visudo
# 跳转到100行 添加用户 (100gg 快速定位)
$ test ALL=(ALL) ALL
# 修改后执行格式检查
$ visudu -c
==谨慎使用 sudo==
==谨慎使用 sudo==
==谨慎使用 sudo==
firewall防火墙设置
防火墙是借助硬件和软件对内外部网路环境的保护措施
CentOS 7基于firewall实现应用层防火墙,CentOS6基于iptables
firewall-cmd
是firewall的核心命令
# 查看防火墙运行状态
$ firewall-cmd --state
# 查看当前开放端口
$ firewall-cmd --list-ports
# 增加放行端口(zone"区域" permanent"永久变更" --add-port"增加新的端口规则")
$ firewall-cmd --zone=public --permanent --add-port=8080/tcp
# 将防火墙进行配置重载
$ firewall-cmd --reload
# 移除方形端口
$ firewall-cmd --zone=public --permanent --remove-port=8080/tcp
# 放行区域端口
$ firewall-cmd --zone=public --permanent --add-port=8000-9000/tcp
Bash Shell
Shell是一 个用c语言编写的脚本解释器,是用户通过代码操作Linux的桥梁
Shell脚本描述要执行的任务,完成系列复杂操作,文件通常以
.sh
后缀
Shell种类 | Shell解释器 |
---|---|
Bourne Shell | /usr/bin/sh或/bin/sh |
Bourne Again Shell | /bin/bash/(默认) |
C Shell | /usr/bin/csh |
K Shell | /usr/bin/ksh |
Shell for Root | /sbin/sh |
安装Mysql8
~~~shell
查询是否存在mysql相关组件
$ yum search mysql-community
在官网 https://dev.mysql.com/downloads/repo/yum/ 下载
$ yum localinstall -y mysql80-community-release-el7-6.noarch.rpm
再次运行
$ yum serach mysql-community
能查找到就运行
$ yum install -y mysql-community-server
~~~
快速安装方法
- 百度搜索
mysql 下载
,进入官方MySQL :: Download MySQL Community Server - 选择
Red Hat Enterprise Linux/Oracle Linux
,版本看情况 - 找到
RPM Bundle
,点击Download - 点击
No thanks, just start my download
下载MySQL80 - 解压
- 上传到服务器
- 运行
yum install -y mysql-community-server
等待安装完毕
获取 GPG 密钥失败:[Errno 14] curl#37 - "Couldn't open file /etc/pki/rpm-gpg/RPM-GPG-KEY-mysql-2022"
- 启动MySQL
systemctl start mysqld
- 查看运行状态
systemctl status mysqld
- 设置自启动
systemctl enable mysqld
初始化MySQL8
- 进入
vi /var/log/mysqld.log
,查看密码 - 进入MySQL
mysql -r root -p
,修改密码alter user 'root'@'localhost' identified with mysql_native_password by'密码''
- 设置远程连接
use mysql
切换到mysql数据库- 执行语句
select host,user from user;
- 将root用户host改成%(代表任意设备都可以使用)
update user set host='%' where user='root';
- 让权限立即生效
flush privileges;
安装Tomcat
- 上传Tomcat到
/usr/local/
- 解压Tomcat
tar zxf apache-tomcat-9.x.x.targz
- 上传
jar/war
包到/usr/local/
- 解压
jar/war
包 - 将
jar/war
包移动到tomcat/webapps
下 mv 包名 ./apache-tomcat-9.x.x/webapps
- 修改mybatis-config.xml数据库配置信息
vim ./imooc_oa/WEB-INF/classes/mybatis-config.xml
- 修改Tomcat运行参数
cd ./conf/server.xml
- 全文搜索
/8080
端口修改为80 - 键盘
page down
跳到最后一行 - 在host标签上增加
<Context path="/" docBase="imooc_oa" />
- 启动Tomcat:
./bin/startup.sh
- 设置数据库访问权限
firewall-cmd --permanent --zone=public --add-rich-rule="rule family="ipv4" source address="Web服务器ip" port protocol="tcp" port="3306" accept "