对于 systemd 服务来说,“活动(退出)”状态意味着什么?

对于 systemd 服务来说,“活动(退出)”状态意味着什么?

我正在使用一个自定义服务,该服务本质上运行一个名为 thisismywebserver 的 Web 服务器。目前它不起作用(即我在尝试访问页面时收到“无法连接”错误)。

当我运行此命令service thisismywebserver status来查看服务的状态时,我看到状态为“活动(已退出)”。这是否意味着该服务已停止工作?如果不是,那么这意味着什么?

root@thisismywebserver-testing:~# service thisismywebserver status
● thisismywebserver.service - LSB: ThisIsMyWebServer server
   Loaded: loaded (/etc/init.d/thisismywebserver)
   Active: active (exited) since Sun 2015-11-08 23:01:33 EST; 18h ago

Warning: Journal has been rotated since unit was started. Log output is incomplete or unavailable.

答案1

看起来您正在运行带有 systemd 的系统,但您正在使用 sysV 命令。您是否创建了 sysV 初始化脚本或 systemd 单元文件?

状态活动(退出)意味着 systemd 已成功运行命令,但它不知道有一个守护进程需要监视。

如果有,您必须在单元文件中定义它,根据您启动的进程是否是主进程、派生子进程和退出等,适当配置 Type 和 ExecStart 选项。

检查不同的 systemd 手册页或更新您的问题并发布单元文件或初始化脚本。

答案2

我遇到了同样的问题active (exited)。根本原因是我的 shell 进程在通过 start-stop-daemon 命令启动某些服务守护进程后退出。

解决方案是将我的shell进程更改为无限循环,而不是直接退出。这样,active (running)执行后就显示了systemctl start my-service-name.service

此外,在此循环中,shell 进程监视服务守护程序的状态。一旦 shell 进程检测到服务守护进程进入某种错误状态,它就会从无限循环中中断并退出。

相关内容