Por que usar o comando service funciona em uma distribuição systemd?

2

Estou tentando entender o sistema de inicialização do Linux. Eu não entendo como existem três sistemas concorrentes, mas o comando service parece funcionar em todos eles.

Dos comandos de serviço man page:

service runs a System V init script or upstart job...

Estou usando o lubuntu 16.4 acho que systemd é o sistema init padrão ( pstree mostra o systemd como processo raiz). O Systemd não é mencionado na man page para service. No entanto, ainda inicio e paro os scripts que o usam.

Alguém pode explicar por que isso acontece?

    
por bplus 04.05.2016 / 21:05

1 resposta

4

Algumas distribuições optaram por incluir scripts de compatibilidade para que os comandos de estilo antigo ainda funcionem. Por exemplo, no 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
    
por 04.05.2016 / 21:17

Tags