我在互联网上搜索,但找不到有关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。
如果有人可以帮助我,我很感激...
谢谢,
渡边优
“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)用于完全不同的目的......