systemd 输出中的“status=10/n/a”是什么意思?

systemd 输出中的“status=10/n/a”是什么意思?

我正在开发一个.service文件,以便systemd可以在 Amazon Linux 2 上管理应用程序即服务。但是当我输入 时systemctl start my-new-service,日志中报告以下错误:

Mar 24 hh:mm:ss the.host.name systemd[1]: my-new-service.service: main process exited, code=exited, status=10/n/a  

status=10/n/a此错误消息中指的 是什么呢?

请解释如何解释各种可能的状态代码,如果摘要对于本论坛来说太长,也许可以提供一个完整解释的链接。

答案1

该消息意味着您的.service文件启动的应用程序ExecStart=已退出,并在退出时将返回代码设置为 10。

关于结果代码没有单一的统一标准(尽管有几个部分标准和约定),因此找出代码 10 含义的唯一方法是阅读该特定应用程序的文档......或其源代码,如果文档没有指定它。

因此 systemd 不知道代码 10 的含义,因此它添加了 n/a 来表示 systemd 没有可用的口头描述。您还没有告诉我们有问题的应用程序是什么,因此我们无法为您进一步查找结果代码 10。

在 的文档中systemd有几个结果代码约定表。总结一下:

  • C 库基本上只定义 0 表示正常,1(或任何非零值)表示失败
  • Linux 标准库 (LSB) 有定义对于代码 2...7,用于设计用作服务的东西(或最初用于 SysVinit 样式的服务启动脚本)
  • LSB 规范表明代码 200 及以上将是特定于实现的,因此systemd为自身生成的错误定义了该范围内的一组代码systemd

  • BSD 操作系统定义了一组通用退出代码,范围为 64..78。/usr/include/sysexits.h如果系统上已安装 C 开发包,这些代码的定义通常也可在 Linux 系统上使用,在文件 中。

但这些都没有提及代码 10,因此在不了解相关应用程序的情况下无法进行猜测。

答案2

10是主进程的返回值。经过习俗每个非零退出代码都被视为失败,其中数字应该理想地指示出了什么问题。

n/a代表不适用或不可用(参见。https://en.wikipedia.org/wiki/N/a),这意味着没有符号名称退出代码10 已定义,因此它并不能表明出了什么问题。

简而言之,出现了问题(或者您的脚本/程序错误地返回 10)。

相关内容