我搜索了整个互联网,但找不到任何有关的信息无效的论点 。
在 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
看起来应用程序端未能处理SIGTERM 信号接收前SIGKILL 信号来自 systemd,但是 systemd 通常在什么情况下返回 INVALIDARGUMENT?
我正在使用 Red Hat Enterprise Linux 7.4。
如果有人能帮助我我将不胜感激...
谢谢,
渡边优
答案1
“INVALIDARGUMENT”名称是退出状态 2 的“代码”。
在 systemd 源代码中(查看 v219,这是 RHEL 7 附带的版本),有一个常数定义于enum ExitStatus
:
EXIT_INVALIDARGUMENT = 2,
这些常量似乎来自 LSB 标准(当初始化脚本曾经是一个事物时,它试图标准化初始化脚本......)
看着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
这与其他 systemd 常量相匹配...因此,看起来 systemd 尝试使用 LSB 标准,因为遵循该标准的程序会有一些小的好处。
当然,并非所有程序都遵循此标准,因此 systemd 最终可能会告诉它想该错误代码意味着,即使程序作者可能已决定将退出状态 2(以及到 7 的其他状态)用于完全不同的目的……