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

分析服务器 systemctl 启动gozero项目报错的解决方案

### 分析 `systemctl start beisen.service` 报错

在 Linux 系统中,`systemctl` 是管理系统和服务的主要工具。当我们尝试重启某个服务时,如果服务启动失败,`systemctl` 会输出错误信息,帮助我们诊断和解决问题。

本文将通过一个实际的错误日志示例来分析 `systemctl start beisen.service` 报错的原因,并提供解决方案。

#### 错误日志

```bash
● beisen.service - BeiSen Go Application
   Loaded: loaded (/etc/systemd/system/beisen.service; disabled; vendor preset: disabled)
   Active: failed (Result: start-limit) since Thu 2025-01-02 11:37:49 CST; 1s ago
  Process: 17832 ExecStart=/home/wwwroot/go/beisen/beisen-binary -f etc/beisen-api.yaml (code=exited, status=203/EXEC)
 Main PID: 17832 (code=exited, status=203/EXEC)

Jan 02 11:37:49 iZ2zeburdbmlp75s387gulZ systemd[1]: Unit beisen.service entered failed state.
Jan 02 11:37:49 iZ2zeburdbmlp75s387gulZ systemd[1]: beisen.service failed.
Jan 02 11:37:49 iZ2zeburdbmlp75s387gulZ systemd[1]: beisen.service holdoff time over, scheduling restart.
Jan 02 11:37:49 iZ2zeburdbmlp75s387gulZ systemd[1]: Stopped BeiSen Go Application.
Jan 02 11:37:49 iZ2zeburdbmlp75s387gulZ systemd[1]: start request repeated too quickly for beisen.service
Jan 02 11:37:49 iZ2zeburdbmlp75s387gulZ systemd[1]: Failed to start BeiSen Go Application.
Jan 02 11:37:49 iZ2zeburdbmlp75s387gulZ systemd[1]: Unit beisen.service entered failed state.
Jan 02 11:37:49 iZ2zeburdbmlp75s387gulZ systemd[1]: beisen.service failed.
```

#### 错误分析

从错误日志中,我们可以看到以下几个关键信息:

1. **服务加载状态**:
   ```
   Loaded: loaded (/etc/systemd/system/beisen.service; disabled; vendor preset: disabled)
   ```
   服务文件 `beisen.service` 已正确加载,但当前状态为 `disabled`,表示该服务没有设置为开机自动启动。

2. **服务当前状态**:
   ```
   Active: failed (Result: start-limit) since Thu 2025-01-02 11:37:49 CST; 1s ago
   ```
   服务的状态为 `failed`,且失败的原因是 `start-limit`。这表明服务在短时间内多次尝试启动失败,导致 `systemd` 达到了重启限制。

3. **进程状态**:
   ```
   Process: 17832 ExecStart=/home/wwwroot/go/beisen/beisen-binary -f etc/beisen-api.yaml (code=exited, status=203/EXEC)
   ```
   服务启动时,尝试执行 `/home/wwwroot/go/beisen/beisen-binary -f etc/beisen-api.yaml`,但是进程退出,并返回状态码 `203/EXEC`。`203/EXEC` 错误通常表示执行文件时出错,通常是由于以下原因:
   - 文件不存在
   - 没有执行权限
   - 配置文件路径错误

4. **服务重启尝试**:
   ```
   start request repeated too quickly for beisen.service
   ```
   由于服务多次启动失败,`systemd` 判断服务启动请求过于频繁,因此停止进一步的重启尝试。

5. **服务状态**:
   ```
   Unit beisen.service entered failed state.
   ```
   服务进入了“失败”状态,无法继续运行。

#### 错误代码 `203/EXEC`

`203/EXEC` 是 `systemd` 返回的退出状态,表示执行文件时出现了问题。常见的原因包括:

- **文件路径错误**: 如果 `beisen-binary` 文件的路径不正确或文件不存在,启动会失败。
- **权限问题**: 目标执行文件可能没有正确的执行权限,导致无法启动。
- **依赖文件缺失**: 如果启动文件依赖其他文件(例如配置文件 `beisen-api.yaml`),而这些文件无法找到或权限不足,也会导致启动失败。

#### 解决方案

针对以上问题,以下是一些可能的解决步骤:

1. **检查文件路径**:
   确保 `/home/wwwroot/go/beisen/beisen-binary` 文件存在,并且路径正确。可以使用 `ls` 命令检查:
   ```bash

   ls -l /home/wwwroot/go/beisen/beisen-binary


   

2. **检查执行权限**:
   确保 `beisen-binary` 文件具有执行权限。如果没有执行权限,可以通过以下命令授予权限:
   ```bash

   sudo chmod +x /home/wwwroot/go/beisen/beisen-binary


  

3. **检查配置文件路径**:
   确保配置文件 `etc/beisen-api.yaml` 存在且路径正确。如果该文件相对路径存在问题,尝试使用绝对路径来指定配置文件。

4. **检查服务文件**:
   检查 `/etc/systemd/system/beisen.service` 中 `ExecStart` 命令的配置,确保路径没有错误,且没有遗漏的依赖文件。

5. **查看系统日志**:
   使用 `journalctl` 查看更详细的日志,帮助定位问题的根源:
   ```bash

   sudo journalctl -u beisen.service


   ```

6. **手动启动服务**:
   在命令行直接运行启动命令,检查是否有任何输出或错误信息,帮助定位问题:
   ```bash

   /home/wwwroot/go/beisen/beisen-binary -f /home/wwwroot/go/beisen/etc/beisen-api.yaml

7. **检查 `start-limit` 设置**:
   如果服务频繁失败并被限制重启,可以修改 `systemd` 的服务配置文件,调整重启策略。可以在 `beisen.service` 中添加 `StartLimitIntervalSec` 和 `StartLimitBurst` 来调整重启限制。例如:

   ```ini
   [Unit]
   StartLimitIntervalSec=500
   StartLimitBurst=5
   ```

   这样,`systemd` 会在 500 秒内允许 5 次启动尝试。

8. **重新加载 `systemd` 配置**:
   修改完服务文件后,记得重新加载 `systemd` 配置,不然启动会有警告:
   ```bash

   sudo systemctl daemon-reload


   ```

9. **新启动服务**:
   修改配置后,新启动服务:

   sudo systemctl start beisen.service

#### 总结

`systemctl restart beisen.service` 报错的关键原因是服务启动失败,退出状态为 `203/EXEC`,通常是由于文件路径错误、权限不足或配置问题引起的。通过检查文件路径、权限、配置文件,以及调整 `systemd` 重启限制,可以帮助解决该问题。在排查过程中,查看系统日志和手动运行命令能够提供更多的调试信息,帮助我们定位具体问题并快速修复。

相关文章:

分析服务器 systemctl 启动gozero项目报错的解决方案

### 分析 systemctl start beisen.service 报错 在 Linux 系统中,systemctl 是管理系统和服务的主要工具。当我们尝试重启某个服务时,如果服务启动失败,systemctl 会输出错误信息,帮助我们诊断和解决问题。 本文将通过一个实际的…...

大模型LLM-Prompt-OPTIMAL

1 OPTIMAL OPTIMAL 具体每项内容解释如下: Objective Clarity(目标清晰):明确定义任务的最终目标和预期成果。 Purpose Definition(目的定义):阐述任务的目的和它的重要性。 Information Gat…...

3. 多线程(1) --- 创建线程,Thread类

文章目录 前言1. API2. 创建线程2.1. 继承 Thread类2.2. 实现 Runnable 接口2.3. 匿名内部类2.4. lambda2.5.其他方法 3. Thread类及其常见的方法和属性3.1. Thread 的常见构造方法3.2. Thread 的常见属性3.3. start() --- 启动一个线程3.4. 中断一个线程3.5. 等待线程3.6. 休眠…...

简单的jmeter数据请求学习

简单的jmeter数据请求学习 1.需求 我们的流程服务由原来的workflow-server调用wfms进行了优化,将wfms服务操作并入了workflow-server中,去除了原来的webservice服务调用形式,增加了并发处理,现在想测试模拟一下,在一…...

智能水文:ChatGPT等大语言模型如何提升水资源分析和模型优化的效率

大语言模型与水文水资源领域的融合具有多种具体应用,以下是一些主要的应用实例: 1、时间序列水文数据自动化处理及机器学习模型: ●自动分析流量或降雨量的异常值 ●参数估计,例如PIII型曲线的参数 ●自动分析降雨频率及重现期 ●…...

民宿酒店预订系统小程序+uniapp全开源+搭建教程

一.介绍 一.系统介绍 基于ThinkPHPuniappuView开发的多门店民宿酒店预订管理系统,快速部署属于自己民宿酒店的预订小程序,包含预订、退房、WIFI连接、吐槽、周边信息等功能。提供全部无加密源代码,支持私有化部署。 二.搭建环境 系统环境…...

计算机网络掩码、最小地址、最大地址计算、IP地址个数

一、必备知识 1.无分类地址IPV4地址网络前缀主机号 2.每个IPV4地址由32位二进制数组成 3. /15这个地址表示网络前缀有15位,那么主机号32-1517位。 4.IP地址的个数:2**n (n表示主机号的位数) 5.可用(可分配)IP地址个数&#x…...

Mac中配置vscode(第一期:python开发)

1、终端中安装 xcode-select --install #mac的终端中安装该开发工具 xcode-select -p #显示当前 Xcode 命令行工具的安装路径注意:xcode-select --install是在 macOS 上安装命令行开发工具(Command Line Tools)的关键命令。安装的主要组件包括:C/C 编…...

软件项目体系建设文档,项目开发实施运维,审计,安全体系建设,验收交付,售前资料(word原件)

软件系统实施标准化流程设计至关重要,因为它能确保开发、测试、部署及维护等各阶段高效有序进行。标准化流程能减少人为错误,提升代码质量和系统稳定性。同时,它促进了团队成员间的沟通与协作,确保项目按时交付。此外,…...

计算机网络--路由表的更新

一、方法 【计算机网络习题-RIP路由表更新-哔哩哔哩】 二、举个例子 例1 例2...

CDN防御如何保护我们的网络安全?

在当今数字化时代,网络安全成为了一个至关重要的议题。随着网络攻击的日益频繁和复杂化,企业和个人都面临着前所未有的安全威胁。内容分发网络(CDN)作为一种分布式网络架构,不仅能够提高网站的访问速度和用户体验&…...

matlab离线安装硬件支持包

MATLAB 硬件支持包离线安装 本文章提供matlab硬件支持包离线安装教程,因为我的matlab安装的某种原因(破解),不支持硬件支持包的安装,相信也有很多相同情况的朋友,所以记录一下我是如何离线安装的&#xff…...

使用virtualenv创建虚拟环境

下载 virtualenv pip install virtualenv 创建虚拟环境 先进入想要的目录 一般为 /envs virtualenv 文件名 --python解释器的版本 激活虚拟环境 .\虚拟项目的文件夹名称\Scripts\activate 退出虚拟环境 deactivate...

Java链表

链表(Linked List)是一种线性数据结构,它由一系列节点组成,每个节点包含两部分:一部分为用于储存数据元素,另部分是一种引用(指针),指向下一个节点。 这种结构允许动态地添加和删除元素,而不需要像数组那种大规模的数…...

Zero to JupyterHub with Kubernetes 下篇 - Jupyterhub on k8s

前言:纯个人记录使用。 搭建 Zero to JupyterHub with Kubernetes 上篇 - Kubernetes 离线二进制部署。搭建 Zero to JupyterHub with Kubernetes 中篇 - Kubernetes 常规使用记录。搭建 Zero to JupyterHub with Kubernetes 下篇 - Jupyterhub on k8s。 官方文档…...

解决 Tomcat 跨域问题 - Tomcat 配置静态文件和 Java Web 服务(Spring MVC Springboot)同时允许跨域

解决 Tomcat 跨域问题 - Tomcat 配置静态文件和 Java Web 服务(Spring MVC Springboot)同时允许跨域 Tomcat 配置允许跨域Web 项目配置允许跨域Tomcat 同时允许静态文件和 Web 服务跨域 偶尔遇到一个 Tomcat 部署项目跨域问题,因为已经处理…...

在C语言中使用伪终端与bash交互

了解伪终端概念: 伪终端(PTY)由一对设备组成:主设备(master)和从设备(slave)。数据写入主设备会出现在从设备,反之亦然。这允许一个进程通过主设备与另一个进程&#xff…...

阿里云 人工智能与机器学习

阿里云的 人工智能(AI)与机器学习(ML) 服务为企业提供了全面的AI解决方案,帮助用户在多个行业实现数据智能化,提升决策效率,推动业务创新。阿里云通过先进的技术和丰富的工具,支持用…...

HTML 显示器纯色亮点检测工具

HTML 显示器纯色亮点检测工具 相关资源文件已经打包成html等文件,可双击直接运行程序,且文章末尾已附上相关源码,以供大家学习交流,博主主页还有更多Html相关程序案例,秉着开源精神的想法,望大家喜欢&#…...

【漏洞分析】UDF提权漏洞——CVE-2016-6662-MySQL ‘malloc_lib’变量重写命令执行

0x00 前言 最近在做渗透笔记,其中有一个靶机在getshell后,需要进行提权。发现靶机使用root启动的mysql服务,那么尝试使用UDF提权。于是在提权成功后,花了一天时间特意搜了一下整个UDF提权的漏洞原理和利用,加深理解。…...

conda相比python好处

Conda 作为 Python 的环境和包管理工具,相比原生 Python 生态(如 pip 虚拟环境)有许多独特优势,尤其在多项目管理、依赖处理和跨平台兼容性等方面表现更优。以下是 Conda 的核心好处: 一、一站式环境管理&#xff1a…...

vscode里如何用git

打开vs终端执行如下: 1 初始化 Git 仓库(如果尚未初始化) git init 2 添加文件到 Git 仓库 git add . 3 使用 git commit 命令来提交你的更改。确保在提交时加上一个有用的消息。 git commit -m "备注信息" 4 …...

NXP S32K146 T-Box 携手 SD NAND(贴片式TF卡):驱动汽车智能革新的黄金组合

在汽车智能化的汹涌浪潮中,车辆不再仅仅是传统的交通工具,而是逐步演变为高度智能的移动终端。这一转变的核心支撑,来自于车内关键技术的深度融合与协同创新。车载远程信息处理盒(T-Box)方案:NXP S32K146 与…...

RabbitMQ入门4.1.0版本(基于java、SpringBoot操作)

RabbitMQ 一、RabbitMQ概述 RabbitMQ RabbitMQ最初由LShift和CohesiveFT于2007年开发,后来由Pivotal Software Inc.(现为VMware子公司)接管。RabbitMQ 是一个开源的消息代理和队列服务器,用 Erlang 语言编写。广泛应用于各种分布…...

【安全篇】金刚不坏之身:整合 Spring Security + JWT 实现无状态认证与授权

摘要 本文是《Spring Boot 实战派》系列的第四篇。我们将直面所有 Web 应用都无法回避的核心问题:安全。文章将详细阐述认证(Authentication) 与授权(Authorization的核心概念,对比传统 Session-Cookie 与现代 JWT(JS…...

多元隐函数 偏导公式

我们来推导隐函数 z z ( x , y ) z z(x, y) zz(x,y) 的偏导公式,给定一个隐函数关系: F ( x , y , z ( x , y ) ) 0 F(x, y, z(x, y)) 0 F(x,y,z(x,y))0 🧠 目标: 求 ∂ z ∂ x \frac{\partial z}{\partial x} ∂x∂z​、 …...

leetcode73-矩阵置零

leetcode 73 思路 记录 0 元素的位置:遍历整个矩阵,找出所有值为 0 的元素,并将它们的坐标记录在数组zeroPosition中置零操作:遍历记录的所有 0 元素位置,将每个位置对应的行和列的所有元素置为 0 具体步骤 初始化…...

stm32进入Infinite_Loop原因(因为有系统中断函数未自定义实现)

这是系统中断服务程序的默认处理汇编函数,如果我们没有定义实现某个中断函数,那么当stm32产生了该中断时,就会默认跑这里来了,所以我们打开了什么中断,一定要记得实现对应的系统中断函数,否则会进来一直循环…...

JavaScript 标签加载

目录 JavaScript 标签加载script 标签的 async 和 defer 属性,分别代表什么,有什么区别1. 普通 script 标签2. async 属性3. defer 属性4. type"module"5. 各种加载方式的对比6. 使用建议 JavaScript 标签加载 script 标签的 async 和 defer …...

云原生时代的系统设计:架构转型的战略支点

📝个人主页🌹:一ge科研小菜鸡-CSDN博客 🌹🌹期待您的关注 🌹🌹 一、云原生的崛起:技术趋势与现实需求的交汇 随着企业业务的互联网化、全球化、智能化持续加深,传统的 I…...