当前位置: 首页 > 知识库问答 >
问题:

linux - AWS Linux2023 系统安装 supervisord,在“创建映像”后,/run/supervisor/目录丢失,进程退出?

房泉
2023-08-02

公司生产服务器使用的aws的ec2,本来用的是linux2的系统,docker部署redis等基础服务,上周五突然系统异常,
grpc: addrConn.createTransport failed to unix:///run/containerd/containerd.sock <nil> 0 <nil>l, Err :connection error: desc = "transport: Error while dialing dial unix:///run/containerd/containerd,sock: timeout ", Reconnecting...
出现后,服务器登陆不上,重启后也无法登陆。不是专业运维,无能为力,干脆用旧版镜像重新启动了服务。
异常后,痛定思痛,重新用aws linux2023的系统备用supervisord守护进程,管理原生部署的服务,结果,软件基本都安装好了,在做“创建映像”时,supervisord进程会无故退出,用sudo systemctl start supervisord 也无法启动,看了报错之后发现,因为缺失/run/supervisor/目录,创建后,就可以启动了。
以为是偶发,结果重新镜像再次退出进程,/run/supervisor/缺失。本来想定时对系统做映像的,如果创建会触发服务异常那就没有办法定时备份了。
没有查到aws的ec2服务器在做创建映像时,是否会移除/run/了,也没有查到用sudo 去启动supervisor时为啥要创建/run/supervisor/目录,且无法自动创建成功。

请问下大家有没有碰到过类似问题,是如何处理的?

希望可以正常创建映像,不会影响supervisor服务。

以下是部分相关配置,并未看到/run/supervisor/这个目录:
supervisord.service

ExecStart=/usr/local/bin/supervisord -c /etc/supervisord.confExecStop=/usr/local/bin/supervisorctl shutdownExecReload=/usr/local/bin/supervisorctl reload

/etc/supervisord.conf

[unix_http_server]file=/var/run/supervisor/supervisor.sock   ; (the path to the socket file)[supervisord]logfile=/var/log/supervisor/supervisord.log  ; (main log file;default $CWD/supervisord.log)logfile_maxbytes=50MB       ; (max main logfile bytes b4 rotation;default 50MB)logfile_backups=10          ; (num of main logfile rotation backups;default 10)loglevel=info               ; (log level;default info; others: debug,warn,trace)pidfile=/var/run/supervisord.pid ; (supervisord pidfile;default supervisord.pid)[supervisorctl]serverurl=unix:///var/run/supervisor/supervisor.sock ; use a unix:// URL  for aunix socket

共有1个答案

梁渊
2023-08-02

因为 /run 目录在系统重启后会被清空。这是因为 /run 目录一般被挂载为一个临时文件系统里

你要在 supervisord 的 systemd 服务文件里加一个 ExecStartPre 指令,用在 supervisord 启动之前创建 /run/supervisor/ 目录:

[Service]ExecStartPre=/bin/mkdir -p /run/supervisor/ExecStart=/usr/local/bin/supervisord -c /etc/supervisord.confExecStop=/usr/local/bin/supervisorctl shutdownExecReload=/usr/local/bin/supervisorctl reload

ExecStartPre 指令会在 ExecStart 指令之前执行,/bin/mkdir -p /run/supervisor/ 命令会创建 /run/supervisor/ 目录,-p 参数会确保如果目录已经存在,命令不会报错。

修改完配置文件后:

sudo systemctl daemon-reloadsudo systemctl restart supervisord
 类似资料:
  • 本文向大家介绍Linux进程管理工具supervisor安装配置教程,包括了Linux进程管理工具supervisor安装配置教程的使用技巧和注意事项,需要的朋友参考一下 环境:CentOS 7 官方文档:http://supervisord.org/ 安装 # yum install -y epel-release # yum install -y supervisor 启动 # supervi

  • 无法创建Android虚拟设备,我点击了此链接。 我为每个Android安装了超过4.0的所有ARM图像。 我安装了情报 但是,我的AVD经理仍然说“没有为这个目标安装系统映像”。 为什么呢?

  • 我是Hadoop的新手。我正试图在hdfs中创建一个目录,但我无法创建。 我已经登录到“hduser”,因此我假设/home/hduser“作为Unix FS预先存在,所以我尝试使用下面的命令创建hadoop目录。 在线搜索后,我想到可能是hadoop不能理解“/home/hduser”,或者我使用的hadoop2中mkdir不能像Unix命令“madir-p”(递归)那样工作。因此,我尝试创建“

  • 我正在创建一个新的AVD。我用ARM中央处理器映像创建了一个。但是即使大约45分钟后它也不会启动。所以我删除了它,下载了英特尔x86原子映像。在创建AVD时,选择中央处理器的字段变得不活动,并显示“没有为此目标安装系统映像”。帮助。! SDK管理器中的映像安装状态:

  • 今天,我需要一个解决方案来避免在修补程序安装的上下文中通过install4j Version6.1.3创建安装目录。我编写了一个安装程序,其中包含一些文件来将它们安装到现有的应用程序安装中。这些文件应该与修补程序安装程序捆绑在一起。在install files操作中,我停用了install运行时选择点,但安装程序仍然创建了包含名为.install4j的文件夹的安装目录。在这个文件夹中只有一些ins

  • 现在我们在 LFS 分区中创建目录树结构,用下列命令能创建一个标准的目录树: mkdir -pv /{bin,boot,etc/opt,home,lib,mnt,opt} mkdir -pv /{media/{floppy,cdrom},sbin,srv,var} install -dv -m 0750 /root install -dv -m 1777 /tmp /var/tmp mkdir -