目录
- 👑Linux基础
- ✨【目录】
- 👑Redis 安装
- 1.下载压缩包
- 2.解压
- 3.安装编译环境
- 4.安装到本地
- 5.设置开机自启
- 👑Linux 自启服务
👑Linux基础
虽然在大二的时候学过
Linux
,但是很多基础知识都忘了,想再次从基础捡起,所以整理出了这本笔记,希望能帮助到学Linux
系统的小伙伴
✨【目录】
在 Linux 系统中,目录结构遵循 Filesystem Hierarchy Standard (FHS) 标准,所有目录从根目录 /
开始,形成一个树状层级结构。以下是主要目录及其作用的详细说明:
[root@localhost /]$ tree -L 1 /
/
├── afs # AFS文件空间的根目录
├── bin -> usr/bin # 存放所有用户可用的基本命令(如 ls, cp, mv 等)
├── boot # 存放系统启动所需的文件(如内核 vmlinuz、引导加载器 grub 等)
├── dev # 以文件形式表示硬件设备或虚拟设备
├── etc # 存放系统的配置文件
├── home # 普通用户的主目录,每个用户拥有独立的子目录(如 /home/user1)
├── lib -> usr/lib # 存放系统运行所需的共享库文件(类似 Windows 的 DLL)
├── lib64 -> usr/lib64 # 存放系统运行所需的共享库文件(类似 Windows 的 DLL)
├── media # 用于挂载外部存储设备(如 U 盘、光盘、网络磁盘)
├── mnt # 用于挂载外部存储设备(如 U 盘、光盘、网络磁盘)
├── opt # 存放第三方独立软件(如大型商业软件或自定义服务)
├── proc # 虚拟文件系统,提供内核和进程的实时信息
├── root # 系统管理员(root)的主目录,普通用户无权访问
├── run # 存放系统运行时的临时文件(如进程 PID 文件、锁文件)
├── sbin -> usr/sbin # 存放系统管理员使用的系统管理命令(如 fdisk, iptables, reboot)
├── srv # 存放服务相关的数据(如 FTP、Git 仓库)
├── sys # 虚拟文件系统,提供硬件和内核的配置接口(如电源管理、设备驱动)
├── tmp # 存放临时文件,系统重启后自动清空
├── usr # 存放用户安装的应用程序和共享资源(类似 Windows 的 Program Files)
└── var # 存放经常变化的动态数据(如日志、缓存、数据库)
tree -L 1 /
:使用-L
参数指定目录树的深度为 1tree -L 1 -d /
:使用-d
参数,忽略文件,只查看目录
Linux
学习目录
标题 | 目的 |
---|---|
Linux系统常用命令的使用 | Linux系统常用命令的使用_ |
Linux中 vim 编辑器的使用 | Linux中 vim 编辑器的使用_ |
Linux配置网桥!配置虚拟网络! | Linux 中 如何配置网桥?如何配置虚拟网络? |
Linux 网络接口管理 | Linux 中 网络接口管理 |
linux软件包的安装与管理 | linux软件包的安装与管理 |
linux 云计算平台基本环境(知识准备篇) | linux 云计算平台基本环境(知识准备篇) |
👑Redis 安装
redis
下载地址官网:https://download.redis.io/releases/
1.下载压缩包
在Linux
下载压缩包,命令如下:
-
下载最新稳定版本
wget https://download.redis.io/redis-stable.tar.gz
-
下载指定版本
wget http://download.redis.io/releases/redis-6.2.10.tar.gz
2.解压
在Linux
解压压缩包可以使用,tar -xzvf
,解释如下:
-x
:解压(extract)文件。-z
:处理.gz
压缩格式(如果文件是.tar.bz2
,则用-j
)。-v
:显示解压过程(verbose,可选)。-f
:指定文件名。-C
:指定解压到的目录(注意大写字母 C)
解压到当前目录下,命令如下:
tar -xzvf redis-stable.tar.gz
解压到指定目录下,命令如下:
tar -xzvf redis-stable.tar.gz -C 路径
如果不是管理员用户的话,记得加上sudo
,如:
sudo tar -xzvf redis-stable.tar.gz -C /opt/
这些都是从当前目录的压缩包出发的,如果压缩包在另一个目录,可以使用:
tar -xzvf /路径/to/file.tar.gz
-C
:指定目录
3.安装编译环境
-
命令:
sudo yum install -y gcc-c++
安装之后,进入安装好的
redis-stable
目录下,博主是安装在/opt/
目录下的,[root@localhost redis-stable]$ pwd /opt/redis-stable
-
编译
cd redis-stable/ make
-
如图所示:
4.安装到本地
编译成功之后,在src文件夹中多了2个文件
redis-server
: redis服器redis-cli
: redis命令行客户端
使用make install
[root@localhost redis-stable]$ sudo make install
[sudo] root 的密码:
for dir in src; do make -C $dir install; done
make[1]: 进入目录“/opt/redis-stable/src”
Hint: It's a good idea to run 'make test' ;)
INSTALL redis-server
INSTALL redis-benchmark
INSTALL redis-cli
make[1]: 离开目录“/opt/redis-stable/src”
从redis
的源码目录中拷贝redis.conf
到redis
的安装目录
-
进入
Redis
安装目录:cd /usr/local/bin/
例如:
[root@localhost redis-stable]$ cd /usr/local/bin/ [root@localhost bin]$ ll 总用量 30404 -rwxr-xr-x. 1 root root 6421360 5月 24 13:00 redis-benchmark lrwxrwxrwx. 1 root root 12 5月 24 13:00 redis-check-aof -> redis-server lrwxrwxrwx. 1 root root 12 5月 24 13:00 redis-check-rdb -> redis-server -rwxr-xr-x. 1 root root 7267224 5月 24 13:00 redis-cli lrwxrwxrwx. 1 root root 12 5月 24 13:00 redis-sentinel -> redis-server -rwxr-xr-x. 1 root root 17437872 5月 24 13:00 redis-server
-
在
bin
目录下创建一个redisconf
mkdir redisconf
例如:
sudo mkdir redisconf
注意:如果当前用户权限不够,一定要使用
sudo
-
拷贝
拷贝的时候,源码是自己安装的目录下的内容,注意路径
sudo cp /opt/redis-stable/redis.conf redisconf
例如
[root@localhost bin]$ ll redisconf 总用量 108 -rw-r--r--. 1 root root 110449 5月 24 13:24 redis.conf
-
修改
redis.conf
文件sudo vim redis.conf
将
daemonize no
改为daemonize yes
设置密码
requirepass 123456
,可以使用搜索,在普通模式下输入/requirepass
-
启动服务
redis-server redisconf/redis.conf
后面的路径是刚才配置的文件
/usr/local/bin/redisconf/
报错:
[root@localhost bin]$ redis-server redisconf/redis.conf 42441:C 24 May 2025 13:59:04.146 # WARNING Memory overcommit must be enabled! Without it, a background save or replication may fail under low memory condition. Being disabled, it can also cause failures without low memory condition, see https://github.com/jemalloc/jemalloc/issues/1328. To fix this issue add 'vm.overcommit_memory = 1' to /etc/sysctl.conf and then reboot or run the command 'sysctl vm.overcommit_memory=1' for this to take effect.
这个Redis的警告信息,提示内存过量提交(memory overcommit)必须启用,否则在低内存情况下后台保存或复制可能会失败。
首先,我要理解这个警告的原因。Redis在持久化数据到磁盘时(比如执行BGSAVE或BGREWRITEAOF),会fork一个子进程。子进程需要与父进程共享相同的内存空间,这依赖于操作系统的写时复制(Copy-On-Write)机制。如果系统的内存过量提交设置被禁用(vm.overcommit_memory=0),当系统内存不足时,fork可能会失败,导致Redis无法完成持久化操作。
所以,用户需要将vm.overcommit_memory设置为1,以允许过量提交。解决方法包括临时设置和永久设置两种。临时设置通过sysctl命令立即生效,但重启后会失效;永久设置需要修改/etc/sysctl.conf文件,并应用更改。
接下来,我需要检查用户可能的需求。他们可能希望立即解决问题,所以临时命令是必要的。同时,为了长期稳定,修改配置文件也是关键。此外,用户可能需要验证设置是否生效,所以提供检查命令也很重要。
还要考虑用户的操作系统类型,不同的系统可能sysctl的路径或命令稍有不同,但大多数Linux发行版处理方式相似。另外,用户可能需要知道如何重新加载sysctl配置而不重启,这可以通过sysctl -p来实现。
最后,需要提醒用户如果修改配置文件后不重启,可能需要手动应用设置,或者确认是否需要重启Redis服务。不过通常修改sysctl.conf后执行sysctl -p就足够了,不需要重启整个系统。
这里给出两种解决这个报错的方案:
1.临时生效(重启后失效)
sudo sysctl vm.overcommit_memory=1
2.永久生效
编辑配置文件
sudo vim /etc/sysctl.conf
添加以下行
vm.overcommit_memory = 1
应用配置(无需重启系统)
sudo sysctl -p
验证可以使用
sysctl vm.overcommit_memory
,输出是vm.overcommit_memory = 1
最后使用
redis-server redisconf/redis.conf
就可以启动服务了可以验证下:
[root@localhost bin]$ redis-server redisconf/redis.conf [root@localhost bin]$ redis-cli -p 6379 127.0.0.1:6379> auth 123456 OK 127.0.0.1:6379> ping PONG 127.0.0.1:6379>
5.设置开机自启
进入配置文件
vi /etc/systemd/system/redis.service
配置以下内容:
[Unit]
Description=redis-server
After=network.target
[Service]
Type=forking
ExecStart=/usr/local/bin/redis-server /usr/local/bin/redisconf/redis.conf
PrivateTmp=true
[Install]
WantedBy=multi-user.target
注意:/usr/local/bin/redisconf/redis.conf
,更改成自己的目录
重载服务
systemctl daemon-reload
开启服务
systemctl start redis.service
查看服务状态
systemctl status redis.service
以下是状态开启成功的示例:
拓展
systemctl start redis.service #启动redis服务
systemctl stop redis.service #停止redis服务
systemctl restart redis.service #重新启动服务
systemctl status redis.service #查看服务当前状态
systemctl enable redis.service #设置开机自启动
systemctl disable redis.service #停止开机自启动
如果在开启redis
服务的时候有报错,可以检查下:
redis.conf
的配置内容redis.service
的路径配置问题,6379
端口问题
博主在开启redis
服务的时候,出现了一个6379
的端口问题,这个端口是已经被占用开启了,可以使用sudo ss -tulnp | grep 6379
,查看指定端口
[lh@localhost bin]$ sudo ss -tulnp | grep 6379
tcp LISTEN 0 511 127.0.0.1:6379 0.0.0.0:* users:(("redis-server",pid=42442,fd=8))
tcp LISTEN 0 511 [::1]:6379 [::]:* users:(("redis-server",pid=42442,fd=9))
直接使用sudo kill -9 42442
,关闭这个端口号就行,使用sudo killall redis-server
也是可以做到
在项目部署时,是需要将redis
服务设置为开机自启的,
systemctl enable redis.service #设置开机自启动
systemctl disable redis.service #停止开机自启动
注意:如果使用的账户没有权限,那么就需要使用sudo
,当然是管理员账户的话,就不用
👑Linux 自启服务
开机自启和关闭命令
# 禁用服务
sudo systemctl disable <服务名>
# 启用服务
sudo systemctl enable <服务名>
也可以使用
# 禁用服务
sudo chkconfig <服务名> off
# 启用服务
sudo chkconfig <服务名> on
查看是否自启服务
sudo systemctl is-enabled redis.service
查看已开启的所有服务
systemctl list-unit-files --type=service --state=enabled