当前位置: 首页 > news >正文

博客系统笔记总结 2( Linux 相关)

Linux 基本使用和程序部署

image-20250218185323384

基本命令

文件操作

显示当前目录下的文件

ls:显示当前目录下的文件

ll:以列表的形式展示,包括隐藏文件

image-20250218185641586
进入目录 && 显示当前路径

cd:进入目录(后面跟相对路径或者绝对路径)

./ 表示当前目录 …/ 表示上级目录

pwd : 显示当前路径

image-20250221233737652

image-20250221233943658

创建文件夹 && 创建文件

mkdir : 创建文件夹(后面跟文件名)

mkdir -p : 创建多级目录

image-20250222002359182

touch : 创建文件(后面跟文件名)

上传 && 下载

rz : 上传文件

sz : 下载(后面跟文件名)

image-20250221235048192

上传文件 也可以将 要上传的文件 直接拖到终端里。

查看文件内容

cat : 查看文件(后面跟文件名)直接打开全文。退出后文件内容仍显示在屏幕上。

more : 查看文件(后面跟文件名)显示一页。退出后文件内容仍显示在屏幕上。 按空格进入下一页,按 b 进入上一页。按 ctrl + c 结束。

结束的一些套路:

​ ctrl + c 结束。

​ 两次 ctrl + c 。

​ exit

​ 文件相关:

​ :q!

​ :q

less : 查看文件 (后面跟文件名)显示一页。退出后文件内容不留在屏幕上。 page up / page down 翻页。

/ : 进入文件后,按 / 进行搜索(/ 后面跟你要搜索的内容)

:q : 退出文件

head : 查看文件,查看开头 n 行,head 后面跟数字 可以手动指定 查看行数。

tail : 查看文件,查看最后 n 行,head 后面跟数字 可以手动指定 查看行数。

删除文件

rm : 删除文件

rm -r : 删除多级目录,目录里面的文件也会删掉。

image-20250222002548767

编辑文件内容

vi : 进入文件

i : 进入编辑模式

ESC : 退出编辑模式

:w : 保存

:q : 退出

:wq : 保存并退出

:q! : 强制退出

:wq! : 强制保存并退出

复制文件

cp [文件名] [目的地] : 复制文件。

image-20250222115700914

移动文件

mv [文件名] [目的地] : 移动文件。这条命令也可以达到重命名的效果。下图表示把 cat.jpg 重命名为 cat2.jpg。

image-20250223202841186

查找文件

grep [要找的文件] [在哪个文件中找] : 查找文件

image-20250223203316519

grep 不仅仅能查文件,它最主要的功能是查找。想查什么用它就对了。

进程相关

查看当前系统上运行的进程

ps [参数] : 查看当前系统上运行的进程

ps aux : 查看所有进程。(显示内容更多)

ps aux : grep “进程名”

ps aux : grep “进程 id”

ps -ef : 查看所有进程。(显示一部分内容)

管道简单介绍

| : 表示把 “|” 前面命令的输出,作为"|"后面命令的输入。

例:输入 ps -ef | grep “redis” 这条命令前半部分的含义是 查看当前系统上运行的所有进程。后半部分的含义是 查找 带 “redis” 的文件。 组合起来就是 查找当前系统上运行的进程名字带 “redis” 的进程。输出:

image-20250223204120735

查看系统网络状态

netstat [参数] : 查看系统网络状态

image-20250223205211734

搭建 Java 部署环境

apt 介绍

apt 是啥呢?它就跟手机上的应用商店一样,你可以在上面下载各种软件。

在 linux 中主要有两种下载软件包的方法,一个是去官网下载,另一个就是用 apt 下载。

需要注意的是:在使用大多数 apt 命令时,必须要以 sudo 权限的用户身份运行。

sudo apt list : 列出 apt 中所有的包。可以使用 grep 命令过滤输出。

sudo apt-get update : 更新软件包数据库。一般在安装软件之前,都需要先更新一下 apt 数据库。

sudo apt install 包名称 : 添加软件包

sudo apt remove 包名称 : 删除软件包,不会删除配置文件。

sudo apt purge 包名称 : 删除软件包,会删除配置文件,一般推荐使用这个删。

image-20250223212156353

JDK 安装

  1. sudo apt-get update : 更新软件包数据库。一般在安装软件之前,都需要先更新一下 apt 数据库。

  2. 查找 JDK 包

    apt list | grep “jdk”

  3. 安装 JDK

    sudo apt install openjdk-17-jdk

  4. 查看是否安装完成

    java -version

    image-20250224184837084

MySQL 安装

  1. 查找安装包

    apt list | grep “mysql-server”

  2. 安装 MySQL

    sudo apt install mysql-server

  3. 查看 MySQL 状态

    sudo systemctl status mysql

MySQL 安全相关设置

你按照好 MySQL 之后,默认的 MySQL 设置是不安全的,为了保证数据安全,我们需要做如下设置。

运行: sudo mysql_secure_installation

运行后会弹出如下文字:

image-20250224191054651

这是在让你选择密码的安全级别,数字 0、1、2 分别表示低中高,我们选 2。

这是在问你是否要删除默认用户,根据自己需求选择。

image-20250224191318192

这是在问你,这台机器上的 MySQL 是否只在当前机器上运行。

image-20250224191601231

选 Y,表示别的机器无法远程连接你的 MySQL数据库。

MySQL 默认会生成一个 test 数据库,这是在问你要不要删除。

image-20250224192036249

这是在问是否让你的设置生效。

image-20250224192138808

设置密码
  1. 连接 MySQL 服务器

    sudo mysql

  2. 使用 alter user 命令修改密码

    alter user ‘root’@‘localhost’ identified with mysql_native_password by ‘密码’;

设置完成密码后,后续再进入 MySQL 的命令:

mysql -u用户名 -p密码

MySQL 卸载
  1. 停止 MySQL

    sudo systemctl stop mysql

  2. 卸载 MySQL

    sudo apt-get remove --purge mysql-server mysql-client mysql-common

  3. 删除 MySQL 配置文件和数据

    sudo rm -rf /etc/mysql /var/lib/mysql

  4. 清理残留文件和目录

    sudo apt-get autoremove

    sudo apt-get autoclean

  5. 检查是否有残留

    dpkg --list | grep -i mysql-*

  6. 移除相关包

    apt-get purge mysql*

  7. 验证卸载结果

    mysql --version

部署 Web 项目到 Linux

什么是部署?

把程序安装到生产环境上,这个过程就称为部署。

  • 开发环境(dev):开发人员使用的环境。
  • 测试环境(test):测试人员使用的环境。
  • 生产环境(prod):真实用户使用的环境。

环境配置

数据准备

把之前的数据库建表的脚本,放在服务器上运行,建立同样的表结构。

配置文件修改

程序部署到服务器,通常需要修改配置文件。比如:关闭日志打印,修改密码等等。

当然可以在你的开发环境上修改好,之后在送到服务器上。但是这样很不方便,需要改来改去。

为了方便部署,我们可以为不同的平台 创建各自的配置文件。

image-20250224193513828

dev 表示开发环境。 prod 表示生产环境

这么多配置文件,到底哪个文件会生效呢?

答: 只有 application.yml 生效,其余配置文件都不会生效。

如何让其他配置文件生效呢?

我们在 application.yml 中输入如下代码:

image-20250224193914120

此时 application-prod.yml 就会生效啦。

需要注意的是 application-名称.yml 是固定格式,必须这样写!!!

但是这样还是很麻烦,还需要手写 prod。

我们可以进一步的把它设置成变量。

打开 pom 文件,按照如下设置:

image-20250224195615327

application.yml 中这样设置:

image-20250224195707341

刷新 Maven。

设置好了,那该怎么选择用哪个呢?

image-20250224200022000

打包

先检查你的 pom 文件中是否有以下配置。

image-20250224200714798

没有的话在 里面加上。

	<build><plugins><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId><configuration><excludes><exclude><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId></exclude></excludes></configuration></plugin></plugins></build>

如果没有该插件,那么你打的包中不会有第三方依赖的东西。也就是这些:

image-20250224200948235

都做好以后,点击右侧的 Maven,点击 package。

image-20250224201056215

打好的文件在:

image-20250224201952480

image-20250224202248504

如果显示:

image-20250224202429751

去下载对应的包即可:

apt install lrzsz

完成!

image-20250224202531176

启动 .jar 包

java -jar 包名

但是这样启动后,一旦你把命令框关掉,你的程序也就关掉了。

让你的程序在后台启动
nohup java -jar 程序包名 &

查看滚动日志

tail -f 日志名称 

常见问题

  1. 无法访问

    输入以下命令来查看端口号是否启动。

    netstat -nltp|grep 端口号
    

    image-20250224213345028

    输入以下命令来查看所有 java 程序

    ps -ef|grep java
    
  2. 确认端口号是否开放

  3. 确认程序是否可以正常访问

    curl http://127.0.0.1:8080/blog_login.html

  4. 确认防火墙是否打开(默认是关闭的状态)

    sudo ufw status
    

    如果防火墙打开了,还需要再打开防火墙的端口号。如果不知道防火墙怎么弄,上网查资料,或者找云服务器的客服。

  5. 服务器未启动

    1. 查看端口号是否正确
    2. 查看日志

杀掉进程

  1. 查找进程 id

    在日志上直接找

    image-20250224214554806

    用命令查找:

    netstat -nltp|grep 8080
    

    或者

    ps -ef|grep java
    
  2. 杀掉进程

    kill 进程id
    


本文到这里就结束啦~

在这里插入图片描述

相关文章:

博客系统笔记总结 2( Linux 相关)

Linux 基本使用和程序部署 基本命令 文件操作 显示当前目录下的文件 ls&#xff1a;显示当前目录下的文件 ll&#xff1a;以列表的形式展示&#xff0c;包括隐藏文件 进入目录 && 显示当前路径 cd&#xff1a;进入目录&#xff08;后面跟相对路径或者绝对路径&…...

计算机毕业设计SpringBoot+Vue.js电影评论网站系统(源码+文档+PPT+讲解)

温馨提示&#xff1a;文末有 CSDN 平台官方提供的学长联系方式的名片&#xff01; 温馨提示&#xff1a;文末有 CSDN 平台官方提供的学长联系方式的名片&#xff01; 温馨提示&#xff1a;文末有 CSDN 平台官方提供的学长联系方式的名片&#xff01; 作者简介&#xff1a;Java领…...

精美登录注册UI,登录页面设计模板

精美登录注册UI,登录页面设计模板 引言 在网页设计中,按钮是用户交互的重要元素之一。一个炫酷的按钮特效不仅能提升用户体验,还能为网页增添独特的视觉吸引力。今天,我们将通过CSS和JavaScript来实现一个“精美登录注册UI,登录页面设计模板”。该素材呈现了数据符号排版…...

《Linux系统编程篇》共享内存(Linux 进程间通信(IPC))——基础篇

文章目录 引言什么是共享内存System V 共享内存 API 引入1. shmget2. shmat3. shmdt4. shmctl5. 结构体 shmid_ds 开始实操注意 结束 今天的你有没有前进一小步呢 ——家驹(StrangeHead) 引言 那么共享内存&#xff0c;我们如何去使用他呢&#xff0c;先来听笔者啰嗦一段话吧…...

【EB-03】 AUTOSAR builder与EB RTE集成

AUTOSAR builder与EB RTE集成 1. Import Arxml files to Tresos2. Run MultiTask Script3. Add Components3.1 Run EcuExtractCreator Script4. Mapping Component to Partitions5. Event Mapping/Runnables Mapping to Tasks6. Port Connect7. Run SvcAs_Trigger Script8. Ver…...

HTML——前端基础1

目录 前端概述 前端能做的事情​编辑 两步完成一个网页程序 前端工具的选择与安装 HTML HTML5介绍 HTML5的DOCTYPE声明 HTML基本骨架 文字标签 标题之标签 标签之段落、换行、水平线 标签之图片 标签之超文本链接 标签之文本 列表标签之有序列表 列表标签之无序…...

AI回答:Linux C/C++编程学习路线

Linux C/C编程学习路线需要结合Linux系统特性和C/C语言的特点&#xff0c;以下是一个系统化的学习路径&#xff0c;适合从初学者到进阶者&#xff1a; 第一阶段&#xff1a;Linux基础 Linux操作系统基础 学习Linux基本命令&#xff1a;ls、cd、mkdir、rm、grep、find等。 理解…...

螺旋数字矩阵

螺旋数字矩阵 真题目录: 点击去查看 E 卷 100分题型 题目描述 疫情期间,小明隔离在家,百无聊赖,在纸上写数字玩。他发明了一种写法: 给出数字个数n和行数m(0 < n ≤ 999,0 < m ≤ 999),从左上角的1开始,按照顺时针螺旋向内写方式,依次写出2,3…n,最终形成一…...

Jupyter Notebook切换虚拟环境(Kernel管理)

我们在使用Jupyter Notebook的时候&#xff0c;打开文件发现只有一个Python3(ipykernel)&#xff0c;我们自己在conda中创建的虚拟环境为什么没有显示出来&#xff0c;今天我就来和大家一起讨论一下&#xff01; 在 Jupyter Notebook 中&#xff0c;kernel 是执行代码的核心。管…...

linux下软件安装、查找、卸载

目录 常见安装方式有三种&#xff1a; 1.源码安装。 2.rpm安装方式。 3.yum/apt工具级别安装。 对于前两种安装方式&#xff0c;因为软件可能有依赖关系&#xff08;安装的软件依赖于某些库&#xff0c;而这些库又依赖于某些库&#xff0c;这些都需要手动安装&#xff09;…...

vuetify项目添加代理跨域请求

vuetify项目添加代理转发后端接口实现跨域请求 配置一&#xff08;推荐&#xff09;配置二 在项目根目录下找到vite.config.mts文件并在里面的server下配置代理&#xff0c; 具体实现代码如下&#xff1a; 配置一&#xff08;推荐&#xff09; server: {port: 3000,// 配置代理…...

H5 火柴人科目三和GitHub获取仓库点星星的用户列表发生了艺术的碰撞

先看效果&#xff0c;代码写的比较乱&#xff0c;有待优化 效果 https://linyisonger.github.io/H5.Examples/?name./089.%E7%9C%8B%E6%98%9F%E6%98%9F%E7%9A%84%E8%88%9E%E8%80%85.html 思路 看起来很简单&#xff0c;实则也不是很难&#xff0c;就是需要思路要打开。 一…...

【Azure 架构师学习笔记】- Azure Databricks (12) -- Medallion Architecture简介

本文属于【Azure 架构师学习笔记】系列。 本文属于【Azure Databricks】系列。 接上文 【Azure 架构师学习笔记】- Azure Databricks (11) – UC搭建 前言 使用ADB 或者数据湖&#xff0c;基本上绕不开一个架构“Medallion”&#xff0c; 它使得数据管理更为简单有效。ADB 通过…...

基础知识|原型在什么时候用和类的区别

在 JavaScript 中&#xff0c;原型和类是两个密切相关但有所不同的概念。理解这两者之间的差异有助于更好地掌握面向对象编程&#xff08;OOP&#xff09;在 JavaScript 中的实现。 1. 原型&#xff08;Prototype&#xff09; 原型是 JavaScript 中实现继承和共享行为的核心机…...

【FFmpeg】拉流

概述 项目实践中涉及到使用ffmpeg进行推流和拉流操作&#xff0c;本文主要对一些基本操作做一个学习总结&#xff0c;后续再学习其源码架构&#xff1b;总结方法遵循实现功能配合函数具体实现 基本使用 拉流 avformat_network_init();//日志输出等级set_ffmpeg_log_level();…...

LangChain构建行业知识库实践:从架构设计到生产部署全指南

文章目录 引言:行业知识库的进化挑战一、系统架构设计1.1 核心组件拓扑1.2 模块化设计原则二、关键技术实现2.1 文档预处理流水线2.2 混合检索增强三、领域适配优化3.1 医学知识图谱融合3.2 检索结果重排序算法四、生产环境部署4.1 性能优化方案4.2 安全防护体系五、评估与调优…...

解决jupyter notebook不是内部或外部命令问题

我们打开cmd有的时候&#xff0c;输入jupyter notebook&#xff0c;发现会提示jupyter 不是内部或外部命令&#xff0c;也不是可运行的程序或批处理文件。遇到这个问题我们应该怎么解决呢? 没错就是添加环境变量&#xff01; Step01&#xff1a;在电脑中找到jupyter notebook的…...

MySQL----case的用法

在 MySQL 中&#xff0c;CASE 表达式是一个用于条件判断的功能&#xff0c;可以根据不同的条件返回不同的结果。CASE 表达式通常用于 SELECT 查询语句中&#xff0c;可以在 SQL 中灵活地进行条件判断和数据转换。CASE 有两种基本的语法形式&#xff1a; 简单 CASE 表达式&…...

Unity XR-XR Interaction Toolkit开发使用方法(十)组件介绍(XR Interaction Group)

目录 一、插件介绍 二、主要组件 XR Interaction Manager XR Controller XR Interactor XR Direct Interactor XR Ray Interactor XR Socket Interactor XR Gaze Interactor 三、XR Interaction Group 1、组件介绍 2、核心功能与特点 优先级与冲突管理 动态交互切…...

深入理解 并查集LRUCaChe

并查集&LRUCaChe 个人主页&#xff1a;顾漂亮 文章专栏&#xff1a;Java数据结构 1.并查集的原理 在一些应用问题中&#xff0c;需要将n个不同的元素划分成一些不相交的集合。开始时&#xff0c;每个元素自成一个单元素集合&#xff0c;然后根据一定规律将归于同一组元素的…...

SpringBoot-17-MyBatis动态SQL标签之常用标签

文章目录 1 代码1.1 实体User.java1.2 接口UserMapper.java1.3 映射UserMapper.xml1.3.1 标签if1.3.2 标签if和where1.3.3 标签choose和when和otherwise1.4 UserController.java2 常用动态SQL标签2.1 标签set2.1.1 UserMapper.java2.1.2 UserMapper.xml2.1.3 UserController.ja…...

Chapter03-Authentication vulnerabilities

文章目录 1. 身份验证简介1.1 What is authentication1.2 difference between authentication and authorization1.3 身份验证机制失效的原因1.4 身份验证机制失效的影响 2. 基于登录功能的漏洞2.1 密码爆破2.2 用户名枚举2.3 有缺陷的暴力破解防护2.3.1 如果用户登录尝试失败次…...

UDP(Echoserver)

网络命令 Ping 命令 检测网络是否连通 使用方法: ping -c 次数 网址ping -c 3 www.baidu.comnetstat 命令 netstat 是一个用来查看网络状态的重要工具. 语法&#xff1a;netstat [选项] 功能&#xff1a;查看网络状态 常用选项&#xff1a; n 拒绝显示别名&#…...

三体问题详解

从物理学角度&#xff0c;三体问题之所以不稳定&#xff0c;是因为三个天体在万有引力作用下相互作用&#xff0c;形成一个非线性耦合系统。我们可以从牛顿经典力学出发&#xff0c;列出具体的运动方程&#xff0c;并说明为何这个系统本质上是混沌的&#xff0c;无法得到一般解…...

【C++从零实现Json-Rpc框架】第六弹 —— 服务端模块划分

一、项目背景回顾 前五弹完成了Json-Rpc协议解析、请求处理、客户端调用等基础模块搭建。 本弹重点聚焦于服务端的模块划分与架构设计&#xff0c;提升代码结构的可维护性与扩展性。 二、服务端模块设计目标 高内聚低耦合&#xff1a;各模块职责清晰&#xff0c;便于独立开发…...

【学习笔记】深入理解Java虚拟机学习笔记——第4章 虚拟机性能监控,故障处理工具

第2章 虚拟机性能监控&#xff0c;故障处理工具 4.1 概述 略 4.2 基础故障处理工具 4.2.1 jps:虚拟机进程状况工具 命令&#xff1a;jps [options] [hostid] 功能&#xff1a;本地虚拟机进程显示进程ID&#xff08;与ps相同&#xff09;&#xff0c;可同时显示主类&#x…...

2023赣州旅游投资集团

单选题 1.“不登高山&#xff0c;不知天之高也&#xff1b;不临深溪&#xff0c;不知地之厚也。”这句话说明_____。 A、人的意识具有创造性 B、人的认识是独立于实践之外的 C、实践在认识过程中具有决定作用 D、人的一切知识都是从直接经验中获得的 参考答案: C 本题解…...

JVM虚拟机:内存结构、垃圾回收、性能优化

1、JVM虚拟机的简介 Java 虚拟机(Java Virtual Machine 简称:JVM)是运行所有 Java 程序的抽象计算机,是 Java 语言的运行环境,实现了 Java 程序的跨平台特性。JVM 屏蔽了与具体操作系统平台相关的信息,使得 Java 程序只需生成在 JVM 上运行的目标代码(字节码),就可以…...

4. TypeScript 类型推断与类型组合

一、类型推断 (一) 什么是类型推断 TypeScript 的类型推断会根据变量、函数返回值、对象和数组的赋值和使用方式&#xff0c;自动确定它们的类型。 这一特性减少了显式类型注解的需要&#xff0c;在保持类型安全的同时简化了代码。通过分析上下文和初始值&#xff0c;TypeSc…...

第7篇:中间件全链路监控与 SQL 性能分析实践

7.1 章节导读 在构建数据库中间件的过程中&#xff0c;可观测性 和 性能分析 是保障系统稳定性与可维护性的核心能力。 特别是在复杂分布式场景中&#xff0c;必须做到&#xff1a; &#x1f50d; 追踪每一条 SQL 的生命周期&#xff08;从入口到数据库执行&#xff09;&#…...