Quais argumentos são passados para os scripts init durante o desligamento

0

Atualmente estou olhando para os procedimentos de inicialização e desligamento para pangolim preciso ubunut. Tanto quanto eu entendo no desligamento o sistema muda para o nível de execução 0 e todos os scripts com K* são executados com o argumento stop e todos os scripts com S* são executados com o argumento start .

Agora, olhando para rc.0 , posso ver os seguintes scripts:

lrwxrwxrwx  1 root root   16  1. Jan 2000  K20dhcpcd -> ../init.d/dhcpcd
lrwxrwxrwx  1 root root   20  1. Jan 2000  S35networking -> ../init.d/networking
lrwxrwxrwx  1 root root   14  5. Apr 2013  S90halt -> ../init.d/halt
lrwxrwxrwx  1 root root   20  5. Apr 2013  S60umountroot -> ../init.d/umountroot
lrwxrwxrwx  1 root root   18  5. Apr 2013  S40umountfs -> ../init.d/umountfs
lrwxrwxrwx  1 root root   22  5. Apr 2013  S31umountnfs.sh -> ../init.d/umountnfs.sh
lrwxrwxrwx  1 root root   17  5. Apr 2013  S30urandom -> ../init.d/urandom
lrwxrwxrwx  1 root root   18  5. Apr 2013  S20sendsigs -> ../init.d/sendsigs
lrwxrwxrwx  1 root root   19 26. Aug 2013  K90syslog-ng -> ../init.d/syslog-ng

O que significa que umountfs , sendsigs e halt serão executados com o argumento start .

Mas, olhando o código, por exemplo, em S90halt , encontro o seguinte:

case "$1" in
  start)
        # No-op
        ;;
  restart|reload|force-reload)
        echo "Error: argument '$1' not supported" >&2
        exit 3
        ;;
  stop)
        do_stop
        ;;
  *)
        echo "Usage: $0 start|stop" >&2
        exit 3
        ;;
esac

Ou seja. Esse script não faz nada quando é chamado com start e só pára o sistema quando é chamado com stop . Não consigo encontrar nenhuma referência a esse script como um script de kill, então quando isso acontece?

    
por LiKao 16.07.2014 / 16:23

1 resposta

1

De acordo com o livro de receitas do Ubuntu :

% bl0ck_qu0te%

O SystemV usa o nível de execução para gerenciar a inicialização, o desligamento e a reinicialização do sistema.

Em /etc/init.d estão presentes scripts que manipulam service stop / start, esses scripts seguem /etc/init.d/skeleton e são executados pelo sistema toda vez que o runlevel é alterado.

O nível de execução é numerado de 0 a 6 e, em /etc , encontramos a pasta rcX.d , uma para cada nível.

Nessas pastas estão presentes links simbólicos para scripts em /etc/init.d , já que você viu o nome deste link como particular: eles começam com S ou K (S significa iniciar e K significa Matar) seguido por um número e o nome do serviço.

Quando um comando do sistema altera o valor de runlevel, os scripts no diretório rcX.d são chamados seguindo a ordem alfabética : K scripts com o parâmetro stop, S script com start. Esta regra não se aplica a dois runlevels 0 (halt) e 6 (reboot). De acordo com o Manual de Políticas Debian, Capítulo 9 - O Sistema Operacional

% bl0ck_qu0te%

É por isso que o sistema pára.

Este tópico é muito amplo, espero que esta pequena explicação seja suficientemente clara.

    
por Lety 16.07.2014 / 22:07