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

news2025/1/4 19:17:21

### 分析 `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` 重启限制,可以帮助解决该问题。在排查过程中,查看系统日志和手动运行命令能够提供更多的调试信息,帮助我们定位具体问题并快速修复。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2270245.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Crosslink-NX应用连载(12):如何复用特殊功能管脚

作者:Hello,Panda 大家早上好。 昨天有朋友私信我,如何复用Crosslink-NX的特殊功能引脚如PROGRAMN、DONE、INITN诸如这些。熊猫君在这里简单介绍下: 以LIFCL-33U-8CTG104C为例,我们建立一个简单的指示灯LED周期闪烁的工程&…

go项目使用gentool生成model的gen.go问题

Gen Tool 是一个没有依赖关系的二进制文件,可以用来从数据库生成结构。 使用方法: go install gorm.io/gen/tools/gentoollatest在项目根目录,执行连接的数据库中指定某几张表结构生成数据库model层 gentool -dsn "root:123456tcp(localhost:330…

家政上门小程序如何创建?家政服务怎么能少了小程序帮手

在如今这个“忙到没时间打扫”的时代,家政服务变得越来越受欢迎。为了提高效率、减少沟通成本,很多家政公司都已经开始借助小程序的力量。那么,家政上门小程序到底该如何创建呢?小程序又是如何帮助家政服务更好地满足客户需求的呢?本文将为…

破解密码

rhel8/centos8 重置 root 密码 方法 1 : rd.break 第 1 步 重启系统,在下图所示界面按 e 键 第2步 找到linux这行,末尾空格后 输入 rd.break 第3步 查看,可选步骤 这里 sysroot 是以只读的形式挂载的,所以要以可读可…

本地小主机安装HomeAssistant开源智能家居平台打造个人AI管家

文章目录 前言1. 添加镜像源2. 部署HomeAssistant3. HA系统初始化配置4. HA系统添加智能设备4.1 添加已发现的设备4.2 添加HACS插件安装设备 5. 安装cpolar内网穿透5.1 配置HA公网地址 6. 配置固定公网地址 前言 大家好!今天我要向大家展示如何将一台迷你的香橙派Z…

自学记录鸿蒙API 13:实现多目标识别Object Detection

起步:什么叫多目标识别? 无论是生活中的动物识别、智能相册中的场景分类,还是工业领域的检测任务,都能看到多目标识别的身影。这次,我决定通过学习HarmonyOS最新的Object Detection API(API 13&#xff09…

javaEE-多线程进阶-JUC的常见类

juc:指的是java.util.concurrent包,该包中加载了一些有关的多线程有关的类。 目录 一、Callable接口 FutureTask类 参考代码: 二、ReentrantLock 可重入锁 ReentrantLock和synchronized的区别: 1.ReentantLock还有一个方法&#xff1a…

fpga系列 HDL:ModelSim显示模拟波形+十进制格式数值(临时方法和设置持久化的默认值)

模拟波形 FPGA中使用数字滤波器时,可通过观察模拟波形更好地查看滤波效果。可以通过ModelSim中的波形格式设置来实现更直观的波形显示。右键波形->Format-> Analog 效果 数值格式显示 不同的数值格式显示:右键波形->Radix-> Decimal 效果…

Linux 中 sysctl 和 systemctl 有什么区别?

sysctl 和 systemctl 是两个不同的命令行工具,它们在 Linux 系统中分别用于不同的目的。理解这两个命令的区别对于系统管理和配置非常重要。 1. sysctl 功能 用途:sysctl 用于动态地修改内核参数,这些参数控制着操作系统的某些行为。配置文…

【ArcGISPro/GeoScenePro】检查并处理高程数据

数据 https://arcgis.com/sharing/rest/content/items/535efce0e3a04c8790ed7cc7ea96d02d/data 数字高程模型 (DEM) 是一种栅格,可显示地面或地形的高程。 数字表面模型 (DSM) 是另一种高程栅格,可显示表面的高度,例如建筑物或树冠的顶部。 您需要准备 DEM 和 DSM 以供分析…

Redis数据库主要数据结构类型

Redis数据库提供了丰富多样的数据结构类型,以满足不同场景下的数据存储需求。以下是Redis中的主要数据结构类型: 一、五种基础数据结构 字符串(String) 简介:字符串是Redis最基本的数据类型,可以存储字符串…

基于Springboot + vue实现的校园周边美食探索及分享平台

🥂(❁◡❁)您的点赞👍➕评论📝➕收藏⭐是作者创作的最大动力🤞 💖📕🎉🔥 支持我:点赞👍收藏⭐️留言📝欢迎留言讨论 🔥🔥&…

Oracle Dataguard(主库为 Oracle 11g 单节点)配置详解(1):Oracle Dataguard 概述

Oracle Dataguard(主库为 Oracle 11g 单节点)配置详解(1):Oracle Dataguard 概述 目录 Oracle Dataguard(主库为 Oracle 11g 单节点)配置详解(1):Oracle Data…

mapbox基础,测面功能实现

👨‍⚕️ 主页: gis分享者 👨‍⚕️ 感谢各位大佬 点赞👍 收藏⭐ 留言📝 加关注✅! 👨‍⚕️ 收录于专栏:mapbox 从入门到精通 文章目录 一、🍀前言1.1 ☘️mapboxgl.Map 地图对象1.2 ☘️Turf 框架二、🍀测面功能实现1. ☘️实现思路2. ☘️代码样例一、🍀…

基于下垂控制的构网变换器功率控制【微电网变流器】【Simulink】

目录 主要内容 理论研究 整体模型 PQ计算模块 功率控制模块 PWM反馈模块 结果一览 下载链接 主要内容 该仿真针对微电网中分布式电源接入后产生的谐波影响,除了污染网络外,还会恶化微电网变流器输出电流,为了消除谐波影响&a…

2025差旅平台推荐:一体化降本30%

医药行业因其高度专业化的特点,同时在运营过程中又极为依赖供应链和销售网络,因此差旅管理往往成为成本控制的重要环节。本期,我们以差旅平台分贝通签约伙伴——某知名药企为例,探讨企业如何通过差旅一体化管理,在全流…

【漫话机器学习系列】027.混淆矩阵(confusion matrix)

混淆矩阵(Confusion Matrix) 混淆矩阵是机器学习中评估分类模型性能的一种工具,特别是在多类别分类问题中。它通过对比模型预测结果和真实标签,帮助我们理解模型的分类效果。 1. 混淆矩阵的结构 混淆矩阵通常是一个二维表格&am…

【AIGC】 ChatGPT实战教程:如何高效撰写学术论文引言

💥 欢迎来到我的博客!很高兴能在这里与您相遇! 首页:GPT-千鑫 – 热爱AI、热爱Python的天选打工人,活到老学到老!!!导航 - 人工智能系列:包含 OpenAI API Key教程, 50个…

redis的学习(二)

4 哈希表 哈希类型中的映射关系通常称为field-value,⽤于区分Redis整体的键值对(key-value), 注意这⾥的value是指field对应的值,不是键(key)对应的值, 4.1 操作命令 hset&#xff…

IT运维的365天--024 闲置路由器关闭了dhcp,如何知道它的IP是啥

有时候各种原因,我们关闭了路由器的Dhcp,比如需要获取的无线IP和有线同一个网段的情况。时间久了,如果没做标记,大部分时候就会忘了路由器原来设置的是什么IP,没有路由器的对应IP,自然也无法进路由器后台去…