为什么在 systemd 发行版上可以使用 service 命令?

为什么在 systemd 发行版上可以使用 service 命令?

我正在尝试了解Linux init 系统。我不明白如何存在三个相互竞争的系统,但该service命令似乎适用于所有这些系统。

从服务命令man页面:

服务运行 System V init 脚本或 upstart 作业...

我使用的是lubuntu 16.4思考systemd 是默认的初始化系统(pstree将 systemd 显示为根进程)。服务手册页中未提及 Systemd。但我仍然使用它来启动和停止脚本。

谁能解释这是为什么吗?

答案1

一些发行版选择包含兼容性脚本,以便旧式命令仍然有效。例如,在 Debian 8 上。

root@matrix:~# which service
/usr/sbin/service
root@matrix:~# file /usr/sbin/service
/usr/sbin/service: POSIX shell script, ASCII text executable, with very long lines

root@matrix:~# grep upstart /usr/sbin/service
# Operate against system upstart, not session
   && initctl version 2>/dev/null | grep -q upstart \
   # Upstart configuration exists for this job and we're running on upstart
         # Action is a valid upstart action

root@matrix:~# grep systemd /usr/sbin/service
is_systemd=
if [ -d /run/systemd/system ]; then
   is_systemd=1
          # On systems using systemd, we just perform a normal restart:
          # A restart with systemd is already a full restart.
          if [ -n "$is_systemd" ]; then
# When this machine is running systemd, standard service calls are turned into
if [ -n "$is_systemd" ]
            # the systemd service file does not (yet) support reload for a

相关内容