Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Introdução ao systemd

Introdução ao systemd

Nessa apresentação conto brevemente a história por trás do init e falo um pouco sobre o sysmted, o init padrão da maioria das distros modernas. No finalzinho mostro que não é um bicho de 7 cabeças você fazer da sua aplicação um serviço no systemd.

Daniel Libanori

September 10, 2016
Tweet

More Decks by Daniel Libanori

Other Decks in Programming

Transcript

  1. SysV-style init • initialization • daemon • PID 1 •

    “pai de todos” • runlevels • sequencial/serial
  2. inits? • BSD • System V • Service Management Facility

    (Solaris) • launchd (OS X) • Upstart (Ubuntu até 12.10) • systemd (Maioria das distros modernas)
  3. systemd • system + daemon • 6 anos • Lennart

    Poettering e Kay Sievers • RedHat • maioria das distros modernas: Arch Linux, CentOS, CoreOS, Debian, Fedora, Mageia, openSUSE, Red Hat EL, Ubuntu
  4. Características ✓ daemon ✓ PID 1 ✓ “pai de todos”

    ✓ runlevels ̣ concorrente/paralelo ̣ + que um replacement do init
  5. Funções • Gerenciar o sistema e seus serviços • Plataforma

    de software • Camada entre aplicações e o kernel
  6. Mais que um init • journald: trata de logs •

    logind: gerencia sessões do usuário • networkd: configura a rede • udevd: trata dispositivos • cron, at e outros serviços • +69 binários
  7. Configurando um serviço • Criar o unit file • Instalar

    o serviço • Levantar o serviço • Testar!
  8. Unit File • Seções: Unit, Tipo e Install • Unit:

    informações genéricas independentes do tipo • Install: informações sobre como a unidade deve ser instalada no sistema • Tipos: service, socket, device, mount, automount, swap, target, path, timer, snapshot, slice and scope
  9. # /lib/systemd/system/hello.service [Unit] Description=Hello World from systemd After=syslog.target network.target [Service]

    Type=simple WorkingDirectory=/root/hello_world ExecStart=/usr/bin/rails s -b 0.0.0.0 RestartSec=1 Restart=on-failure StandardOutput=syslog StandardError=syslog [Install] WantedBy=multi-user.target
  10. # systemctl enable hello # systemctl start hello # netstat

    -tnlp # kill -9 2288 # netstat -tnlp # systemctl stop hello # netstat -tnlp