Ausführen eines Befehls beim Start

Ausführen eines Befehls beim Start

Wie gehe ich vor, um beim Start in ArchLinux einen Befehl Systemdwie rc.localin auszuführen Sysv?

Antwort1

Hängt vom Befehl ab. In den meisten Fällennichtbrauche einen Befehl.

  • Wenn Sie ein Sysctl (eine Datei in ) anpassen möchten /proc/sys, können Sie diese in/etc/sysctl.d/*.conf(allgemein 99-sysctl.confoder 99-local.conf;Handbuchseite):

    kernel.sysrq = 1
    kernel.pid_max = 4194304
    
  • Wenn es sich um einen Modulparameter unter handelt /sys/modules, sollte er beim ersten Laden des Moduls festgelegt werden, in/etc/modprobe.d/*.conf(allgemein modprobe.conf, siehe Manualpage):

    options kafs rootcell=stacken.kth.se
    
  • Wenn Sie einen Geräteparameter in schreiben möchten /sysoder ein Programm ausführen möchten, um die Einstellungen des Geräts zu ändern, schreiben Sie eineudevRegel, die dies tun würde, wenn das Gerät angeschlossen ist und es in/etc/udev/rules.d/*.rules. Die Handbuchseite lautet udev(7)und wird Ihnen udevadm infobei der Suche nach dem richtigen Gerät hilfreich sein.

    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"
    
  • Wenn Sie in eine Datei an einer anderen Stelle schreiben oder eine Datei bzw. ein Verzeichnis erstellen möchten, verwenden Sie /etc/tmpfiles.d(Handbuchseite).

  • Wenn Sie wollenBelastungein Modul, legen Sie seinen Namen in einer Datei in/etc/modules-load.d/*.conf(Handbuchseite).

  • Wenn Sie schließlich einen allgemeinen Befehl ausführen oder einen Daemon starten möchten, schreiben Sie eine .serviceUnit-Datei (eine von vielen Manualpages). Legen Sie es in/etc/systemd/system/*.service, und verwenden Sie die vielen Beispiele in /lib/systemd/system. Die Verwaltung erfolgt über systemctl.

    Ein paar Dinge, die zu beachten sind: dieType=Der Parameter muss richtig gesetzt werden ( simpleim Vergleich forkingzu vs oneshot), und der ExecStart=Parameter erfordert eine einfache Befehlszeile und akzeptiert keine Shell-ähnliche Syntax (kein >, kein &&, kein $(...)usw., nur einfaches $ENVVARund %x.)

    Es ist möglich, Dienste zu bestellen, nachdem ein bestimmtes Gerät angezeigt wird, beispielsweise mit ( ).After=name.deviceAfter=sys-subsystem-net-devices-%i.device

Beide#archlinuxUnd#systemdhaben ihre IRC-Kanäle auf demfreenodeNetzwerk.

verwandte Informationen