0.前言

首先看到这个错误,本身就很有误导性: gunicorn: No such file or directory
root@doupoa:~# systemctl status admin.service
× admin.service - gunicorn daemon for my web application
Loaded: loaded (/etc/systemd/system/admin.service; disabled; preset: enabled)
Active: failed (Result: exit-code) since Wed 2025-08-20 09:32:08 CST; 1s ago
Duration: 783us
Process: 29237 ExecStart=/home/adminServer/.venv/bin/gunicorn -w 5 -k uvicorn.workers.UvicornWorker --access-logfile /home/adminServer/logs/gunicorn_access.log --error-l>
Main PID: 29237 (code=exited, status=209/STDOUT)
CPU: 606us
Aug 20 09:32:08 doupoa (gunicorn)[29237]: admini.service: Failed at step STDOUT spawning /home/adminServer/.venv/bin/gunicorn: No such file or directory
Aug 20 09:32:08 doupoa systemd[1]: Started admini.service - gunicorn daemon for my web application.
Aug 20 09:32:08 doupoa systemd[1]: admin.service: Main process exited, code=exited, status=209/STDOUT
Aug 20 09:32:08 doupoa systemd[1]: adminiLucky.service: Failed with result 'exit-code'.
然后就会开始无止境的:
... -> 查看目录 -> 有这文件啊? -> 重启查看状态 -> 怎么还是找不到? -> 查看目录 -> ...
1.问题解决
先来看一下 admin.service
文件,一切都很正常
[Unit]
Description=gunicorn daemon for my web application
After=network.target
RequiresMountsFor=/home/adminServer/.venv/bin/
[Service]
User=root
Group=root
WorkingDirectory=/home/adminServer
ExecStart=/home/adminServer/.venv/bin/gunicorn -w 5 -k uvicorn.workers.UvicornWorker --access-logfile '/home/adminServer/logs/gunicorn_access.log' --error-logfile '/home/adminServer/logs/gunicorn_error.log' main:app
StandardOutput=append:/home/adminServer/logs/gunicorn.out
StandardError=append:/home/adminServer/logs/gunicorn.err
[Install]
WantedBy=multi-user.target
可以看到我们指定了StandardOutput
和 StandardError
这两个日志输出目录,再结合 systemctl status 的错误信息来看,可以发现一行: Failed at step STDOUT spawning
STDOUT
就是我们指定的目录地址,Failed Spawning
就是生成失败,很明显就是路径存在问题。
前往输出目录查看,果然缺少了logs
文件夹。补全文件夹后重启服务,运行成功!
2.其他错误码
为此我特意去找了下systemd源码中有哪些错误码,根据原本意思和AI辅助,列出了全部状态码、翻译和可能出现的情况,仅供参考~
错误码 | 符号名称 | 翻译 | 可能情况 |
---|---|---|---|
0 | EXIT_SUCCESS | 成功退出 | 进程正常执行完成 |
1 | EXIT_FAILURE | 一般性失败 | 进程执行失败,但无具体错误信息 |
2 | EXIT_INVALIDARGUMENT | 无效参数 | 传递给命令的参数无效或不正确 |
3 | EXIT_NOTIMPLEMENTED | 功能未实现 | 请求的功能尚未实现 |
4 | EXIT_NOPERMISSION | 权限不足 | 执行操作所需的权限不足 |
5 | EXIT_NOTINSTALLED | 未安装 | 所需的程序或组件未安装 |
6 | EXIT_NOTCONFIGURED | 未配置 | 服务或程序未正确配置 |
7 | EXIT_NOTRUNNING | 未运行 | 服务或进程未在运行状态 |
64-78 | (BSD sysexits.h) | BSD 系统退出码 | 各种 BSD 系统定义的错误情况 |
200 | EXIT_CHDIR | 更改目录失败 | 无法切换到指定工作目录 |
201 | EXIT_NICE | 设置优先级失败 | 无法设置进程的 nice 值 |
202 | EXIT_FDS | 文件描述符操作失败 | 文件描述符操作(如关闭)失败 |
203 | EXIT_EXEC | 执行失败 | 无法执行指定的程序或命令 |
204 | EXIT_MEMORY | 内存分配失败 | 内存分配或管理操作失败 |
205 | EXIT_LIMITS | 资源限制设置失败 | 无法设置进程资源限制 |
206 | EXIT_OOM_ADJUST | OOM 调整失败 | 无法调整内存不足时的行为 |
207 | EXIT_SIGNAL_MASK | 信号掩码设置失败 | 无法设置进程信号掩码 |
208 | EXIT_STDIN | 标准输入设置失败 | 标准输入设置或重定向失败 |
209 | EXIT_STDOUT | 标准输出设置失败 | 标准输出设置或重定向失败(当前遇到的错误) |
210 | EXIT_CHROOT | chroot 操作失败 | 无法更改根目录 |
211 | EXIT_IOPRIO | I/O 优先级设置失败 | 无法设置 I/O 优先级 |
212 | EXIT_TIMERSLACK | 定时器松弛设置失败 | 无法设置定时器松弛值 |
213 | EXIT_SECUREBITS | 安全位设置失败 | 无法设置安全位 |
214 | EXIT_SETSCHEDULER | 调度器设置失败 | 无法设置进程调度策略 |
215 | EXIT_CPUAFFINITY | CPU 亲和性设置失败 | 无法设置 CPU 亲和性 |
216 | EXIT_GROUP | 组设置失败 | 无法设置进程组 |
217 | EXIT_USER | 用户设置失败 | 无法设置用户身份 |
218 | EXIT_CAPABILITIES | 能力设置失败 | 无法设置进程能力 |
219 | EXIT_CGROUP | cgroup 设置失败 | 无法设置 cgroup |
220 | EXIT_SETSID | 会话设置失败 | 无法创建新会话 |
221 | EXIT_CONFIRM | 确认操作失败 | 不确定具体含义 |
222 | EXIT_STDERR | 标准错误设置失败 | 标准错误设置或重定向失败 |
223 | _EXIT_RESERVED | 保留(原用于 TCP Wrapper) | 曾经用于 TCP Wrapper,不应重用 |
224 | EXIT_PAM | PAM 认证失败 | PAM(可插拔认证模块)认证失败 |
225 | EXIT_NETWORK | 网络配置失败 | 网络配置或设置失败 |
226 | EXIT_NAMESPACE | 命名空间设置失败 | 无法设置命名空间 |
227 | EXIT_NO_NEW_PRIVILEGES | 权限限制设置失败 | 无法设置无新权限标志 |
228 | EXIT_SECCOMP | Seccomp 设置失败 | 无法设置 Seccomp 过滤器 |
229 | EXIT_SELINUX_CONTEXT | SELinux 上下文设置失败 | 无法设置 SELinux 上下文 |
230 | EXIT_PERSONALITY | 人格设置失败 | 无法设置进程人格(架构仿真) |
231 | EXIT_APPARMOR_PROFILE | AppArmor 配置文件设置失败 | 无法设置 AppArmor 配置文件 |
232 | EXIT_ADDRESS_FAMILIES | 地址族限制失败 | 无法限制允许的地址族 |
233 | EXIT_RUNTIME_DIRECTORY | 运行时目录设置失败 | 无法创建或设置运行时目录 |
234 | _EXIT_RESERVED2 | 保留(原用于 kdbus) | 曾经用于 kdbus,不应重用 |
235 | EXIT_CHOWN | 所有权更改失败 | 无法更改文件或目录的所有权 |
236 | EXIT_SMACK_PROCESS_LABEL | SMACK 进程标签设置失败 | 无法设置 SMACK 进程标签 |
237 | EXIT_KEYRING | 密钥环操作失败 | 密钥环操作失败 |
238 | EXIT_STATE_DIRECTORY | 状态目录设置失败 | 无法创建或设置状态目录 |
239 | EXIT_CACHE_DIRECTORY | 缓存目录设置失败 | 无法创建或设置缓存目录 |
240 | EXIT_LOGS_DIRECTORY | 日志目录设置失败 | 无法创建或设置日志目录(当前遇到的问题) |
241 | EXIT_CONFIGURATION_DIRECTORY | 配置目录设置失败 | 无法创建或设置配置目录 |
242 | EXIT_NUMA_POLICY | NUMA 策略设置失败 | 无法设置 NUMA 策略 |
243 | EXIT_CREDENTIALS | 凭据设置失败 | 无法设置进程凭据 |
244 | EXIT_BPF | BPF 设置失败 | 无法设置 BPF(伯克利包过滤器) |
245 | EXIT_KSM | KSM 设置失败 | 无法设置 KSM(内核同页合并) |
255 | EXIT_EXCEPTION | 异常退出 | 进程因异常或信号而退出 |
发表回复