Sistema V, systemd e Upstart

Controlar Serviços em Linux

Processo de inicialização

p>O processo de inicialização em sistemas Linux é comummente conhecido como a mãe de todos os processos. O processo “init” terá sempre um ID de processo de “1” (pid de 1), é o primeiro processo iniciado pelo kernel do seu sistema. init é a abreviatura de inicialização e é utilizado para iniciar todos os outros processos e o seu nível de execução por defeito. Muitas distribuições adoptaram o padrão Sistema V para a gestão de serviços, no entanto, outras distribuições passaram para “Systemd” ou “Upstart”.

SysV – Sistema V

Se a sua distribuição Linux utiliza os padrões “SysV”, então o init examinará um ficheiro chamado “/etc/inittab”. Este ficheiro contém o seu nível de execução por defeito, que o sistema deve iniciar sob. Por exemplo “id:3:initdefault:” iniciaria automaticamente todos os scripts nas estruturas de directório do runlevel 3.
Executar Nível 1 – Modo de Execução Único Utilizador
Executar Nível 2 – Igual ao runlevel 3, mas sem NFS
Executar Nível 3 – Modo multi-utilizador e modo de rede
Executar Nível 4 – Não utilizado
Executar Nível 5 – Igual ao runlevel 3, mas com ambiente de trabalho gráfico (Sistema X window)
Para mais informações sobre o processo de arranque: Arrancar Linux
/p>

h3>Executar “System V” init scripts
p>bastante frequentemente como administrador terá de parar, iniciar, reiniciar ou recarregar um determinado serviço/daemon. Para o fazer, usamos um comando chamado “serviço”. Este comando permite-lhe executar scripts “System V” que estão normalmente localizados dentro do directório “/etc/init.d”. Para além de podermos iniciar e parar um serviço/daemon, também podemos ver o estado actual.

h3>service command examples
p>Status Check: Aqui solicitamos o estado actual do daemon “sshd”
br>

# service sshd statusopenssh-daemon (pid 1599) is running...

p>Verificação do estado de todos os processos: Executa todos os seus scripts init em ordem alfabética com a opção status. Abaixo está um extracto da saída deste comando:

# service --status-allabrt-ccpp hook is installedabrtd (pid 1708) is running...abrt-dump-oops (pid 1716) is running...acpid (pid 1487) is running...atd (pid 1740) is running...auditd (pid 1262) is running...automount (pid 1571) is running...avahi-daemon (pid 1375) is running...Usage: /etc/init.d/bluetooth {start|stop}certmonger (pid 1752) is running...cpuspeed is stoppedcrond (pid 1724) is running...cupsd (pid 1476) is running...dnsmasq is stoppedfirstboot is not scheduled to runhald (pid 1496) is running...

p>Stop: Aqui pedimos que o daemon “sshd” parasse. A opção de estado também foi emitida para verificar o novo estado.

# service sshd stopStopping sshd: # service sshd statusopenssh-daemon is stopped

Start: Desta vez solicitamos que o “sshd” seja iniciado.

# service sshd startStarting sshd: 

Restart: Desta vez vamos “saltar” o daemon “sshd” (parar e depois reiniciar imediatamente).

# service sshd restartStopping sshd: Starting sshd: 

Reload: A opção “recarregar” é muito útil se tiver feito alterações a um ficheiro de configuração e quiser trazer estas alterações em.

br>

# service sshd reloadReloading sshd: 

Upstart

>br>

Upstart é um substituto baseado em eventos para o daemon “init”. Upstart foi escrito por um antigo funcionário da bem conhecida empresa que nos fornece Ubuntu (Canonical). A ideia por detrás do Upstart era afastar-se do processo tradicional de arranque, em que as tarefas que eram iniciadas tinham de ser concluídas antes que a tarefa seguinte pudesse começar. Upstart é um sistema orientado para eventos que lhe permite responder a eventos do sistema de forma assíncrona. O Upstart é responsável pelo arranque e paragem de serviços e tarefas no arranque e no encerramento. Também monitoriza activamente estes serviços e tarefas. O Upstart é também capaz de executar scripts sysvinit sem modificações. Várias distribuições incluíram Upstart como substituto do Sistema V. Estas incluíram RHEL, CentOS, Fedora. Contudo, muitos destes sistemas passaram agora para “systemd”
Como vimos anteriormente, podemos controlar serviços/daemons com o comando “service” sob o Sistema V, contudo, sob Upstart usamos um comando diferente. O comando que é usado com Upstart é “initctl”. Este comando permite comunicar com o daemon init. Abaixo estão alguns exemplos básicos do comando “initctl” em uso.

initctl exemplos de comando

p>Status Check: Esta opção solicita o estado do trabalho especificado.

root@john-desktop:~# initctl status cupscups start/running, process 672

O nome do trabalho é dado primeiro seguido do objectivo e estado actual da instância e depois do número de identificação do processo.
Stop: A opção “stop” especifica que o estado desejado deve ser “parado”.

root@john-desktop:~# initctl stop cupscups stop/waiting

Iniciar: A opção “start” iniciará uma nova instância do trabalho especificado.

root@john-desktop:~# initctl start cupscups start/running, process 3574

Restart: Esta opção reiniciará que o trabalho especificado é reiniciado. A instância que for reiniciada manterá a sua configuração original.

root@john-desktop:~# initctl restart cupscups start/running, process 3606

Reload: Esta opção recarregará a instância especificada.

root@john-desktop:~# initctl reload cups

Lista: A lista solicita que todos os trabalhos/ substâncias e o seu estado associado sejam exibidos. Abaixo está um exercício da saída deste comando:

root@john-desktop:~# initctl listavahi-daemon start/running, process 611mountall-net stop/waitingnmbd stop/waitingpasswd stop/waitingrc stop/waitingrsyslog start/running, process 601tty4 start/running, process 1080udev start/running, process 437upstart-udev-bridge start/running, process 429

Configuração de Recarga: Esta opção solicita que o daemon init recarregue os seus ficheiros de configuração. Nenhum trabalho é reiniciado por este comando.

root@john-desktop:~# initctl reload-configuration cups

>p>p>Em circunstâncias normais, não deve ser necessário emitir o comando de recarga acima, pois o “init” observa os seus directórios de configuração com “inotify” e recarrega automaticamente em caso de alteração.

h3>systemd

systemd é outro substituto do Sistema V. systemd significa daemon do sistema. O seu nome é intencionalmente em minúsculas! systemd foi concebido para permitir um melhor tratamento das dependências e ter a capacidade de lidar com mais trabalho em paralelo no arranque. systemd suporta o instantâneo do seu sistema e a restauração do seu estado de sistema, mantém o registo dos processos armazenados no que é conhecido como “cgroup” em oposição ao método convencional “PID”. systemd é agora retomado por muitas distribuições populares de Linux. Fedora, Mandriva, Mageia, Arch Linux. Existem também planos para que o systemd seja incluído em novas versões de RHEL (Red hat).
Como vimos com “System V” e “Upstart” ambos os tipos têm o seu próprio comando único para controlar serviços. O mesmo se aplica ao systemd. O comando que é usado sob systemd é “systemctl”. Abaixo estão alguns exemplos de algumas das funcionalidades básicas do comando “systemctl”.

>th>Description

>td>systemctl start mytest.service

>Stops specified service

>tr>>systemctl status mytest.service>>Systemctl status do serviço especificado >tr>>>systemctl listt-unit-files –type=service>Listas de serviços conhecidos que podem ser iniciados ou parados

>>systemctl restart mytest.service

systemctl reinicia o meu teste.service

systemd command
Starts specified service
systemctl stop mytest.service
Inicia e depois pára o serviço especificado
Se suportado irá recarregar os ficheiros de configuração
systemctl activar mytest.service Equivalente a chkconfig mytest on
systemctl desactivar mytest.service Equivalente a chkconfig mytest off
systemctl is-enabled mytest.service Checks to see if service is configured to start in current runlevel

Deixe uma resposta

O seu endereço de email não será publicado. Campos obrigatórios marcados com *