Skip to content

常用命令

团队

Docker镜像/容器

Docker

  • 启动Dockersudo service start dockersystemctl start docker

  • 开启自启动: sudo systemctl start docker

  • 停止Docker:sudo service docker stopsystemctl stop docker

  • 关闭自启动: sudo systemctl stop docker

  • 重启Docker:sudo service restart dockersystemctl restart docker

  • 设置Docker自启:sudo service enable dockersystemctl enable docker

  • 查询Docker版本:docker --versionsystemctl status docker

  • 查询Docker信息:docker info

  • kill 容器: docker kill 容器ID/容器名

  • 查看完整信息: docker ps -a --no-trunc

  • 复制文件/文件夹(本地到容器): docker cp /root/app.jar 镜像名/镜像ID:/datart/lib/

  • 复制文件/文件夹(容器到本地): docker cp 镜像名/镜像ID:/datart/lib/app.jar /root/

Image

  • 搜索镜像

Docker官网搜索镜像

bash
docker search 镜像名 

docker search --filter=STARS=9000 mysql 搜索 STARS >9000的 mysql 镜像
  • 列出当前系统存在的镜像:docker images

  • 拉取镜像:docker pull xxx

  • xxx是具体某个镜像名称(格式 REPOSITORY:TAG)

  • REPOSITORY:表示镜像的仓库源,TAG:镜像的标签

  • 拉取镜像

不加tag(版本号) 即拉取docker仓库中 该镜像的最新版本latest 加:tag 则是拉取指定版本

bash
docker pull 镜像名  

docker pull 镜像名:tag

docker pull mysql:5.7

🔰 温馨提醒:

建一个新的容器但不启动: docker create --name xxxx nginx:latest

杀掉一个运行中的容器:docker kill image|ID

删除单个镜像:docker rmi -f 镜像名/镜像ID

删除多个镜像ID或镜像用用空格隔开即可:docker rmi -f 镜像名/镜像ID 镜像名/镜像ID 镜像名/镜像ID

删除全部镜像-a 意思为显示全部, -q 意思为只显示ID:docker rmi -f $(docker images -aq)

强制删除镜像:docker image rm 镜像名称/镜像ID

保存镜像,将我们的镜像 保存为tar 压缩文件 这样方便镜像转移和保存 ,然后 可以在任何一台安装了docker的服务器上 加载这个镜像

bash
docker save 镜像名/镜像ID -o 镜像保存在哪个位置与名字

docker save tomcat -o /myimg.tar

按照条件批量删除镜像

  • 删除无标签镜像(即 TAG 为 none 的镜像 dangling image)
bash
docker rmi $(docker images -q -f dangling=true)
  • 删除包含某关键字的镜像
bash
docker rmi --force `docker images | grep test-api | awk '{print $3}'` //其中test-api为关键字

运行一个镜像到容器

bash
# docker run 镜像名:Tag
docker run --name nginx-xd -p 8080:80 -d nginx

# 【自启动】运行run命令时 添加参数`--restart=always` 便表示,该容器随docker服务启动而自动启动
# -it 表示 与容器进行交互式启动 ,最后追加 /bin/bash  交互路径
# -d 表示可后台运行容器 (守护式运行)  
# --name 给要运行的容器 起的名字  

# docker run - 运行一个容器
#      --restart=always
#      -it 容器进行交互式启动,最后追加 /bin/bash  交互路径
#      -d 后台运行
#      -p 宿主机端口:容器端口
#      -v 参数 来实现 宿主目录与虚拟机目录进行挂载映射
#      --name "xxx"  容器名/容器ID

docker run --restart=always -it -d -p 8080:8080 --name 要取的别名 -v /test:/data 镜像名:Tag /bin/bash

img

  • 移除某个容器: docker rm 容器名/容器ID (容器必须是停止状态)

  • 删除镜像:docker rmi 容器名/容器ID

  • 强制删除一个镜像(不管是否有容器使用该镜像):docker rmi -f 镜像名/镜像ID

  • 列举当前运行的容器:docker ps

  • 检查容器内部信息:docker inspect 容器名/容器ID

  • 停止某个容器:docker stop 容器名/容器ID

  • 启动某个容器:docker start 容器名/容器ID

  • 列举全部 容器 : docker ps -a

  • 查看容器启动日志 : docker logs -f containerid

  • 全部容器: docker ps -a

进入容器

docker exec -it IMAGE /bin/bash

时如果使用了精简版,只装了sh命令,未安装bash。

docker exec -it IMAGE /bin/sh

小拓展

  • Shell简介,Shell是一种应用程序,这个应用程序提供了一个界面,用户通过这个界面访问操作系统内核的服务。Shell 是一个用 C 语言编写的程序,它是用户使用 Linux 的桥梁。Shell 既是一种命令语言,又是一种程序设计语言。
  • sh(Bourne Shell)是一个早期的重要shell,1978年由史蒂夫·伯恩编写,并同Version 7 Unix一起发布。
  • bash(Bourne-Again Shell)是一个为GNU计划编写的Unix shell。1987年由布莱恩·福克斯创造。主要目标是与POSIX标准保持一致,同时兼顾对sh的兼容,是各种Linux发行版标准配置的Shell,在Linux系统上/bin/sh往往是指向/bin/bash的符号链接。
  • #! 是一个特殊标记,说明这是一个可执行的脚本。除了第一行,其他以#开头的都不再生效,为注释。
  • #! 后面是脚本的解释器程序路径。这个程序可以是shell,程序语言或者其他通用程序,常用的是bash、sh。
bash
#!/bin/bash
#!/bin/sh
  • 查看系统可使用的shell类型

cat /etc/shells

img

退出容器

  • 直接退出 未添加 -d(持久化运行容器) 时 执行此参数 容器会被关闭

exit

  • 优雅退出 --- 无论是否添加-d 参数 执行此命令容器都不会被关闭

Ctrl + p + q

挂载映射

在run 镜像的时候 使用-v 参数 来实现 宿主目录与虚拟机目录进行挂载映射

拉取镜像:docker pull redis

例如 启动一个redis 镜像 设置端口映射 设置别名为aa

docker run -d -p 6888:6379 --name aaa -v /test:/data redis 发现咱们的宿主机 /test 目录已经与 aaa 容器 /data 目录挂载起来了

img

首先我们进入宿主机 新建 aaa.txt

mkdir aaa.txt

然后进入docker aaa容器 查看是否也有 aaa.txt

docker exec -it aaa /bin/bash

img

退出容器:Ctrl+p+q

最后 我们在docker 容器 aaa 中新建一个文件,看宿主机是否同步到

img

进入容器,追加数据,查看宿主机是否同步到数据

docker exec -it aaa /bin/bash

echo "aaaaaaaaa" >> bbb.file

cat bbb.file

img

重要

  1. 容器关闭停止,也同步数据
  2. 删除文件,也将同步删除

容器删除宿主机外部挂载的目录不会同步

扩展删除容器的数据,宿主机数据文件依旧存在

整个容器删除 数据不会同步 意思是 不会因为容器的删除 而删除其挂载在外部宿主机的目录

Dockerfile

一系列命令和参数构成的脚本,这些命令应用于基础镜像, 最终创建一个新的镜像

bash
#基础镜像,一切从这里开始构建
FROM
#镜像是谁写的,姓名+邮箱
MAINTAINER
#镜像构建的时候需要运行的命令
RUN
#步骤,tomcat镜像,这个tomcat的压缩包!添加内容
ADD
#镜像的工作目录
WORKDIR
#挂载的目录
VOLUME
#暴露端口配置 
EXPOSE
#指定这个容器启动的时候要运行的命令,只有最后一个会生效,可被替代
CMD
#指定这个容器启动的时候要运行的命令,可以追加命令
ENTRYPOINT
#指定这个容器启动的时候要运行的命令,可以追加命令
ONBUILD
#当构建一个被继承 Dockerfile 这个时候就会运行ONBUILD 的指令
COPY
#类似ADD,将我们文件拷贝到镜像中
ENV
#构建的时候设置环境遍量

扩展

bash
FROM <image>:<tag> 需要一个基础镜像,可以是公共的或者是私有的,
后续构建会基于此镜像,如果同一个Dockerfile中建立多个镜像时,可以使用多个FROM指令
      
VOLUME  配置一个具有持久化功能的目录,主机 /var/lib/docker 目录下创建了一个临时文件,并链接到容器的/tmp。改步骤是可选的,如果涉及到文件系统的应用就很有必要了。
/tmp目录用来持久化到 Docker 数据文件夹,因为 Spring Boot 使用的内嵌 Tomcat 容器默认使用/tmp作为工作目录 

ARG  设置编译镜像时加入的参数, JAR_FILE 是设置容器的环境变量(maven里面配置的)
COPY : 只支持将本地文件复制到容器 ,还有个ADD更强大但复杂点
ENTRYPOINT 容器启动时执行的命令

EXPOSE 8080 暴露镜像端口

Dockerfile 同路径新建 script/fonts/ 文件夹 放置需要用到的字体

bash
# 拉取最小化的jre 1.8的运行环境(没有字体资源需求可以考虑切换这个)
#FROM anapsix/alpine-java:8_server-jre_unlimited

FROM openjdk:8-jdk-alpine
#设置语言包为中文
ENV LANG C.UTF-8
#指定容器时间
ENV TZ=Asia/Shanghai
RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone
# 镜像作者信息
MAINTAINER XiJue
LABEL description="陕西品创网络科技模块化系统(Shaanxi Pinchuang network technology content management system)"
#captcher 字体包
RUN set -xe \
&& apk --no-cache add ttf-dejavu fontconfig
# 拷贝字体 本地路径 ./script/fonts文件夹下面准备好字体
COPY script/fonts/msyh.ttc /usr/share/fonts/ttf-dejavu/msyh.ttc
COPY script/fonts/msyhbd.ttc /usr/share/fonts/ttf-dejavu/msyhbd.ttc
COPY script/fonts/msyhl.ttc /usr/share/fonts/ttf-dejavu/msyhl.ttc
# 创建文件夹
RUN mkdir -p /sxpcwlkj
RUN mkdir -p /sxpcwlkj/cms
RUN mkdir -p /sxpcwlkj/cms/logs
RUN mkdir -p /sxpcwlkj/cms/files
RUN mkdir -p /sxpcwlkj/cms/theme
# 切换到该文件夹下指定当前工作目录,jar的执行路径
WORKDIR /
# 设置环境变量
ENV SERVER_PORT=8082
# 告诉Docker服务端暴露端口,在容器启动时需要通过 -p 做端口映射
EXPOSE ${SERVER_PORT}
# 将jar包复制到Dockerfile所在的相对目录下目录下,可以是URL,也可以是tar.gz(自动解压);(当使用本地目录为源目录时,推荐使用 COPY)
# ADD是复制指定路径到容器路径,COPY是复制本地主机的路径到容器的路径。
ADD ./target/cms.jar ./app.jar
# 启动时执行的命令,要追加任何命令可以直接在 [ ] 数组中追加任何参数,但是要保证排序正确
# ENTRYPOINT ["java", "-Xmx512m","-Xms512m","-Djava.security.egd=file:/dev/./urandom", "-jar", "app.jar"]
ENTRYPOINT ["java", "-Djava.security.egd=file:/dev/./urandom", "-Dserver.port=${SERVER_PORT}", "-jar", "app.jar"]

Dockerfile制作镜像

  • Dockerfile: ADD ./target/cms.jar ./app.jar 注意Dockerfile jar的位置是否存在

  • 语法 docker build -t web-test .

后面有点 . 哦, web-test 为镜像名

执行 Successfully built 为成功

bash
[root@docker springBoot-docker]# docker build -t web-test .
Sending build context to Docker daemon  17.61MB
Step 1/4 : From java:8
 ---> d23bdf5b1b1b
Step 2/4 : COPY *.jar /app/web.jar
 ---> 842a89197b40
Step 3/4 : CMD ["echo","success---build"]
 ---> Running in 44a3ff5d4325
Removing intermediate container 44a3ff5d4325
 ---> c9f19fd96561
Step 4/4 : ENTRYPOINT ["java","-jar","/app/web.jar"]
 ---> Running in 1b5bece20c7f
Removing intermediate container 1b5bece20c7f
 ---> 024d6444c366
Successfully built 024d6444c366
Successfully tagged web-test:latest

因为我们的dockerfile文件名为Dockerfile,所以不用 -f 指定dockerfile文件名,系统会自动识别当前目录下名为Dockerfile 的文件。

  • -t:镜像名 web-test

  • 指镜像构建时打包上传到Docker引擎中的文件的目录,当构建的时候,由用户指定构建镜像的上下文路径,而 docker build 会将这个路径下所有的文件都打包上传给 Docker 引擎,引擎内将这些内容展开后,就能获取到所有指定上下文中的文件了。

  • 注意:上下文路径下不要放无用的文件,因为会一起打包发送给 docker 引擎,如果文件过多会造成过程缓慢。

  • 查看镜像列表:docker images

镜像上传到仓库

1 页面上传

打包成镜像文件:docker save xxx_test:v1 > test.tar

云镜像仓库页面上传镜像文件

2 docker客户端上传

参照云镜像仓库的说明,通常是三步:

  • 登录到仓库,

  • 给镜像打标签(包含仓库位置/组名/镜像:版本),

  • 推送到仓库

Docker-Compose

  • Docker Compose 是一个简化多容器 Docker 应用程序管理的工具,它通过使用一个配置文件来定义和管理多个容器的运行方式,使得应用程序的部署和管理变得更加简单和高效。

  • Docker-Compose 将所管理的容器分为三层,分别是工程(project),服务(service)以及容器(container)。Docker-Compose 运行目录下的所有文件(docker-compose.yml,extends 文件或环境变量文件等)组成一个工程,若无特殊指定工程名即为当前目录名。

  • Docker-Compose 的工程配置文件默认为 docker-compose.yml,可通过环境变量 COMPOSE_FILE 或 -f 参数自定义配置文件,其定义了多个有依赖关系的服务及每个服务运行的容器。 使用一个 Dockerfile 模板文件,可以让用户很方便的定义一个单独的应用容器。

  • 查看 docker-compose 版本: docker-compose --version

  • docker-compose 卸载: rm /usr/local/bin/docker-composepip uninstall docker-compose

  • 根据指定的配置文件(默认为 docker-compose.yml)创建并运行多个容器: docker compose up [OPTIONS] [SERVICE...]

参数说明
-d在后台运行服务容器
–no-color不使用颜色来区分不同的服务的控制输出
–no-deps不启动服务所链接的容器
–force-recreate强制重新创建容器,不能与 –no-recreate 同时使用
–no-recreate如果容器已经存在,则不重新创建,不能与 –force-recreate 同时使用
–no-build不自动构建缺失的服务镜像
–build在启动容器前构建服务镜像
–abort-on-container-exit停止所有容器,如果任何一个容器被停止,不能与-d同时使用
-t,-–timeout int停止容器时候的超时(默认为 10 秒)
–remove-orphans删除服务中没有在 compose 文件中定义的容器
-f指定使用的 Compose 模板文件,默认为 docker-compose.yml,可以多次指定

例如:

必须是在docker-compose.yml文件根目录下执行以下命令,要不然会报错找不到 Docker Compose 的配置文件

bash
# 启动所有服务
docker-compose up

# 在后台启动所有服务
docker-compose up -d

# 在后台所有启动服务,指定编排文件
docker-compose -f docker-compose.yml up -d

docker-compose.yml

yml
  # yaml 配置实例
  version: '3'
  # 品创网络-官网
  official:
    image: sxpcwlkj/official:1.0.0
    container_name: official
    environment:
      # 时区上海
      TZ: Asia/Shanghai
    volumes:
      # 配置文件
      - /docker/sxpcwlkj/official/logs/:/sxpcwlkj/official/logs
      - /docker/sxpcwlkj/official/files/:/sxpcwlkj/official/files
    privileged: true
    network_mode: "host"
  • 在后台所有启动服务,指定编排文件docker-compose -f docker-compose.yml up -d

容器日志

  • 全部日志:docker logsdocker-compose logs

  • 某个容器日志:docker logs [name|ID]docker-compose logs [name|ID]

  • 某个容器日志并显示时间、持续打印docker logs -t -f [name|ID]docker-compose logs -t -f [name|ID]

  • 最后300行日志:dicker logs [name|ID] | tail -n 300docker-compose logs [name|ID] | tail -n 300

Linux操作

服务器命令

  • 列出/目录下的文件
shell
ls -l /
  • 获取目前所在工作目录的绝对路径
shell
pwd
  • 改变当前工作目录
shell
cd /usr/local
  • 显示或修改系统时间与日期
shell
date '+%Y-%m-%d %H:%M:%S'
  • 用于设置用户密码
shell
passwd root
  • 改变用户身份(切换到超级用户)
shell
su -
  • 用于清除屏幕信息
shell
clear
  • 显示目前登录到系统的用户
shell
who -buT
  • 显示系统内存状态(单位MB)
shell
free -m
  • 显示系统进程运行动态
shell
#查看sshd进程的运行动态
ps -ef | grep sshd
  • 查看即时活跃的进程,类似Windows的任务管理器
shell
top

文件操作命令

  • 创建目录
shell
mkdir /test
  • 创建文件,例如创建text.txt文件
shell
touch text.txt

- 删除文件

```shell
rm text.txt
#强制删除
rm -rf testdir/
  • 拷贝文件,例如将test1目录复制到test2目录
shell
cp -r /mydata/tes1 /mydata/test2
  • 移动或覆盖文件
shell
mv text.txt text2.txt
  • 压缩与解压

将/etc文件夹中的文件归档到文件etc.tar(并不会进行压缩)

shell
tar -cvf /mydata/etc.tar /etc

用gzip压缩文件夹/etc中的文件到文件etc.tar.gz

shell
tar -zcvf /mydata/etc.tar.gz /etc

用bzip2压缩文件夹/etc到文件/etc.tar.bz2

shell
tar -jcvf /mydata/etc.tar.bz2 /etc

分页查看压缩包中内容(gzip)

shell
tar -ztvf /mydata/etc.tar.gz |more -c -10

解压文件到当前目录(gzip)

shell
tar -zxvf /mydata/etc.tar.gz

解压文件到指定目录(gzip)

shell
tar -zxvf /mydata/etc.tar.gz -C /mydata/etc

查看磁盘空间占用情况

shell
df -hT

查看当前目录下的文件及文件夹所占大小

shell
du -h --max-depth=1 ./*

显示当前网络接口状态

shell
ifconfig

查看当前路由信息

shell
netstat -rn

查看所有有效TCP连接

shell
netstat -an
  • 分页查看文件,例如每页10行查看boot.log文件
shell
more -c -10 /var/log/boot.log

从网络上下载文件

shell
wget 地址

文件上传下载

安装上传下载工具lrzsz

shell
yum install -y lrzsz

上传文件,输入以下命令XShell会弹出文件上传框

shell
rz

下载文件,输入以下命令XShell会弹出文件保存框

shell
sz fileName
bash
#重启命令:
sudo reboot
sudo shutdown -r now      #立刻重启
sudo shutdown -r 10       #过10分钟自动重启
sudo shutdown -r 20:35    #在时间为20:35时候重启

#关机命令:
1、sudo halt              #立刻关机
2、sudo poweroff          #立刻关机
3、sudo shutdown -h now   #立刻关机
4、sudo shutdown -h 10    #10分钟后自动关机

防火墙

bash
#1、查看firewall服务状态
systemctl status firewalld
#出现Active: active (running)切高亮显示则表示是启动状态。
#出现 Active: inactive (dead)灰色表示停止,看单词也行。
 
#2、查看firewall的状态
firewall-cmd --state
 
#3、开启、重启、关闭、firewalld.service服务
# 开启
service firewalld start
# 重启
service firewalld restart
# 关闭
service firewalld stop
 
#4、查看防火墙规则
firewall-cmd --list-all 
 
#5、查询、开放、关闭端口
# 查询端口是否开放
firewall-cmd --query-port=8080/tcp
# 开放80端口
firewall-cmd --permanent --add-port=80/tcp
# 移除端口
firewall-cmd --permanent --remove-port=8080/tcp
#重启防火墙(修改配置后要重启防火墙)
firewall-cmd --reload

Iptables

  • 安装前先关闭firewall防火墙
  • 安装iptables
shell
yum install iptables
  • 安装iptables-services
shell
yum install iptables-services
  • 开启防火墙
shell
systemctl start iptables.service

Vim编辑器

  1. 打开文件编辑:vi 文件名

  2. 按 "i" 键 进入编辑模式

  3. 编辑完成后,按 Esc 键 退出编辑

  4. 保存 :wq

bash
:wq      表示保存退出
:wq!     表示强制保存退出
: x         表示保存退出

:q在vim中表示退出
:q!表示强制不保存退出,不对文件进行保存
":q" ":q!" 的区别如下:
如果文件有修改,:q 会提示有修改,是否退出,输入y退出
如果文件有修改,:q! 会强制直接退出,并且不对文件进行保留

端口/进程

在线检查端口

netstat(network status网络状态)命令各个参数说明如下:

-t:指明显示TCP端口,t是TCP的首字母。

-u:指明显示UDP端口,u是UDP的首字母

-l:仅显示监听套接字(所谓套接字就是使应用程序能够读写与收发通讯协议(protocol)与资料的程序),l是listening的首字母。

-p:显示进程标识符和程序名称,每一个套接字/端口都属于一个程序,p是program的首字母。

-n:不进行DNS轮询,显示IP(可以加速操作),n是numeric的首字母,以数字形式显示地址和端口号。

-a:显示所有连接和侦听端口,a是all的首字母。

-o:显示拥有的每个连接关联的进程id,o是own的首字母。

  • 详细端口扫描:netstat -an

  • 当前所有tcp端口: netstat -ntlp

  • 当前所有udp端口: netstat -nulp

  • 当前系统端口使用情况: netstat -anp

  • 当前所有80端口使用情况:netstat -ntulp |grep 80

  • 指定端口运行的程序: lsof -i :port

查看进程号

bash
# Linux

lsof -i:端口号
netstat -tunlp|grep 端口号

# windows

netstat -ano |findstr  8080

查看端口

sudo netstat -apn | grep 进程号

扩展

ps -ef|grep java

ps -ef|grep jar

结束进程

bash
# Linux强制杀掉进程
kill -9 进程号

windows强制杀掉进程
taskkill /pid 进程号 -f

查找某服务路径

sudo find / -name *tomcat*

常用服务

JDK

安装JDK: yum install java-1.8.0-openjdk java-1.8.0-openjdk-devel

Subversion

查看状态:ps -ef|grep svn

启动:svnserve -d -r /home/svn/

停止: killall svnserve

Nginx

bash
#01进入安装路径
cd   /usr/local/nginx/sbin
#02启动
./nginx
#03检查
ps -ef | grep nginx  出现master 则启动成功
#04重启
./nginx -s reload
#05停止
./nginx -s stop
#06检查配置文件是否正确<code>./nginx -t -c /path/to/nginx.conf</code>

SpringBoot

bash
### 01日志打印
nohup java -jar sxpcwlkj.jar > nohup.out 2>&1&
### 02指定日志文件
nohup java -jar sxpcwlkj.jar > mylog.txt 2>&1&
### 03不进行日志打印
nohup java -jar sxpcwlkj.jar >/dev/null &
### 04日志打印 端口指定
nohup java -jar sxpcwlkj.jar --server.port=8880 > nohup.out 2>&1&
### 05进入日志:cd ./logs
### 06查看日志:tail -f -n2200 catalina.out

实例

  • 启动日志打印: nohup java -jar sxpcwlkj.jar > nohup.out 2>&1& ohup会把执行结果中的日志输出到当前文件夹下面的nohup.out文件中

  • 停止后台运行的jar: ps -ef | grep java

  • kill命令杀掉jar包运行的进程: kill -9 100

kill 进程ID nohup 命令

用途:不挂断地运行命令。

语法:nohup Command [ Arg … ] [ & ]

nohup: 不挂断的运行,并没有后台运行功能,用nohup运行命令可以使命令永久执行下去,和用户终端没有关系,断开SSH不影响运行,&是后台运行.

描述:nohup 命令运行由 Command 参数和任何相关的 Arg 参数指定的命令,忽略所有挂断(SIGHUP)信号。在注销后使用 nohup 命令运行后台中的程序。要运行后台中的 nohup 命令,添加 &到命令的尾部。

MQTT

  • 进入: cd /www/server/emqx/bin

  • 启动: emqx start

  • 停止: emqx stop

  • 重启: emqx restart

Redis

bash
# 1进入目录:

cd /www/server/redis/src
# 2登录: 

./redis-cli
# 3启动:

./redis-server 
# 或者 
./redis-server --port 6380

# 4已设置访问密码启动方式 
./redis-server …/redis.conf

# 5停止:
redis-cli -h 127.0.0.1 -p 6379 shutdown
redis-cli -h 127.0.0.1 -p 6379 -a password shutdown
如果上述方式都没有成功停止redis,则可以使用 kill -9 杀死redis进程

Released under the MIT License.