没有标准。

没有标准。

当检查 Linux (Ubuntu) 机器上运行的服务的状态时,我习惯于以下输出:

service status nginx
* nginx is running

最近 nginx 升级后,同一命令的输出更改为:

nginx start/running, process XXXX

其中XXXX是进程号。

我从来没有见过这样的service status回复格式,我想知道这是否正常?这是另一个标准,或者可能意味着该服务未正确安装?

答案1

没有标准。

出现什么结果取决于您对service命令的特定实现您正在使用什么服务管理器乃至为相关服务提供了哪些服务定义。

系统

如果您将 systemd 作为服务管理器运行,则输出将是 systemd 的输出systemctl status,这是(新的 Debian/Ubuntu 提供的)service命令在幕后调用的内容:

% systemctl 状态 nginx.service
● nginx.service - 高性能Web服务器和反向代理服务器
   已加载:已加载(/lib/systemd/system/nginx.service;已启用;供应商预设:已启用)
   活动:自 2015 年 8 月 12 日星期三 20:16:25 CEST 起失败(结果:退出代码); 23 秒前
  进程:24221 ExecStartPre=/usr/sbin/nginx -t -q -g 守护进程开启; master_process 开启; (代码=已退出,状态=1/失败)
 主PID:17425(代码=已退出,状态=0/成功)
%

systemd 操作系统(尚未切换到其他操作系统)上就是这种情况,例如 Ubuntu 15 及更高版本以及 Debian 8 及更高版本。

一个小变体是,有时没有真正的 systemd 服务单元文件,在这种情况下,systemd 发明了一个(包装了 van Smoorenburg 文件rc),并且该Loaded:行的显示方式略有不同(因为 systemd 此类单元的生成器隐藏了该单元的名称)包装单元文件有利于包装的 van Smoorenburgrc文件名)。

显然您没有使用 systemd 操作系统,而是使用新的 Debian/Ubuntuservice命令。

进一步阅读

开胃菜

如果您使用的是 nosh 工具集,则输出将是 的输出system-control status,这就是 nosh 工具集的service命令在幕后调用的内容:

% 服务 appcafe-nginx 状态
/var/sv/appcafe-nginx:
    状态:自 2019-01-12 17:58:09 +0000 开始运行; 16小时33分钟42秒前
    主PID:980
     开始:2019-01-12 17:58:06 +0000 退出 0; 16小时33分钟45秒前
         Ran:2019-01-12 17:58:09 +0000 0号出口; 16小时33分钟42秒前
    配置:启用
%

进一步阅读

  • 乔纳森·德博因·波拉德 (2019)。service小吃指南。软件。
  • 乔纳森·德博因·波拉德 (2019)。system-control小吃指南。软件。

暴发户

如果您将 Upstart 作为服务管理器运行,则输出将是 Upstartinitctl status命令的输出,这就是(Debian/Ubuntu 提供的、老的)service命令在幕后调用,如您所见:

% initctl 状态 nginx
nginx 启动/运行,进程 2543
%

Upstart 操作系统就是这种情况,例如 Ubuntu 6 到 Ubuntu 14 以及 Fedora 9 到 Fedora 14。

一个问题是,在 Ubuntu 上,如果该服务没有 Upstart 作业定义,(旧的 Debian/Ubuntu 提供的)service命令会从调用回退到initctl statusvan Smoorenburg 工具集的行为。

这就是您的系统上发生的情况,直到您将 nginx 软件包升级到较新的软件包,该软件包现在包含 nginx 的 Upstart 作业定义。之前,后备被调用;现在,情况并非如此。 新贵工作文件在 nginx 1.9 版本中添加。

进一步阅读

  • 斯科特·詹姆斯·雷南特 (2009)。 status。新贵用户手册。乌班图。
  • initctl status”。新贵食谱。乌班图。
  • 卡梅伦·诺曼 (2014-04-22)。nginx 新贵工作。 Debian 错误#745483。

开放式RC

如果您使用 OpenRC,输出将是 OpenRC 的输出rc-service status,这service只是以下的别名:

% rc-service nginx 状态
 * 状态:已开始
%

进一步阅读

  • 罗伊·马普尔斯 (2009-05-01)。rc-service。打开RC。

范斯穆伦伯格rc

如果您使用 van Smoorenburg 工具集,则输出将是rc给定子命令时脚本本身打印的内容status。在大多数情况下,特别是从 Debian 9 开始,这将是处理大多数脚本的状态打印的通用帮助程序命令的输出rc。但它可以是任何东西,并且完全取决于脚本决定如何处理子命令。

rcDebian nginx 包中附带的van Smoorenburg脚本使用 Debian 的shell 脚本函数库status_of_proc中的帮助程序:/lib/lsb/init-functions

% status_of_proc -p /var/run/nginx.pid /usr/sbin/nginx nginx
* nginx 正在运行
%

Ubuntu 自 2006 年以来就不再使用 van Smoorenburg init+ ,因此任何使用(Debian/Ubuntu 提供的)命令rc出现的 van Smoorenburg行为都将归因于上述 Upstart 的问题。 (旧)命令将无法检测到 Upstart 工作,并将退回到将事物视为 van Smoorenburg 。 (请注意,systemd 或 nosh 没有此类回退,您将rcserviceservicerc绝不请参阅 Ubuntu 上的 van Smoorenburgrc行为,其中任何一个都将始终像其本机服务一样运行,一切都以本机服务的方式运行。)

进一步阅读

相关内容