Executando um comando na inicialização

1

Como eu poderia executar um comando na inicialização no ArchLinux usando Systemd como rc.local in Sysv ?

    
por Jordan Doyle 24.12.2013 / 02:01

1 resposta

7

Depende do comando. Para os casos mais comuns, você não precisa de um comando.

  • Se você quiser ajustar um sysctl (um arquivo em /proc/sys ), eles podem ser configurados em /etc/sysctl.d/*.conf (geralmente 99-sysctl.conf ou 99-local.conf ; página de manual ):

    kernel.sysrq = 1
    kernel.pid_max = 4194304
    
  • Se for um parâmetro de módulo em /sys/modules , ele deverá ser definido quando o módulo for carregado pela primeira vez, em /etc/modprobe.d/*.conf (geralmente modprobe.conf ; consulte a página de manual):

    options kafs rootcell=stacken.kth.se
    
  • Se você deseja gravar em um parâmetro de dispositivo em /sys ou se deseja executar um programa para alterar as configurações do dispositivo, escreva uma regra udev que faria isso quando o dispositivo estivesse conectado e coloque-o em /etc/udev/rules.d/*.rules . A página de manual é udev(7) e você encontrará udevadm info útil ao tentar corresponder ao dispositivo correto.

    ACTION=="add", SUBSYSTEM=="net", KERNEL=="eth*", \
        RUN+="/usr/bin/ethtool -s %k wol d"
    
    # This rule checks if a device has an attribute in its /sys subdir:
    ACTION=="add", \
        SUBSYSTEM=="scsi_host", \
        TEST=="link_power_management_policy", \
        ATTR{link_power_management_policy}="medium_power"
    
  • Se você quiser gravar em um arquivo em qualquer outro lugar, ou criar um arquivo ou diretório, use /etc/tmpfiles.d ( página de manual ).

  • Se você quiser carregar um módulo, coloque seu nome em um arquivo em /etc/modules-load.d/*.conf (página manual ).

  • Finalmente, se você quiser executar um comando geral ou iniciar um daemon, escreva um arquivo .service unit ( uma das muitas páginas de manual ). Coloque-o em /etc/systemd/system/*.service e use os muitos exemplos em /lib/systemd/system . Ele será gerenciado por meio de systemctl .

    Algumas observações: o parâmetro Type= precisa ser definido corretamente ( simple vs forking vs oneshot ), e o parâmetro ExecStart= requer um comando simples linha e não aceita sintaxe parecida com shell (não > , não && , não $(...) e assim por diante, apenas $ENVVAR e %x .)

    É possível solicitar serviços depois que um dispositivo específico aparecer, usando After=name.device (por exemplo, After=sys-subsystem-net-devices-%i.device ).

#archlinux e #systemd têm seus canais de IRC na rede freenode .

    
por 24.12.2013 / 03:02