Qual é o equivalente a systemctl para um comando como 'chkconfig --level 5 iptables on'

3

Eu sei que systemctl enable iptables é semelhante ao comando chkconfig --level 5 iptables on , mas ambos não são exatamente iguais.

Usando systemctl , como restringimos que um serviço seja iniciado apenas em um determinado destino, como graphical.target.

    
por Joy 08.06.2018 / 12:00

2 respostas

4

Isso é o que as diretivas WantedBy= e RequiredBy= nos arquivos systemd unit são para:

Em man systemd.unit :

WantedBy=, RequiredBy=

This option may be used more than once, or a space-separated list of unit names may be given. A symbolic link is created in the .wants/ or .requires/ directory of each of the listed units when this unit is installed by systemctl enable. This has the effect that a dependency of type Wants= or Requires= is added from the listed unit to the current unit. The primary result is that the current unit will be started when the listed unit is started. See the description of Wants= and Requires= in the [Unit] section for details.

Assim, o link simbólico criado é o que faz o systemd iniciar a unidade dada quando o alvo / unidade é iniciado.

Então, por exemplo:

[Install]
WantedBy=graphical.target

Faria com que a unidade seja inicializada apenas quando graphical.target for executado (se a unidade estiver ativada).

Outro exemplo:

[Install]
WantedBy=my-custom-target.target graphical.target

Faria com que a unidade seja iniciada quando my-custom-target.target ou graphical.target for executado (se a unidade estiver ativada).

Uma última coisa a ter em mente, pode ser difícil restringir as coisas a um único alvo porque algumas metas dependem de outras. Por exemplo, graphical.target Requires=multi-user.target , assim, quando graphical.target for iniciado, todas as unidades de multi-user.target também serão iniciadas. Apenas tenha em mente que alguns alvos são construídos sobre os outros, e que aqueles construídos no topo receberão tudo dos alvos que eles dependem.

    
por 08.06.2018 / 13:37
0

Não há equivalência direta a chkconfig --level 5 iptables on . Não faz sentido e é confuso continuar pensando em termos do antigo sysvinit. Não existe um runlevel no systemd.

Dito isto, você pode pedir ao gerenciador de serviços para iniciar o iptables somente quando graphical.target for alcançado usando WantedBy = graphical.target na seção [Install] do serviço.

    
por 08.06.2018 / 23:57