分析服务器 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安装的某种原因(破解),不支持硬件支持包的安装,相信也有很多相同情况的朋友,所以记录一下我是如何离线安装的ÿ…...
使用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)。数据写入主设备会出现在从设备,反之亦然。这允许一个进程通过主设备与另一个进程ÿ…...
阿里云 人工智能与机器学习
阿里云的 人工智能(AI)与机器学习(ML) 服务为企业提供了全面的AI解决方案,帮助用户在多个行业实现数据智能化,提升决策效率,推动业务创新。阿里云通过先进的技术和丰富的工具,支持用…...
HTML 显示器纯色亮点检测工具
HTML 显示器纯色亮点检测工具 相关资源文件已经打包成html等文件,可双击直接运行程序,且文章末尾已附上相关源码,以供大家学习交流,博主主页还有更多Html相关程序案例,秉着开源精神的想法,望大家喜欢&#…...
【漏洞分析】UDF提权漏洞——CVE-2016-6662-MySQL ‘malloc_lib’变量重写命令执行
0x00 前言 最近在做渗透笔记,其中有一个靶机在getshell后,需要进行提权。发现靶机使用root启动的mysql服务,那么尝试使用UDF提权。于是在提权成功后,花了一天时间特意搜了一下整个UDF提权的漏洞原理和利用,加深理解。…...
Prompt Tuning、P-Tuning、Prefix Tuning的区别
一、Prompt Tuning、P-Tuning、Prefix Tuning的区别 1. Prompt Tuning(提示调优) 核心思想:固定预训练模型参数,仅学习额外的连续提示向量(通常是嵌入层的一部分)。实现方式:在输入文本前添加可训练的连续向量(软提示),模型只更新这些提示参数。优势:参数量少(仅提…...
Swift 协议扩展精进之路:解决 CoreData 托管实体子类的类型不匹配问题(下)
概述 在 Swift 开发语言中,各位秃头小码农们可以充分利用语法本身所带来的便利去劈荆斩棘。我们还可以恣意利用泛型、协议关联类型和协议扩展来进一步简化和优化我们复杂的代码需求。 不过,在涉及到多个子类派生于基类进行多态模拟的场景下,…...
智能在线客服平台:数字化时代企业连接用户的 AI 中枢
随着互联网技术的飞速发展,消费者期望能够随时随地与企业进行交流。在线客服平台作为连接企业与客户的重要桥梁,不仅优化了客户体验,还提升了企业的服务效率和市场竞争力。本文将探讨在线客服平台的重要性、技术进展、实际应用,并…...
MODBUS TCP转CANopen 技术赋能高效协同作业
在现代工业自动化领域,MODBUS TCP和CANopen两种通讯协议因其稳定性和高效性被广泛应用于各种设备和系统中。而随着科技的不断进步,这两种通讯协议也正在被逐步融合,形成了一种新型的通讯方式——开疆智能MODBUS TCP转CANopen网关KJ-TCPC-CANP…...
Unity | AmplifyShaderEditor插件基础(第七集:平面波动shader)
目录 一、👋🏻前言 二、😈sinx波动的基本原理 三、😈波动起来 1.sinx节点介绍 2.vertexPosition 3.集成Vector3 a.节点Append b.连起来 4.波动起来 a.波动的原理 b.时间节点 c.sinx的处理 四、🌊波动优化…...
CVE-2020-17519源码分析与漏洞复现(Flink 任意文件读取)
漏洞概览 漏洞名称:Apache Flink REST API 任意文件读取漏洞CVE编号:CVE-2020-17519CVSS评分:7.5影响版本:Apache Flink 1.11.0、1.11.1、1.11.2修复版本:≥ 1.11.3 或 ≥ 1.12.0漏洞类型:路径遍历&#x…...
PHP 8.5 即将发布:管道操作符、强力调试
前不久,PHP宣布了即将在 2025 年 11 月 20 日 正式发布的 PHP 8.5!作为 PHP 语言的又一次重要迭代,PHP 8.5 承诺带来一系列旨在提升代码可读性、健壮性以及开发者效率的改进。而更令人兴奋的是,借助强大的本地开发环境 ServBay&am…...
破解路内监管盲区:免布线低位视频桩重塑停车管理新标准
城市路内停车管理常因行道树遮挡、高位设备盲区等问题,导致车牌识别率低、逃费率高,传统模式在复杂路段束手无策。免布线低位视频桩凭借超低视角部署与智能算法,正成为破局关键。该设备安装于车位侧方0.5-0.7米高度,直接规避树枝遮…...
tomcat指定使用的jdk版本
说明 有时候需要对tomcat配置指定的jdk版本号,此时,我们可以通过以下方式进行配置 设置方式 找到tomcat的bin目录中的setclasspath.bat。如果是linux系统则是setclasspath.sh set JAVA_HOMEC:\Program Files\Java\jdk8 set JRE_HOMEC:\Program Files…...
0x-3-Oracle 23 ai-sqlcl 25.1 集成安装-配置和优化
是不是受够了安装了oracle database之后sqlplus的简陋,无法删除无法上下翻页的苦恼。 可以安装readline和rlwrap插件的话,配置.bahs_profile后也能解决上下翻页这些,但是很多生产环境无法安装rpm包。 oracle提供了sqlcl免费许可,…...
