首页 > 系统相关 >Linux

Linux

时间:2023-09-20 16:14:18浏览次数:45  
标签:文件 -- echo usr Linux local 目录

前言

原文作者: Kyle Violet

文章链接: https://cyborg2077.github.io/2022/10/15/LinuxStu/

版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 Kyle's Blog

本文章为在原文基础上,进行稍作修改的文章,版权声明如上。


本文为瑞吉外卖项目的后续内容,在此特别感谢黑马程序员的课程

32:16:10 黑马程序员 Java 项目实战《瑞吉外卖》,轻松掌握 springboot + mybatis plus 开发核心技术的真 java 实战项目 254.3 万 7.6 万视频 黑马程序员


Linux 安装

关于安装这里就不过多介绍了,安装版本是CentOS 7,选择最小安装即可

网卡配置

由于启动服务器的时候未加载网卡,所以这里我们要手动修改一下配置文件

  • 进入到对应的目录

    bash
    cd /etc/sysconfig/network-scripts
    
  • 编辑

    ifcfg-ens33
    

    文件

    bash
    vi ifcfg-ens33
    
  • 输入i进入编辑

  • 修改ONBOOT=yes

  • 按 ESC

  • 输入:wq保存并退出

  • 输入ip addr,查看到类似下图的 ip 地址即可
    img

安装 SSH 连接工具

  • 为啥要安装这个呢?
    • 因为实际工作的时候,Linux 操作系统都是安装在物理机上,而不是像我们现在使用的虚拟机
    • 所以我们需要 SSH 连接工具,远程连接到物理机上
  • 这里安装的是FinalShell,具体的安装与连接操作,这里就不过多叙述了
  • 成功连接之后的效果如图
    img

Linux 的目录结构

img

目录 含义
/bin 存放二进制可执行文件
/boot 存放系统引导时使用的各种文件
/dev 存放设备文件
/etc 存放系统配置文件
/home 存放系统用户的文件
/lib 存放程序运行所需的共享库和内核模块
/opt 额外安装的可选应用程序包所放置的位置
/root 超级用户目录
/sbin 存放二进制可执行文件,只有 root 用户才能访问
/tmp 存放临时文件
/usr 存放系统应用程序
/var 存放运行时需要改变数据的文件,例如日志文件

Linux 常用命令

Linux 命令常用技巧

  • Tab 键自动补全
  • 连续按两次 Tab 键,给出操作提示
  • 使用上下箭头快速调出曾经使用过的命令
  • 使用 Clear 命令或者快捷键 Ctrl+L 实现清屏

Linux 命令格式

  • Linux 命令格式如下

    bash
    command [-options] [parameter]
    

    说明:

    • command:命令名
    • [-options]:选项,可用来对命令进行控制,也可以省略
    • [parameter]:传给命令的参数,可以是 0 个,1 个或多个

    注意:

    • []代表可选命令名
    • 选项,参数之间需要用空格进行分隔

文件目录操作命令

ls

  • 作用:显示指定目录下的内容

  • 语法:

    ls [-al] [dir]
    

    说明:

    • -a:显示所有文件及目录(以.开头的隐藏文件也会列出)
    • -l:除文件名外,还会讲文件的形态、权限、拥有者、文件大小等详细信息列出

    注意:由于我们使用ls命令时,经常会加上-l选项,所以 Linux 很人性化的为我们提供了ll命令来作为ls -l命令的简写,使用ll -a也可以替代ls -al

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:动态读取文件末尾内容并显示,通常用于日志文件的内容输出

    举例:

    • tail /etc/profile
      
      • 显示/etc目录下的profile文件末尾 10 行的内容
    • tail -20 /etc/profile
      
      • 显示/etc目录下的profile文件末尾 20 行的内容
    • tail -f /kyle/blog.log
      
      • 动态读取/kyle目录下的blog.log文件末尾内容并显示

mkdir

  • 作用:创建目录

  • 语法:

    mkdir[-p] dirName
    

    说明:

    • -p:确保目录名称存在,不存在的就创建一个。通过此选项,可以实现多层目录同时创建

    举例:

    • mkdir linuxCast
      
      • 在当前目录下,建立一个名为 linuxCast 的子目录
    • mkdir-p linuxCast/test
      
      • 在工作目录下的 linuxCast 目录中建立一个名为 test 的子目录,若 linuxCast 目录不存在,则建立一个

rmdir

  • 作用:删除空目录

  • 语法:

    rmdir [-p] dirName
    

    说明:

    • -p:当子目录被删除后使父目录为空目录的话,则一并删除

    举例:

    • rmdir linuxCast删除名为 linuxCast 的空目录
    • rmdir -p linuxCast/test删除 linuxCast 目录中名为 test 的子目录,若 test 目录删除后 linuxCast 目录变为空目录,则也被删除
    • rmdir linuxCast*删除名称以 linuxCast 开始的空目录

rm

  • 作用:删除文件或者目录

  • 语法:

    rm [-rf] name
    

    说明:

    • -r:将目录及目录中所有文件(目录)逐一删除,即递归删除
    • -f:无需确认,直接删除
    • name:要删除的文件/目录,支持通配符

拷贝移动命令

cp

作用:用于复制文件或目录
语法:cp [-r] source dest

说明:

  • -r:如果复制的是目录需要使用此选项,此时将复制该目录下所有的子目录和文件
  • source:要复制的资源(文件/目录)
  • dest:要移动到的位置

举例:

  • cp hello.txt linuxCast/
    
    • 将 hello.txt 复制到 linuxCast 目录中
  • cp hello.txt ./ hi.txt
    
    • 将 hello.txt 复制到当前目录,并改名为 hi.txt
  • c

    p -r linuxCast/ ./blog/
    
    • 将 linuxCast 目录和目录下所有文件复制到 blog 目录下
  • cp -r linuxCast/* ./blog/
    
    • 将 linuxCast 目录下所有文件复制 blog 目录下

mv

作用:为文件或目录改名、或将文件或目录移动到其它位置
语法:mv source dest

说明:

  • source:要移动的资源(文件/目录)
  • dest:要移动到的位置

举例:

  • mv hello.txt hi.txt
    
    • 将 hello.txt 改名为 hi.txt
  • mv hi.txt blogl
    
    • 将文件 hi.txt 移动到 blog 目录中
  • mv hi.txt blog/hello.txt
    
    • 将 hi.txt 移动到 blog 目录中,并改名为 hello.txt
  • mv linuxCast/ blogl
    
    • 如果 blog 目录不存在,将 linuxCast 目录改名为 blog
  • mv linuxCast/ blogl
    
    • 如果 blog 目录存在,将 linuxCast 目录移动到 blog 目录中

打包压缩命令

tar

作用:对文件进行打包、解包、压缩、解压
语法:tar [-zcxvf] fileName [files]
包文件后缀为.tar表示只是完成了打包,并没有压缩
包文件后缀为.tar.gz表示打包的同时还进行了压缩,也可以用.tgz作为简写

说明:

  • -z: 代表的是 gzip,通过 gzip 命令处理文件,gzip 可以对文件压缩或者解压
  • -c: 代表的是 create,即创建新的包文件
  • -x: 代表的是 extract,实现从包文件中还原文件
  • -v: 代表的是 verbose,显示命令的执行过程
  • -f: 代表的是 file,用于指定包文件的名称
  • cx是互斥的,解压和压缩不能同时进行

举例 :

  • tar -cvf hello.tar ./*
    
    • 将当前目录下所有文件打包,打包后的文件名为 hello.tar
  • tar -czvf hello.tar.gz ./*
    
    • 将当前目录下所有文件打包并压缩,打包后的文件名为 hello.tar.gz
  • tar -zxvf hello.tar.gz
    
    • hello.tar.gz中的文件解压缩

文本编辑命令

vi

作用: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(显示行号)

查找命令

find

作用:在指定目录下查找文件
语法:find dirName -option fileName

说明:

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

举例:

  • find / -name helloworld.log
    
    • 在所有文件夹下查找 helloworld.log 文件
  • find . -name "*.java"
    
    • 在当前目录及其子目录下查找.java 结尾文件
  • find /linuxCast -name "*.java"
    
    • 在/linuxCast 目录及其子目录下查找.java 结尾的文件

grep

作用:从指定文件中查找指定的文本内容
语法:grep word fileName

说明:

  • word:查找的文本
  • fileName:从哪个文件中种找

举例:

  • grep Hello Helloworld.java
    
    • 查找 Helloworld.java 文件中出现的 Hello 字符串的位置
  • grep hello *.java
    
    • 查找当前目录中所有.java 结尾的文件中包含 hello 字符串的位置

Linux 软件安装

软件安装方式

  1. 二进制发布包安装
    • 软件已经针对具体平台编译打包发布,只要解压,修改配置即可
  2. rpm 安装
    • 软件已经按照 redhat 的包管理规范进行打包,使用 rpm 命令进行安装,不能自行解决库依赖问题
  3. yum 安装
    • 一种在线软件安装方式,本质上还是 rpm 安装,自动下载安装包并安装,安装过程中自动解决库依赖问题
  4. 源码编译安装
    • 软件以源码工程的形式发布,需要自己编译打包

安装 JDK

操作步骤:

  1. 使用 FinalShell 自带的上传工具将 jdk 的二进制发布包上传到 Linux

  2. 解压安装包,命令为

    tar -zxvf jdk-8u171-linux-x64.tar.gz -C /usr/local
    
    • 这个解压缩命令在前面也说过了,注意将 jdk 换成你自己的版本,-C /path是解压到指定目录,不过我们自己安装软件的话,一般都放在/usr/local目录下
  3. 配置环境变量,使用 vim 命令修改

    /etc/profile
    

    文件,或者使用

    echo
    

    追加文件内容,在文件末尾添加如下配置

    properties
    JAVA_HOME=/usr/local/jdk1.8.0_171
    PATH=$JAVA_HOME/bin:$PATH
    
    • 追加
      • echo 'JAVA_HOME=/usr/local/jdk1.8.0_171' >> /etc/profile
      • echo 'PATH=$JAVA_HOME/bin:$PATH' >> /etc/profile
    • 查看
      • tail /etc/profile
  4. 重新加载 profile 文件,使更改的配置立即生效

    • 命令为source /etc/profile
  5. 检查安装是否成功

    • 命令为java -version
  6. 看到 jdk 版本号则说明安装成功

    bash
    [root@localhost local]# java -version
    java version "1.8.0_171"
    Java(TM) SE Runtime Environment (build 1.8.0_171-b11)
    Java HotSpot(TM) 64-Bit Server VM (build 25.171-b11, mixed mode)
    

安装 Tomcat

操作步骤:

  1. 使用FinalShell自带的上传工具将Tomcat的二进制发布包上传到 Linux

  2. 解压安装包

    • 命令为tar -zxvf apache-tomcat-7.0.57.tar.gz-C /usr/local
  3. 进入 Tomcat 的 bin 目录启动服务,命令为sh startup.sh或者./startup.sh

  4. 验证 Tomcat 是否启动成功

    • 查看进程

      • ps -ef | grep tomcat
        
        bash
        [root@localhost bin]# ps -ef | grep tomcat
        root      71967      1  4 16:05 pts/0    00:00:02 /usr/local/jdk1.8.0_171/bin/java -Djava.util.logging.config.file=/usr/local/apache-tomcat-7.0.57/conf/logging.properties -Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager -Djava.endorsed.dirs=/usr/local/apache-tomcat-7.0.57/endorsed -classpath /usr/local/apache-tomcat-7.0.57/bin/bootstrap.jar:/usr/local/apache-tomcat-7.0.57/bin/tomcat-juli.jar -Dcatalina.base=/usr/local/apache-tomcat-7.0.57 -Dcatalina.home=/usr/local/apache-tomcat-7.0.57 -Djava.io.tmpdir=/usr/local/apache-tomcat-7.0.57/temp org.apache.catalina.startup.Bootstrap start
        root      73174  42704  0 16:06 pts/0    00:00:00 grep --color=auto tomcat
        
    • 查看日志

      • more /usr/local/ apache-tomcat-7.0.57/logs/catalina.out
      • tail -50 /usr/local/apache-tomcat-7.0.57/logs/catalina.out
  5. 停止 Tomcat

    • 运行 Tomcat 的 bin 目录中提供的停止服务的脚本文件 shutdowno.sh

      • ./shutdown.sh
      • sh shutdown.sh
    • 结束 Tomcat 进程

      • kill -9 71967

      • 注意这里的

        71967
        

        是 Tomcat 的

        进程id
        

        ,是我们上面

        查看进程
        

        查出来的

        虽然 Tomcat 服务器启动了,但是我们暂时还是无法访问的,因为防火墙是开启的,而且我们也没有开放 8080 端口,继续往下看

防火墙操作

  • 查看防火墙状态
    • systemctl status firewalld、 firewall-cmd --state
  • 暂时关闭防火墙
    • systemctl stop firewalld
  • 永久关闭防火墙
    • systemctl disable firewalld
  • 开启防火墙
    • systemctl start firewalld
  • 开放指定端口
    • firewall-cmd --zone=public --add-port=8080/tcp --permanent
  • 关闭指定端口
    • firewall-cmd --zone=public --remove-port=8080/tcp --permanent
  • 立即生效
    • firewall-cmd --reload
  • 查看开放的端口
    • firewall-cmd --zone=public --list-ports
  1. systemctl 是管理 Linux 中服务的命令,可以对服务进行启动、停止、重启、查看状态等操作
  2. firewall-cmd 是 Linux 中专门用于控制防火墙的命令
  3. 为了保证系统安全,服务器的防火墙不建议关闭
  • 查看防火墙状态,这里是 running 的

    bash
    [root@localhost ~]# firewall-cmd --state
    running
    
  • 那我们暂时关闭一下,测试能否访问 Tomcat 服务器

    bash
    [root@localhost ~]# firewall-cmd --state
    not running
    
  • 现在再开启一次 tomcat 服务器

    • image-20230628090558453
  • 防火墙关了之后就能用 windows 访问了,但是防火墙都没了,不安全
    img

  • 但是我们可以只开放一个 8080 端口

    [root@localhost ~]# firewall-cmd --zone=public --add-port=8080/tcp --permanent
    success
    
  • 并设置立即生效

    [root@localhost ~]# firewall-cmd --reload
    success
    
  • 刷新页面,尝试访问 Tomcat 服务器,依旧可以正常访问

安装 MySQL

检查冲突

检测当前系统中是否安装 MySQL 数据库

  • rpm -qa
    
    • 查询当前系统中安装的所有软件
  • rpm -qa | grep mysql
    
    • 查询当前系统中安装的名称带 mysql 的软件
  • rpm -qa | grep mariadb
    
    • 查询当前系统中安装的名称带 mariadb 的软件

RPM (Red-Hat Package Manager)RPM 软件包管理器,是红帽 Linux 用于管理和安装软件的工具

如果当前系统中已经安装有 MySQL 数据库,安装将失败。CentOS7 自带 mariadb,与 MySQL 数据库冲突

解决冲突

  • 如果发现有

    mariadb
    

    ,那么我们把它卸载掉

    • rpm -e --nodeps mariadb-libs-5.5.68-1.el7.x86_64
  • 然后看一下是不是真的卸掉了

    • rpm -qa | grep mariadb

解压 MySQL

  • 先创建要解压到的目录

    • mkdir /usr/local/mysql
  • 随后解压

    • tar -zxvf mysql-5.7.25-1.el7.x86_64.rpm-bundle.tar.gz -C /usr/local/mysql
  • 按顺序安装 rpm 包

    bash
    rpm -ivh mysql-community-common-5.7.25-1.el7.x86_64.rpm
    rpm -ivh mysql-community-libs-5.7.25-1.el7.x86_64.rpm
    rpm -ivh mysql-community-devel-5.7.25-1.el7.x86_64.rpm
    rpm -ivh mysql-community-libs-compat-5.7.25-1.el7.x86_64.rpm
    rpm -ivh mysql-community-client-5.7.25-1.el7.x86_64.rpm
    yum install net-tools
    rpm -ivh mysql-community-server-5.7.25-1.el7.x86_64.rpm --force --nodeps
    

启动 MySQL

  • 查看 MySQL 服务状态

    • systemctl status mysqld
  • 启动 MySQL 服务

    • systemctl start mysqld
  • 开机启动 mysql 服务

    • systemctl enable mysqld
  • 查看已经启动的服务

    • netstat -tunlp
    • netstat -tunlp | grep mysql
  • 查看 MySQL 进程

    • ps -df | grep mysql
      

      说明:

      • 可以设置开机时自动启动 MySQL 服务,避免每次开机都要启动 MySQL
        • systemctl enable mysqld

登录 MySQL

  • 查看日志内容中包含 password 的行信息
    • cat /var/log/mysqld.log |grep 'A temporary password is generated'
  • 根据查询到的密码来登录 MySQL
    • mysql -uroot -p
  • 登录成功之后修改密码
    • 设置密码长度最低位数
      • set global validate_password_length=4;
    • 设置密码安全等级低,便于密码可修改为 root
      • set global validate_password_policy=LOW;
    • 设置密码为 root
      • set password = password('root');
    • 开启访问权限
      • grant all on . to 'root'@'%' identified by 'root';
    • 刷新权限
      • flush privileges;

外部连接

  • 使用 Navicat 或者 SQLyog 就可以连接到我们的数据库了,主机名就是 ip 地址,用户名和密码就是刚刚设置的

  • - 开放指定端口(3306,mysql的)
      - firewall-cmd --zone=public --add-port=3306/tcp --permanent
    - 立即生效
      - firewall-cmd --reload
    - 查看开放的端口
      - firewall-cmd --zone=public --list-ports
    

安装 lrzsz

操作步骤

首先进入根目录 cd /

  1. 搜索 lrzsz 安装包
    • yum list lrzsz
  2. 使用 yum 命令在线安装
    • yum install lrzsz.x86_64

Yum(全称为 Yellow dog Updater, Modified)是一个在 Fedora 和 RedHat 以及 Cent05 中的 Shell 前端软件包管理器。基于 RPM 包管理,能够从指定的服务器自动下载 RPM 包并且安装,可以自动处理依赖关系,并且一次安装所有依赖的软件包,无须繁琐地一次次下载、安装。

  • 安装完后输入 rz ,就会跳出一个窗口,选择文件后即可上传
    • 这里我出现了根本没有弹窗现实的情况(但是问题不大)
    • 因为我用的 MobaXterm,有自带的文件上传功能,所以这个不能用也完全可以。

项目部署

手动部署

操作步骤

  1. 在 IDEA 上将项目打包成 jar 包

    • 通过 IDEA 自带的 Maven 面板的 package 指令打包即可
    • 打完的包会放在 target 目录下
  2. 将 jar 包上传到 linux 服务器

    • 最好还是创建一个对应的目录
      • mkdir /usr/local/app
      • cd /usr/local/app
    • 然后使用rz命令上传打包好的 jar 包
  3. 启动项目

    • java -jar [打包好的jar包名]
    • 我这里试着上传了前面做的瑞吉外卖的项目
      • java -jar reggie-0.0.1-SNAPSHOT.jar
  4. 检查防火墙

    • 确保

      8080
      

      3306
      

      端口是开放的

      • firewall-cmd --zone=public --list-ports
  5. 测试

    • 在浏览器访问ip:端口/路径

img

通过 Shell 脚本自动部署

操作步骤

  1. 在 Linux 安装 Git

    • 列出 git 安装包

      • yum list git
    • 在线安装 git

      • yum install git
    • 这里我直接使用瑞吉外卖(进入那个目录,git init 之后再执行下列操作。

    • 这里实现了远程仓库和本地仓库的一个绑定!

    • image-20230628161617045

    • 远程和本地关联起来之后,我需要将代码添加到本地 git 仓库上,然后提交。

    • image-20230628163308215

    • image-20230628163341492

    • push 到远程仓库

    • image-20230628163428599

    • 在远程仓库查看。

    • image-20230628163450606

    • 也可以使用 git 克隆代码(在此之前随便编写一个 boot 项目,然后 push 到仓库里,controller 层写一个 GetMapping,随便写个方法返回字符串

      Shell脚本部署测试
      

      ,方便我们启动服务器的时候查看

      • git clone [仓库地址] (这里需要保证克隆的位置是/usr/local/ ,因为后面脚本用到这个)
  2. 在 Linux 安装 Maven

    • 切换到

      /usr/local
      

      目录

      • cd /usr/local
    • 上传 maven 的安装包

      • 使用rz命令
    • 解压到当前位置

      • tar zxvf apache-maven-3.5.4-bin.tar.gz
    • 编辑配置文件

      /etc/profile
      
      • vim /etc/profile

      • vim 没有下载的话,用 vi 也可以。

      • 加入以下两行配置

        export MAVEN_HOME=/usr/local/apache-maven-3.5.4
        export PATH=$JAVA_HOME/bin:$MAVEN_HOME/bin:$PATH
        
    • 编辑 maven 的

      settings.xml
      
      • 创建目录

        • mkdir /usr/local/repo
      • 进入到对应目录修改文件

        •     cd /usr/local/apache-maven-3.5.4/conf
          
          • vim settings.xml

          • settings
            

            标签里面加上这句话设置仓库位置(其实在上面有个位置可以专门放这个的,看看就好)

            /usr/local/repo

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

    • 先创建对应目录(这里的 vi bootStart.sh 就是把脚本内容复制进去)
    • image-20230711204627462

    这部分暂时不需要我们自己写,体验一下用 Shell 脚本部署就好了

    • helloworld 版本--原版
    #!/bin/sh
    echo =================================
    echo  自动化部署脚本启动
    echo =================================
    
    echo 停止原来运行中的工程
    APP_NAME=helloworld
    
    tpid=`ps -ef|grep $APP_NAME|grep -v grep|grep -v kill|awk '{print $2}'`
    if [ ${tpid} ]; then
        echo 'Stop Process...'
        kill -15 $tpid
    fi
    sleep 2
    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/HelloWorld
    
    echo 开始从Git仓库拉取最新代码
    git pull
    echo 代码拉取完成
    
    echo 开始打包
    output=`mvn clean package -Dmaven.test.skip=true`
    
    cd target
    
    echo 启动项目
    nohup java -jar HelloWorld-1.0-SNAPSHOT.jar &> helloworld.log &
    echo 项目启动完成
    
    • 瑞吉版本(只需要把脚本的所有 helloworld 改成自己项目名即可)
    #!/bin/sh
    echo =================================
    echo  自动化部署脚本启动
    echo =================================
    
    echo 停止原来运行中的工程
    APP_NAME=reggie_myself
    
    tpid=`ps -ef|grep $APP_NAME|grep -v grep|grep -v kill|awk '{print $2}'`
    if [ ${tpid} ]; then
        echo 'Stop Process...'
        kill -15 $tpid
    fi
    sleep 2
    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_myself
    
    echo 开始从Git仓库拉取最新代码
    git pull
    echo 代码拉取完成
    
    echo 开始打包
    output=`mvn clean package -Dmaven.test.skip=true`
    
    cd target
    
    echo 启动项目
    nohup java -jar reggie_myself-1.0-SNAPSHOT.jar &> reggie_myself.log &
    echo 项目启动完成
    
  4. 为用户授予执行 Shell 脚本的权限

    1. image-20230711203112203
    2. 7 表示 rwx 三个权限都有,现在我们把权限都给了方便测试
    • chmod 777 bootStart.sh
  5. 执行 Shell 脚本

    • ./bootStart.sh
  6. 执行完成咯(第一执行会慢一点~)

    1. image-20230711204217030
  7. 看看能否正常访问

    1. image-20230711204147897
  8. 设置静态 ip(可选)

    • 首先进入到对应目录

      • cd /etc/sysconfig/network-scripts/
    • 然后编辑

      ifcfg-ens33
      

      文件

      • 首先安装个 vim,不安装用 vi 也行(sudo yum install -y vim)

      • vim ifcfg-ens33

      • 修改添加以下内容(改成你自己的子网 IP)

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

        DNS1=8.8.8.8
        DNS2=8.8.4.4

  9. 重启网络服务

    • systemctl restart network

再次访问!

就可以啦!

标签:文件,--,echo,usr,Linux,local,目录
From: https://www.cnblogs.com/Lovi/p/17717511.html

相关文章

  • LINUX下Subversion安装配置
    Subversion1.3.2安装以及配置1.Subrsion安装#tarxvzfSubversion-1.3.2.tar.gz#cdSubversion-1.3.2#./configure--with-apxs=/usr/local/apache2/bin/apxs--prefix=/usr/local/subversion#make#makeinstall2.Subversion的建立与使用仓库使用$mkdir/var/repos......
  • Linux中find命令的prune参数探究
     记得很久之前找过prune的参数使用,应急用了之后没有记录,但过了一段时间就会忘记,这次趁机找了一圈,包括Google-aosp里面的用法也对比参照了一下。 参考https://www.jianshu.com/p/e0a9fb35601a 发现描述基本没问题,使用上还有些差异,特此记录一下:<以下主要是 -prune-o-p......
  • linux查看系统硬件信息的命令
    linux查看系统硬件信息的命令   系统和硬件  #cat/etc/redhat-release  //查看操作系统版本(redhat和centos) #head-n1/etc/issue   //查看操作系统版本 #lsb_release-a       //操作系统版本 #uname-a         //......
  • linux系统硬件配置查看方法
    一:查看cpumore/proc/cpuinfo|grep"modelname"grep"modelname"/proc/cpuinfo如果觉得需要看的更加舒服grep"modelname"/proc/cpuinfo|cut-f2-d: 二:查看内存grepMemTotal/proc/meminfogrepMemTotal/proc/meminfo|cut-f2-d:free-m|grep&qu......
  • Linux中iptables设置详细
    无论如何,iptables是一个需要特别谨慎设置的东西,万一服务器不在你身边,而你贸然设置导致无法SSH,那就等着被老板骂吧,呵呵。。。一下内容是为了防止这种情况发生而写的,当然很初级,不过一般服务器也够用了:1.首先介绍一下指令和相关配置文件1.启动指令:serviceiptablesstart2.重......
  • 关于.Net 6.0 在Linux ,Docker容器中,不安装任何依赖就生成图形验证码!!!!!!!!!!!
    在.NetFramework时代,我们生成验证码大多都是用System.Drawing。在.Net6中使用也是没有问题的。但是,System.Drawing却依赖于WindowsGDI+。为了实现跨平台,我陷入了沉思!! 微软推荐使用SkiaSharp进行替代,所以就开始了,踩坑之旅首先,安装SkiaSharp 编写好图形生成代码。......
  • linux查看文件夹大小、文件数量的方法
    查看文件数量及大小ls-l|grep"^-"|wc-l或find./company-typef|wc-l查看某文件夹下文件的数量,包括子文件夹里的。ls-lR|grep"^-"|wc-l查看某文件夹下文件夹的数量,包括子文件夹里的。ls-lR|grep"^d"|wc-l以上的命令解释:ls-l长列表输出该目录下文件信息(注意这里......
  • linux 中实现部分取反
     001、测试文件(实现仅提取==1185==和其他不包含==数字==的行)[root@pc1test2]#lsa.txt[root@pc1test2]#cata.txt##测试文件==1185==abcadoiafa==1120==asvgaojfajsdfja==3875==yuerdded==1130==afsdalj==1185== 002、sed实现[root@pc1test2]#ls......
  • Linux 动态库符号冲突
    问题起源在Linux下编译动态库的时候,所有的符号默认都是导出的,也就是动态库中的函数名,类名等,在外部都是可见的。当程序引用多个动态库时,由于各个动态库可能属于不同的团队来开发,不同团队使用相同的第三方库的可能性也是有的(例如openssl,libcurl,cjson等),不同的团队使用的第三方......
  • linux关闭终端,后台程序不退出
    你要退出终端会话时,要是存在被停止的进程,会出现警告信息。但如果使用了后台进程,只有某些终端仿真器会在你退出终端会话前提醒你还有后台作业在运行。 如果希望运行在后台模式的脚本在登出控制台后能够继续运行,我再一篇文章中看到,有方法可以实现。有时你会想在终端......