• 瑞吉外卖Linux


    😹 作者: gh-xiaohe
    😻 gh-xiaohe的博客
    😽 觉得博主文章写的不错的话,希望大家三连(✌关注,✌点赞,✌评论),多多支持一下!!

    💒 Linux

    🚏 1、Linux常用命令

    • 🚀 Linux命令初体验

      • ls 查看当前目录下的文件
      • pwd 查看当前所在目录
      • cd [目录名] 切换目录
      • touch [文件名] 如果文件不存在。新建文件
      • mkdir [目录名] 创建目录
      • rm [文件名] 删除指定文件
        • rm -rf [文件名]

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-LeOYi7Kf-1662014921086)(%E7%91%9E%E5%90%89%E5%A4%96%E5%8D%96.assets/image-20220901113036345.png)]

    echo ‘LANG=“en_US.UTF-8”’ >> /etc/profile 追加在/etc/profile 目录下
    source /etc/profile 立即重新加载一下

    • 🚄 Linux命令使用技巧

      • Tab键自动补全
      • 连续两次Tab键,给出操作提示
      • 使用上下箭头快速调出曾经使用过的命令
      • 使用clear命令或者Ctrl+L快捷键实现清屏
    • 🚒 Linux命令格式 command [-options] [parameter]

    • 说明:

      • command:命令名
      • [-options]:选项,可用来对命令进行控制,也可以省略
      • [parameter]:传给命令的参数,可以是零个、一个或者多个
    • 注意:[]代表可选命令名、选项、参数之间有空格进行分隔

    • 🚤 文件目录操作命令

      • 🚬 ls
        • 作用:显示指定目录下的内容
        • 语法:ls [-al] [dir]
        • 说明:
          • -a显示所有文件及目录(.开头的隐藏文件也会列出)
          • -l除文件名称外,同时将文件型态(d表示目录,-表示文件)、权限、拥有者、文件大小等信息详细列出
        • 注意:由于我们使用ls命令时经常需要加入-l选项,所以Linux为ls-l命令提供了一种简写方式,即ll
      • 🚬 cd
        • 作用:用于切换当前工作目录,即进入指定目录
        • 语法:cd [dirName]
        • 特殊说明:
          • ~表示用户的home目录
          • 。表示目前所在的目录
          • 。。表示目前目录位置的上级目录
      • 🚬 cat
        • 作用:用于显示文件内容
        • 语法:cat[-n] fileName
        • 说明:-n:由1开始对所有输出的行数编号
        • 举例:
          • cat /etc/profile 查看/etc目录下的profile文件内容
          • cat -n /etc/profile 查看/etc目录下的profile文件内容 显示行号
      • 🚬 more
        • 作用:以分页的形式显示文件内容
        • 语法:more fileName
        • 操作说明:
          • 回车键 向下滚动一行
          • 空格键 向下滚动一屏
          • b 返回上一屏
          • q或者Ctrl+C 退出more
        • 举例:more /etc/profile 以分页方式显示/etc目录下的profile文件内容
      • 🚬 tail
        • 作用:查看文件末尾的内容:
        • 语法:tail[-f] fileName
        • 说明:
          • -f:动态读取文件末尾内容并显示,通常用于日志文件的内容输出
        • 举例:
        • [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-uqyTjvAU-1662014921088)(%E7%91%9E%E5%90%89%E5%A4%96%E5%8D%96.assets/image-20220901142226850.png)]
      • 🚬 mkdir
        • 作用:创建目录
        • 语法:mkdir[-p] dirName
        • 说明:
          • -p:确保目录名称存在,不存在的就创建一个。通过此选项,可以实现多层目录同时创建
        • 举例:
        • [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-cOp146Jq-1662014921089)(%E7%91%9E%E5%90%89%E5%A4%96%E5%8D%96.assets/image-20220901142315282.png)]
      • 🚬 rmdir
        • 作用:删除空目录
        • 语法:rmdir [-p] dirName
        • 说明:
          • -p:当子目录被删除后使父目录为空目录的话,则一并删除
        • 举例:
        • [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-NNvDvRlp-1662014921089)(%E7%91%9E%E5%90%89%E5%A4%96%E5%8D%96.assets/image-20220901142134060.png)]
      • 🚬 rm
        • 作用:删除文件或者目录
        • 语法:rm [ -rf ] name
        • 说明:
          • -r:将目录及目录中所有文件(目录)逐一删除,即递归删除
          • -f:无需确认,直接删除
    • 🚗 拷贝移动命令

      • 🚬 cp
        • 作用:用于复制文件或目录
        • 语法:cp [-r] source dest
        • 说明:
        • -r:如果复制的是目录需要使用此选项,此时将复制该目录下所有的子目录和文件
        • 举例:
        • [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-a7dycBOi-1662014921089)(%E7%91%9E%E5%90%89%E5%A4%96%E5%8D%96.assets/image-20220901142103184.png)]
      • 🚬 mv
        • 作用:为文件或目录改名、或将文件或目录移动到其它位置
        • 语法:mv source dest
        • 举例:
        • [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-cEjTTwAu-1662014921090)(%E7%91%9E%E5%90%89%E5%A4%96%E5%8D%96.assets/image-20220901142042945.png)]
    • 🚲 打包压缩命令

      • 🚬 tar
        • 作用:对文件进行打包、解包、压缩、解压
        • 语法:tar[-zcxvf] fileName[files]
        • 包文件后缀为==.tar==表示只是完成了打包,并没有压缩
        • 包文件后缀为==.tar.gz==表示打包的同时还进行了压缩
        • 说明:
          • -z: z代表的是gzip,通过gzip命令处理文件,gzip可以对文件压缩或者解压
          • -c: c代表的是create,即创建新的包文件
          • -x: x代表的是extract,实现从包文件中还原文件
          • -v: v代表的是verbose,显示命令的执行过程
          • -f: f代表的是file,用于指定包文件的名称
          • c 和 x 是互斥的,解压和压缩不能同时进行
        • 解压 :tar -zxvf 文件.tar.gz 没有压缩 tar -xvf 文件.tar
        • 压缩 :tar -zcvf 文件名称 目录名称
        • 举例 :
        • [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-udHlIRTP-1662014921090)(%E7%91%9E%E5%90%89%E5%A4%96%E5%8D%96.assets/image-20220901143253629.png)]
    • 🛴 文本编辑命令

      • 🚬 vi/vim
      • 作用:vi命令是Linux系统提供的一个文本编辑工具,可以对文件内容进行编辑,类似于windows中的记事本

      • 语法:vi fileName

      • 说明:

        • 1、vim是从vi发展来的一个功能更加强大的文本编辑工具,在编辑文件时可以对文本内容进行着色,方便我们对文件进行编辑处理,所以实际工作中vim更加常用。
        • 2、要使用vim命令,需要我们自己完成安装。可以使用下面的命令来完成安装:yum install vim
      • 🚬 vim
        • 作用:对文件内容进行编辑,vim其实就是一个文本编辑器
        • 语法:vim fileName
        • 说明:
          • 1、在使用vim命令编辑文件时,如果指定的文件存在则直接打开此文件。如果指定的文件不存在则新建文件。
          • 2、vim在进行文本编辑时共分为三种模式,分别是命令模式(Command mode),插入模式(Insert mode)和底行模式(Last line mode)。这三种模式之间可以相互切换。我们在使用vim时一定要注意我们当前所处的是哪种模式。
        • 针对vim中的三种模式说明如下:
          • 1、命令模式
            • 命令模式下可以查看文件内容、移动光标(上下左右箭头、gg(开头)、G(末尾))
            • 通过vim命令打开文件后,默认进入命令模式
            • 另外两种模式需要首先进入命令模式,才能进入彼此
          • 2、插入模式
            • 插入模式下可以对文件内容进行编辑
            • 在命令模式下按下[i,a,o]任意一个,可以进入插入模式。进入插入模式后,下方会出现【insert】字样
            • 在插入模式下按下ESC键,回到命令模式
          • 3、底行模式
          • 底行模式下可以通过命令对文件内容进行查找、显示行号、退出等操作
          • 在命令模式下按下[:,/]任意一个,可以进入底行模式
          • 通过 / 方式进入底行模式后,可以对文件内容进行查找
          • 通过 : 方式进入底行模式后,可以输入wq(保存并退出)、q!(不保存退出)、set nu(显示行号)
        • [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-lO53HSrf-1662014921090)(%E7%91%9E%E5%90%89%E5%A4%96%E5%8D%96.assets/image-20220901143722996.png)]
    • 🛹 查找命令

      • 🚬 find
        • 作用:在指定目录下查找文件

        • 语法:find dirName -option fileName 目录名称 -option 一般指定 -name (根据文件名称来查找)文件名称(可以使用通配符的方式)

        • 举例:

        • find / -name helloworld.log 在所有文件夹下查找helloworld.log文件
          [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-CNVEUWhn-1662015839014)(%E7%91%9E%E5%90%89%E5%A4%96%E5%8D%96.assets/image-20220901145908431.png)]

      • 🚬 grep
        • 作用:从指定文件中查找指定的文本内容
        • 语法:grep word fileName 查找的文本 从哪个文件中种找
        • 举例:
        • 在这里插入图片描述

    🚏 2、Linux软件安装

        详细内容阅读请移步到本链接

    🚏 3、项目部署

    🚀 手工部署项目

    • 1、在IDEA中开发SpringBoot项目并打成jar包

    • 2、将jar包长传到Linux服务器

      • mkdir /usr/local/app 创建项目,将jar包放入到此目录
    • 3、启动SpringBoot程序

      • java -jar 项目名.jar
    • 4、确认防火墙的端口开放

    • 5、改为后台运行SpringBoot程序,并将日志输出到日志文件

      • 目前程序运行的问题

        • 线上程序不会采用控制台霸屏的形式运行程序,而是将程序在后台运行

        • 线上程序不会将日志输出到控制台,而是输出到日志文件,方便运维查阅信息

        • nohup命令:英文全称no hang up(不挂起),用于不挂断地运行指定命令,退出终端不会影响程序的运行

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

          参数说明:

          Command:要执行的命令

          Arg:一些参数,可以指定输出文件

          &:让命令在后台运行

          举例:

          • nohup java -jar demo6-1.0.0.jar &> 瑞吉外卖.log & 解释:后台运行java-jar命令,并将日志输出到瑞吉外卖日志文件
    • 6、提示SpringBoot程序

      • ps -ef |grep ‘java -jar’
      • kill -9 进程号

    🚄 通过shell脚本自动部署项目

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Fjj3CNXf-1662172403197)(%E7%91%9E%E5%90%89%E5%A4%96%E5%8D%96.assets/image-20220902152431238.png)]

    🚬 1、在Linux中安装Git

    [root@localhost ~]# yum list git  # 列出git安装包
    [root@localhost ~]# yum install git # 在线安装git
    
    • 1
    • 2

    使用git克隆代码

    [root@localhost ~]# cd /usr/local # 放置目录
    [root@localhost ~]# git clone https://gitee.com/gh987/reggie-linux-test.git  
    
    # 输入账号和密码 
    
    • 1
    • 2
    • 3
    • 4

    🚬 2、在Linux中安装maven

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-sCruby7h-1662172403198)(%E7%91%9E%E5%90%89%E5%A4%96%E5%8D%96.assets/image-20220902152705576.png)]

    [root@localhost 瑞吉]# tar -zxvf apache-maven-3.5.4-bin.tar.gz -C /usr/local
    
    vim /etc/profile
    
    # 添加到文件末尾
    export MAVEN_HOME=/usr/local/apache-maven-3.5.4
    export PATH=$JAVA_HOME/bin:$MAVEN_HOME/bin:$PATH
    
    source /etc/profile 								 # 重新加载
    mvn -version 										 # 查看maven 的版本信息
    vim /usr/local/apache-maven-3.5.4/conf/settings.xml  # 修改配置文件内容如下
    mkdir /usr/local/repo								 # 在 usr/local 下创建 repo目录 	
    <localRepository>/usr/local/repo</localRepository>   # repo目录作为maven 的本地仓库目录
    
    # 配置阿里镜像
    <mirror>
        <id>alimaven</id>
        <mirrorOf>central</mirrorOf>
        <name>aliyun maven</name>
        <url>http://maven.aliyun.com/nexus/content/repositories/central/</url>
    </mirror>
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-WAPMjRLR-1662172403199)(%E7%91%9E%E5%90%89%E5%A4%96%E5%8D%96.assets/image-20220902215805254.png)]

    🚬 3、编写Shell脚本(拉取代码、编译、打包、启动)

        Shell脚本(shell script),是一种Linux系统中的脚本程序。

        使用Shell脚本编程跟JavaScript、Java编程一样,只要有一个能编写代码的文本编辑器和一个能解释执行的脚本解释器就可以了。

        对于Shell脚本编写不作为本课程重点内容,直接使用课程资料中提供的脚本文件bootStart.sh即可。

        存放脚本目录:/usr/local/sh;    文件名:bootStart.sh

    #!/bin/sh
    echo =================================
    echo  自动化部署脚本启动
    echo ================================= # 类似于java中System.out.println();
    
    echo 停止原来运行中的工程
    # 如果原先 reggie-linux-test 程序是运行状态 需要先停止 在从git仓库中拉取最新的数据,在重新编译打包
    APP_NAME=reggie-linux-test # 定义了一个变量叫APP_NAME
     
    # 查找进程 赋值 tpid
    tpid=`ps -ef|grep $APP_NAME|grep -v grep|grep -v kill|awk '{print $2}'`
    if [ ${tpid} ]; then 		# 找到 执行then后面的代码
        echo 'Stop Process...'  # 现在控制台输出 Stop Process...(准备结束进程)
        kill -15 $tpid			# 结束掉这个进程号 -15 和-9相比 相对温柔一些 -9强制
    fi
    sleep 2 					# 睡眠 2s钟
    # 再一次查询 双保险 强制结束
    tpid=`ps -ef|grep $APP_NAME|grep -v grep|grep -v kill|awk '{print $2}'`
    if [ ${tpid} ]; then
        echo 'Kill Process!'
        kill -9 $tpid
    else
        echo 'Stop Success!'
    fi
    
    echo 准备从Git仓库拉取最新代码
    cd /usr/local/reggie-linux-test  # 拉取文件的位置
    
    echo 开始从Git仓库拉取最新代码
    git pull
    echo 代码拉取完成
    
    echo 开始打包
    output=`mvn clean package -Dmaven.test.skip=true` # 先清理 之后在打包 跳过单元测试
    
    cd target # 进入 target 目录
    
    echo 启动项目
    nohup java -jar reggie-linux-test.jar &> helloworld.log &
    echo 项目启动完成
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40

    🚬 4、为用户授予执行Shell脚本的权限

        chmod(英文全拼:change mode)命令是控制用户对文件的权限的命令

        Linux中的权限分为:读(r)、写(w)、执行(x)三种权限

        Linux的文件调用权限分为三级:文件所有者(Owner)、用户组(Group)、其它用户(Other Users)

        只有文件的所有者和超级用户可以修改文件或目录的权限

        要执行Shell脚本需要有对此脚本文件的执行权限,如果没有则不能执行

    [root@localhost sh]# ll # 查看一下权限
    total 4
    -rw-r--r--. 1 root root 1206 Sep  2 07:13 bootStart.sh
    [root@localhost sh]# ./bootStart.sh # 可以看出没有执行的权限
    -bash: ./bootStart.sh: Permission denied
    
    [root@localhost sh]# chmod 777 bootStart.sh # 权限授权(读写可执行)
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-oo3izz1O-1662172403199)(%E7%91%9E%E5%90%89%E5%A4%96%E5%8D%96.assets/image-20220902221926543.png)]

    在这里插入图片描述

    🚬 5、设置静态ip

    [root@localhost ~]# cd /etc/sysconfig/network-scripts/
    
    [root@localhost network-scripts]# vim ifcfg-ens33
    
    • 1
    • 2
    • 3

    BOOTPROTO=static
    IPADDR=192.168.28.100
    NETMASK=255.255.255.0
    NM_CONTROLLED=no

    DNS1=8.8.8.8
    DNS2=8.8.4.4

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-8tyL13wY-1662191432429)(%E7%91%9E%E5%90%89%E5%A4%96%E5%8D%96.assets/image-20220903154740621.png)]

    🚬 6、重启网络服务

    [root@localhost ~]# systemctl restart network
    
    [root@localhost ~]#
    
    • 1
    • 2
    • 3

    注意:重启完网络服务后ip地址已经发生了改变,此时XShell已经连接不上Linux系统,需要创建一个新连接才能连接到Linux。

    🚬 Linux链接到Gitee(Gitee设置私有仓库)重点

        公开仓库可以直接拉取

        解决私有仓库拉取输入Gitee账号密码问题

    # 1、配置本地账户密码:
    [root@localhost /]# git config --global user.name "xxxx"
    [root@localhost /]# git config --global user.email "xxxxxxxqq.com"
    # 2、查看
    [root@localhost /]# git config --list --global
    user.name=xxxx
    user.email=xxxxxxxqq.com
    
    # 3、配置公钥,输入如下,邮箱和刚才一致即可
    [root@localhost /]# ssh-keygen -t ed25519 -C "xxxxxxxqq@qq.com"
    # 4、按回车三次
    Generating public/private ed25519 key pair.
    Enter file in which to save the key (/root/.ssh/id_ed25519): 
    Created directory '/root/.ssh'.
    Enter passphrase (empty for no passphrase): 
    Enter same passphrase again: 
    Your identification has been saved in /root/.ssh/id_ed25519.
    Your public key has been saved in /root/.ssh/id_ed25519.pub.
    The key fingerprint is:
    SHA256:hinumxXNbmjHmbeeWCjyuiP/NQ/62hKS+lbBN4BYr7Y 2495140780@qq.com
    The key's randomart image is:
    +--[ED25519 256]--+
    |   o..           |
    |  . ...          |
    |     ...         |
    |     .o=o        |
    |    +.+oS.       |
    |   oooo* +       |
    |   .Eo=.% o      |
    |  o.o*.B B o     |
    |   =O*=++.=      |
    +----[SHA256]-----+
    [root@localhost /]# 
    
    # 5、查看公钥目录
    [root@localhost /]# cat /root/.ssh/id_ed25519.pub
    ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIIhoL0tnX1vQrbqMDyagLUMeYwAYZa2DMvKFgeg2CRcA 2495140780@qq.com
    
    # 6、把公钥复制到仓库里,添加ssh公钥
    
    # 7、测试能否链接上
    [root@localhost /]# ssh -T git@gitee.com
    The authenticity of host 'gitee.com (212.64.63.215)' can't be established.
    ECDSA key fingerprint is SHA256:FQGC9Kn/eye1W8icdBgrQp+KkGYoFgbVr17bmjey0Wc.
    ECDSA key fingerprint is MD5:27:e5:d3:f7:2a:9e:eb:6c:93:cd:1f:c1:47:a3:54:b1.
    Are you sure you want to continue connecting (yes/no)? yes
    Warning: Permanently added 'gitee.com,212.64.63.215' (ECDSA) to the list of known hosts.
    Hi gonghe! You've successfully authenticated, but GITEE.COM does not provide shell access.
    
    # 8、创建一个目录用于接收
    [root@localhost ~]# mkdir reggie-linux-test 
    
    # 9、进入这个目录,输入如下,初始化这个目录。
    [root@localhost ~]# cd reggie-linux-test
    [root@localhost reggie-linux-test]# git init
    
    # 10、开始绑定远程仓库,输入如下,这里使用ssh绑定,也有https绑定方法
    git remote add origin + ssh下载地址
    [root@localhost reggie-linux-test]# git remote add origin git@gitee.com:gh987/reggie-linux-test.git
    
    # 11、拉取分支最新代码。
    [root@localhost reggie-linux-test]# git pull origin master
    
    # 12、关联本地master和远程master,简化命令
    [root@localhost reggie-linux-test]# git branch --set-upstream-to=origin/master master
    Branch master set up to track remote branch master from origin. # 分支主机设置为从起点跟踪远程分支主机
    
    # 13、如果不小心本地目录误删操作,可以使用如下命令,回退到当前版本。
    [root@localhost reggie-linux-test]# git reset --hard HEAD
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49
    • 50
    • 51
    • 52
    • 53
    • 54
    • 55
    • 56
    • 57
    • 58
    • 59
    • 60
    • 61
    • 62
    • 63
    • 64
    • 65
    • 66
    • 67
    • 68
    • 69

    在这里插入图片描述

  • 相关阅读:
    [附源码]java毕业设计大学生家教服务推荐系统
    设计模式之(10)——桥接模式
    SuffixArray练习题
    74道高级Java面试合集,java开发模式面试题
    java计算机毕业设计深州市特色蜜桃产业电子商务系统源程序+mysql+系统+lw文档+远程调试
    人工智能|深度学习——基于Xception算法模型实现一个图像分类识别系统
    python 自(3)1使用urlencode多个参数请求使用 2百度翻译post请求post无法添加路径 3百度翻译全部数据获取 4豆瓣get请
    Qt实战案例(59)——利用QTimer类实现定时器功能
    iOS_Crash 四:的捕获和防护
    javascripe :验证是否已存在
  • 原文地址:https://blog.csdn.net/gh_xiaohe/article/details/126644343