【supervisor】 问题处理 unix:///var/run/supervisor/supervisor.sock no such file

news2024/11/19 19:21:10

问题描述

最近笔者在配置 supervisor,希望用 supervisor 进行进程服务管理的时候遇到了一些问题,具体是:

  1. 运行 supervisorctl status 的时候遇到了 unix:///var/run/supervisor/supervisor.sock no such file 的问题。
  2. 在运行 sudo service supervisor status 的时候遇到了下面的报错
sudo service supervisor status
● supervisor.service - Supervisor process control system for UNIX
     Loaded: loaded (/lib/systemd/system/supervisor.service; enabled; vendor >
     Active: activating (auto-restart) (Result: exit-code) since Thu 2023-10->
       Docs: http://supervisord.org
    Process: 190236 ExecStart=/usr/bin/supervisord -n -c /etc/supervisor/supe>
   Main PID: 190236 (code=exited, status=2)
        CPU: 249ms

总的来说就是 supervisor 有问题。

重现过程和解决方案

查询 supervisor status 的时候发生以下报错:

sudo service supervisor status
● supervisor.service - Supervisor process control system for UNIX
     Loaded: loaded (/lib/systemd/system/supervisor.service; enabled; vendor >
     Active: activating (auto-restart) (Result: exit-code) since Thu 2023-10->
       Docs: http://supervisord.org
    Process: 190236 ExecStart=/usr/bin/supervisord -n -c /etc/supervisor/supe>
   Main PID: 190236 (code=exited, status=2)
        CPU: 249ms

根据 status 显示的信息,Supervisor 服务当前处于激活状态,并设置为自动重启。主要的 PID(进程ID)显示为 190236,表明该服务以退出代码2的状态退出。

退出代码2通常表示出现错误。为了确定具体的问题,需要检查 Supervisor 服务的日志。日志可能会提供关于为何服务无法启动的更详细信息。

可以通过运行以下命令查看 Supervisor 服务的日志:

sudo journalctl -u supervisor.service

该命令将显示与 Supervisor 服务相关的日志。查找任何错误消息或线索,以帮助确定问题所在。

日志输出如下所示:

9月 28 02:35:20 zeeland-virtual-machine systemd[1]: Started Supervisor proces>
9月 28 02:35:21 zeeland-virtual-machine supervisord[36451]: 2023-09-28 02:35:>
9月 28 02:35:21 zeeland-virtual-machine supervisord[36451]: 2023-09-28 02:35:>
9月 28 02:35:21 zeeland-virtual-machine supervisord[36451]: 2023-09-28 02:35:>
9月 28 02:35:21 zeeland-virtual-machine supervisord[36451]: 2023-09-28 02:35:>
9月 28 02:35:21 zeeland-virtual-machine supervisord[36451]: 2023-09-28 02:35:>
9月 28 03:09:14 zeeland-virtual-machine systemd[1]: Stopping Supervisor proce>
9月 28 03:09:15 zeeland-virtual-machine supervisorctl[38468]: Shut down
9月 28 03:09:15 zeeland-virtual-machine systemd[1]: supervisor.service: Deact>
9月 28 03:09:15 zeeland-virtual-machine systemd[1]: Stopped Supervisor proces>
-- Boot 4f9509fffa594d7b8b1d628356c22065 --
9月 28 03:09:36 zeeland-virtual-machine systemd[1]: Started Supervisor proces>
9月 28 03:09:37 zeeland-virtual-machine supervisord[895]: 2023-09-28 03:09:37>
9月 28 03:09:37 zeeland-virtual-machine supervisord[895]: 2023-09-28 03:09:37>
9月 28 03:09:37 zeeland-virtual-machine supervisord[895]: 2023-09-28 03:09:37>
9月 28 03:09:37 zeeland-virtual-machine supervisord[895]: 2023-09-28 03:09:37>
9月 28 03:09:37 zeeland-virtual-machine supervisord[895]: 2023-09-28 03:09:37>
9月 28 05:21:44 zeeland-virtual-machine systemd[1]: Stopping Supervisor proce>

日志中可以看到 supervisor 什么时候启动,什么时候停止,但是无法查看具体的报错信息。接下来我直接使用 supervisorctl status 查看其服务是否正常启动,运行结果如下:

unix:///var/run/supervisor/supervisor.sock no such file

可以看到,这里产生了新的错误,supervisorctl 没启动,肯定连 supervisord 都没启动起来,于是我跑到官网看文档

Image

官网的教程说使用 $BINDIR/supervisord 启动 supervisord,这里应该将 $BINDIR 替换为包含 supervisorod 可执行文件的目录的实际路径。例如,如果 supervisorord 可执行文件位于 /usr/local/bin 目录中,则命令将为 /usr/local/bin/supervisord。

输入 ls /usr/bin | grep supervisor 确认一下文件是否存在。

echo_supervisord_conf
supervisorctl
supervisord
zeeland@zeeland-virtual-machine:/etc/supervisor$ 

于是我们直接运行 /usr/bin/supervisord,这个时候我发生了如下报错:

zeeland@zeeland-virtual-machine:/var/run/supervisor$ /usr/bin/supervisord
Error: Format string 'kubectl --context %(ENV_KUBECTL_CONTEXT)s port-forward -n babel-system services/babel-controller 8080:80' for 'program:port-forward-ctrl.command' contains names ('ENV_KUBECTL_CONTEXT') which cannot be expanded. Available names: ENV_AMENT_PREFIX_PATH, ENV_COLORTERM, ENV_DBUS_SESSION_BUS_ADDRESS, ENV_DESKTOP_SESSION, ENV_DISPLAY, ENV_GDMSESSION, ENV_GIO_LAUNCHED_DESKTOP_FILE, ENV_GIO_LAUNCHED_DESKTOP_FILE_PID, ENV_GJS_DEBUG_OUTPUT, ENV_GJS_DEBUG_TOPICS, ENV_GNOME_DESKTOP_SESSION_ID, ENV_GNOME_SETUP_DISPLAY, ENV_GNOME_SHELL_SESSION_MODE, ENV_GTK_MODULES, ENV_HOME, ENV_IBUS_DISABLE_SNOOPER, ENV_IM_CONFIG_PHASE, ENV_INVOCATION_ID, ENV_JOURNAL_STREAM, ENV_LANG, ENV_LANGUAGE, ENV_LC_ADDRESS, ENV_LC_IDENTIFICATION, ENV_LC_MEASUREMENT, ENV_LC_MONETARY, ENV_LC_NAME, ENV_LC_NUMERIC, ENV_LC_PAPER, ENV_LC_TELEPHONE, ENV_LC_TIME, ENV_LD_LIBRARY_PATH, ENV_LESSCLOSE, ENV_LESSOPEN, ENV_LOGNAME, ENV_LS_COLORS, ENV_MANAGERPID, ENV_OLDPWD, ENV_PATH, ENV_PWD, ENV_PYTHONPATH, ENV_QT_ACCESSIBILITY, ENV_QT_IM_MODULE, ENV_ROS_DISTRO, ENV_ROS_LOCALHOST_ONLY, ENV_ROS_PYTHON_VERSION, ENV_ROS_VERSION, ENV_SESSION_MANAGER, ENV_SHELL, ENV_SHLVL, ENV_SSH_AGENT_LAUNCHER, ENV_SSH_AUTH_SOCK, ENV_SYSTEMD_EXEC_PID, ENV_TERM, ENV_TERMINATOR_DBUS_NAME, ENV_TERMINATOR_DBUS_PATH, ENV_TERMINATOR_UUID, ENV_USER, ENV_USERNAME, ENV_VTE_VERSION, ENV_WAYLAND_DISPLAY, ENV_XAUTHORITY, ENV_XDG_CONFIG_DIRS, ENV_XDG_CURRENT_DESKTOP, ENV_XDG_DATA_DIRS, ENV_XDG_MENU_PREFIX, ENV_XDG_RUNTIME_DIR, ENV_XDG_SESSION_CLASS, ENV_XDG_SESSION_DESKTOP, ENV_XDG_SESSION_TYPE, ENV_XMODIFIERS, ENV__, group_name, here, host_node_name, numprocs, process_num, program_name in section 'program:port-forward-ctrl' (file: '/etc/supervisor/conf.d/babel.conf')
For help, use /usr/bin/supervisord -h

这是我需要配置的端口映射,我存在了 /etc/supervisor/conf.d/babel.conf 下面,conf 里面使用了 %(ENV_KUBECTL_CONTEXT)s 作为变量。
既然没有识别到这个变量,那就把它改成一个实际的值就好了。

supervisor conf 这里是可以这样子配置变量的,但是笔者现在暂时也没有找到 %(ENV_KUBECTL_CONTEXT)s 这个变量,之前笔者到底在哪里声明的,以后有精力再找吧。

kubectl --context %(ENV_KUBECTL_CONTEXT)s port-forward -n babel-system services/babel-controller 8080:80

因此我把 conf 里面的变量删除掉之后,在运行 /usr/bin/supervisord 就可以正常启动了。

输入 sudo service supervisor status 也可以正常启动了。

zeeland@zeeland-virtual-machine:/etc/supervisor$ sudo service supervisor status
● supervisor.service - Supervisor process control system for UNIX
     Loaded: loaded (/lib/systemd/system/supervisor.service; enabled; vendor >
     Active: active (running) since Thu 2023-10-19 19:15:57 CST; 1min 26s ago
       Docs: http://supervisord.org
   Main PID: 255641 (supervisord)
      Tasks: 238 (limit: 28698)
     Memory: 327.6M
        CPU: 43.548s
     CGroup: /system.slice/supervisor.service
             ├─255641 /usr/bin/python3 /usr/bin/supervisord -n -c /etc/superv>
             ├─255708 kubectl --context kind-babelcloud port-forward -n babel>
             ├─255709 kubectl --context kind-babelcloud port-forward -n babel>
             ├─255715 kubectl --context kind-babelcloud port-forward -n babel>
             ├─255716 kubectl --context kind-babelcloud port-forward -n babel>
             ├─255723 kubectl --context kind-babelcloud port-forward -n babel>

但事实上,如果你想使用 service 进行管理,这样子是有问题的。

优化措施

/usr/bin/supervisord 是直接运行 /usr/bin/supervisord 可执行文件的方式,这将启动 supervisord 进程,并使用默认的配置文件(通常是 /etc/supervisor/supervisord.conf)来管理进程。这种方式适用于手动启动 supervisord,并且可以根据需要指定其他选项和配置文件。

实际开发中,我们一般使用 systemd 或者 service 对服务进行管理,因此下面我们使用 systemctl 对 supervisor 进行控制,

创建一个新的 Supervisor 服务文件,可以使用以下命令:

sudo nano /etc/systemd/system/supervisor.service

在文件中添加以下内容:

[Unit]
Description=Supervisor process control system
Documentation=http://supervisord.org

[Service]
ExecStart=/usr/bin/supervisord -n -c /etc/supervisor/supervisord.conf
ExecStop=/usr/bin/supervisorctl $OPTIONS shutdown
ExecReload=/usr/bin/supervisorctl $OPTIONS reload
KillMode=process
Restart=on-failure
RestartSec=50s

[Install]
WantedBy=multi-user.target

保存并关闭文件。

启动 Supervisor 服务:

运行以下命令启动 Supervisor 服务:

sudo service supervisor start

如果您希望 Supervisor 在系统启动时自动启动,可以运行以下命令:

sudo service supervisor enable

现在,您已经安装了 Supervisor 并使用 service 进行启动管理。您可以通过修改 Supervisor 配置文件来管理更多的应用程序,并使用相应的命令启动、停止和重启它们。

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

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

相关文章

MySQL日志 错误日志 二进制日志 查询日志 慢查询日志

一、错误日志 错误日志是MySQL中最重要的日志之一,它记录了当mysqld启动和停止时,以及服务器在运行过程中发生任何严重错误时的相关信息。当数据库出现任何故障导致无法正常使用时,建议首先查看此日志。 该日志是默认开启的,默认存放目录/var/log/,默认的日志文件名…

了解多媒体展厅弧幕投影系统收费构成,轻松制定预算

随着数字多媒体技术在内容展示行业中的广泛应用,基于投影、LED等技术手段的多媒体互动装置呈现多样化发展趋势,越来越多的新颖模式出现在大众眼前,其中就包括了备受关注的弧幕投影系统,作为投影技术显示形式的一种,它打…

抖音招聘直播报白有成本低和招聘效果精准的优势

抖音的短视频流量能够让岗位信息覆盖更广泛的人群,增加招聘信息的曝光度。通过抖音的短视频流量红利和精准推送,能够提高岗位信息的曝光度和求职者的留存率。如果你想做招聘报白却不知道怎么处理,可以咨询我。 创意创新:抖音招聘注重创意和创…

遍历完全二叉树节点

完全二叉树的节点个数 递归普通二叉树遍历解法 我们先来普及一下完全二叉树的概念:在完全二叉树中,除了最底层节点可能没填满外,其余每层节点数都达到最大值,并且最下面一层的节点都集中在该层最左边的若干位置。若最底层为第 h 层…

C语言之排序

1.冒泡排序 冒泡排序就不多说了,只需要两层循环嵌套,两两比较确定相对正确的顺序即可。 2.插入排序 插入排序的思想就是每一次向后寻找一个再将其与前面有序的部分进行对比,寻找合适位置插入。 这里关键要避免让前移超出目前读取的数字&…

Java版ORM最初雏形

经过一个晚上的加班,终于把ORM初步结构工程搭好了。工程依赖有点难用,编辑器提示比VS差很多。 首先LIS.Core创建一个最初的容器雏形,先能反射得到对象给ORM获得数据库驱动 然后ORM创建数据库驱动差异接口,不同数据库实现接口后配…

MATLAB中 tf2zpk函数用法

目录 语法 说明 示例 IIR滤波器的极点、零点和增益 tf2zpk函数的功能是将传递函数滤波器参数转换为零极点增益形式。 语法 [z,p,k] tf2zpk(b,a) 说明 [z, p, k] tf2zpk(b, a) 从传递函数参数 b 和 a 中找到零点矩阵 z,极点向量 p,以及相关的增益…

岗亭一键报警器设计

岗亭一键报警器设计 岗亭一键报警器设计人性化,拥有多种功能,例如: 紧急报警:遇到紧急情况时,只需按下报警器按钮,即可迅速向监控中心发送报警信号,以便相关人员及时采取应对措施。远程监控&am…

NLP:从头开始的文本矢量化方法

一、说明 NLP 项目使用文本,但机器学习算法不能使用文本,除非将其转换为数字表示。这种表示通常称为向量,它可以应用于文本的任何合理单位:单个标记、n-gram、句子、段落,甚至整个文档。 在整个语料库的统计 NLP 中&am…

EPLAN_007#3D图形的导入、编辑和定义

一定要打开对象捕捉,否则会严重偏移!!! 一、导入3D模型,合并模型 1、新建一个宏项目 2、导入(3D图形) 可以对目标进行旋转查看 3、合并图形(不建议合并) 框选目标 点合并…

用python写一个贪吃蛇的程序能运行能用键盘控制

用python写一个贪吃蛇的程序能运行能用键盘控制 1.源码2.运行效果 1.源码 开发库使用:pygame random 直接在终端运行:pip install pygame pycharm安装库:文件-设置-项目-Python 解释器 import pygame import random# 初始化pygame pygame…

代码随想录算法训练营第五十九天 | 647. 回文子串、516.最长回文子序列

647. 回文子串 链接: 代码随想录 (1)代码 516.最长回文子序列 链接: 代码随想录 (1)代码

文件上传漏洞靶场前十关

pass1: 只能上传照片 用burp抓包改一下数据包试试: 上传成功 菜刀getshell Pass2: 寄 Png可以,抓包: 跟pass1一样阿 Pass3: 又寄 这里用抓包改数据包,发现仍然不可以 说明后端还有对文件名后缀…

springboot中@scheduled的使用

1.主要实现类ScheduledAnnotationBeanPostProcessor 在postProcessAfterInitialization(Object bean,String beanName)方法中找到所有bean中有注解为Scheduled的方法,组装成task,添加到调度线程池中 2.Task先按线程池接口类型TaskScheduler去容器中寻找taskSchedu…

freeipa server副本同步中断,两主节点数据不一致

/var/log/messages 和/var/log/dirsrv/slapd-testhadoop-COM 日志都出现以下日志: If replication stops, the consumer may need to be reinitialized. [27/Jun/2023:05:15:09.469361922 0800] - ERR - NSMMReplicationPlugin - changelog program - repl_plugin_name_cl - a…

【vue+nestjs】qq第三方授权登录【超详细】

项目场景: 前端使用vue3ts 后端使用nestjs 1.申请appId,appKey 1.进入qq互联官网。创建应用 特别注意 在填写网站回调域时,需要你线上真实能访问的。不然审核不通过。我的回调地址是前端路由地址 2.代码演示 特别注意: 如果你跟我一样是前后端分离的模式开发的…

17、监测数据采集物联网应用开发步骤(12.2)

阶段性源码将于本章节末尾给出下载 监测数据采集物联网应用开发步骤(12.1) 新建web数据接口http-request解析类com.zxy.tcp.Request.py #! python3 # -*- coding: utf-8 -Created on 2017年05月10日 author: zxyong 13738196011 import urllib.parse,json from com.zxy.comm…

华为OD机试 - 根据某条件聚类最少交换次数 - 滑动窗口(Java 2023 B卷 100分)

目录 专栏导读一、题目描述二、输入描述三、输出描述四、解题思路五、Java算法源码六、效果展示1、输入2、输出3、说明 华为OD机试 2023B卷题库疯狂收录中,刷题点这里 专栏导读 本专栏收录于《华为OD机试(JAVA)真题(A卷B卷&#…

解决ubuntu系统运行pyside2或6的问题

解决ubuntu系统运行pyside2或6时出现的问题 当运行程序时,出现“qt.qpa.plugin: Could not load the Qt platform plugin “xcb” in “/usr/local/lib/python3.6/dist-packages/cv2/qt/plugins” even though it was found. This application failed to start bec…

全志R128软件配置——RTOS 软件包配置

RTOS 软件包配置 本文将介绍 RTOS 软件包、地址,内核配置等。 Kconfig 简介 有过 linux 内核开发经验的人,对 menuconfig 不会陌生。对于各类内核,只要是支持 menuconfig 配置界面,都是使用 Kconfig。 换言之: me…