无效参数是什么意思?

Yu *_*abe 4 linux systemd

我在互联网上搜索,但找不到有关INVALIDARGUMENT 的任何信息 。

在 systemd 中停止服务后,我得到了这个响应。

Oct 18 21:17:04 BSU00383 systemd: Stopping filebeat...
BUNCH OF APPLICATION ERROR HERE
Oct 18 21:17:04 BSU00383 systemd: filebeat.service: main process exited, code=exited, status=2/INVALIDARGUMENT
Run Code Online (Sandbox Code Playgroud)

看起来应用程序端在收到来自 systemd 的SIGKILL 信号之前未能处理SIGTERM 信号,但是在什么情况下 systemd 通常会返回 INVALIDARGUMENT ?

我使用的是红帽企业 Linux 7.4。

如果有人可以帮助我,我很感激...

谢谢,

渡边优

fil*_*den 5

“INVALIDARGUMENT”名称是退出状态 2 的“代码”。

在 systemd 源代码中(查看 v219,这是 RHEL 7 附带的版本),定义了一个常量enum ExitStatus

EXIT_INVALIDARGUMENT = 2,
Run Code Online (Sandbox Code Playgroud)

这些常量似乎来自 LSB 标准(它试图标准化 init 脚本,当 init 脚本曾经是一个东西......)

查看LSB 的相关部分,有这张表:

1      generic or unspecified error (current practice)
2      invalid or excess argument(s)
3      unimplemented feature (for example, "reload")
4      user had insufficient privilege
5      program is not installed
6      program is not configured
7      program is not running
Run Code Online (Sandbox Code Playgroud)

这与其他 systemd 常量匹配......所以 systemd 似乎试图使用 LSB 标准,因为遵循此标准的程序有一些小好处。

当然,并不是所有的程序都遵循这个标准,所以 systemd 最终可能会告诉它认为错误代码意味着什么,即使程序作者可能已经决定将退出状态 2(以及其他到 7)用于完全不同的目的......