Gemini1995 2023-01-29 17:31 采纳率: 66.7%
浏览 28

systemd 设置service 的type为exec时,ExecStart 命令执行不成功 systemctl start 却操作成功

遇到的现象和发生背景

操作系统:ubuntu-20.04

查阅的文献资料地址:https://www.freedesktop.org/software/systemd/man/systemd.service.html#Type=

systemd service 中针对type=exec 的使用

文档中对type=exec 描述

Note that this means systemctl start command lines for exec services will report failure when the service's binary cannot be invoked successfully (for example because the selected User= doesn't exist, or the service binary is missing).

理解为服务的二进制文件不能被成功调用时,exec服务的systemctl start命令行将报告失败

以下为代码内容

flask_app.service


[Unit]
Description=Flask app

[Service]
Type=exec
PIDFile=/data/project/xhxf/log/flask_app.pid
WorkingDirectory=/data/project/xhxf/
ExecStart=/usr/bin/gunicorn -b localhost:7071  app:app
 
运行结果及详细报错内容

执行后发现 systemctl start 操作成功,systemctl status 查看任务,发现任务启动失败。理应systemctl start 就应该不成功。

img

  • 写回答

2条回答 默认 最新

  • IT民工金鱼哥 运维领域新星创作者 2023-01-29 17:51
    关注

    来首先理解一下,Type=exec 的意思,我以前的笔记记录:

    img

    然后,要回过头来,要看你的执行程序了,如果你的二进制程序里面, fork() 与 execve() 的函数都执行成功,那就systemctl start 就会成功了,
    所以,你若想研究这程序的启动底层,就需要你去研究 gunicorn 命令究竟如何调用来进一步分析了。这个超过我技能领域范畴,就比不了建议了,但肯定要去看他的启动调用函数是咋样的。

    评论

报告相同问题?

问题事件

  • 创建了问题 1月29日

悬赏问题

  • ¥15 微软硬件驱动认证账号申请
  • ¥15 有人知道怎么在R语言里下载Git上的miceco这个包吗
  • ¥15 GPT写作提示指令词
  • ¥20 如何在cst中建立这种螺旋扇叶结构
  • ¥20 根据动态演化博弈支付矩阵完成复制动态方程求解和演化相图分析等
  • ¥20 关于DAC输出1.000V对分辨率和精度的要求
  • ¥20 想写一个文件管理器,加载全部子文件夹后,要一级一级返回
  • ¥15 华为超融合部署环境下RedHat虚拟机分区扩容问题
  • ¥15 哪位能做百度地图导航触点播报?
  • ¥15 请问GPT语言模型怎么训练?