1

Как мне запустить команду при запуске в ArchLinux, используя Systemd например rc.local в Sysv?

1 ответ1

7

Зависит от команды. Для наиболее распространенных случаев вам не нужна команда.

  • Если вы хотите настроить sysctl (файл в /proc/sys), его можно настроить в /etc/sysctl.d/*.conf (обычно это 99-sysctl.conf или 99-local.conf ; страница руководства):

    kernel.sysrq = 1
    kernel.pid_max = 4194304
    
  • Если это параметр модуля в /sys/modules , он должен быть установлен при первой загрузке модуля в /etc/modprobe.d/*.conf (обычно modprobe.conf ; см. Страницу руководства):

    options kafs rootcell=stacken.kth.se
    
  • Если вы хотите записать параметр устройства в /sys или запустить программу для изменения настроек устройства, напишите правило udev, которое будет делать это при подключении устройства, и поместите его в /etc/udev/rules.d/*.rules. Страница справочника - udev(7) , и вы найдете udevadm info при попытке найти подходящее устройство.

    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"
    
  • Если вы хотите записать файл в другом месте или создать файл или каталог, используйте /etc/tmpfiles.d (страница руководства).

  • Если вы хотите загрузить модуль, поместите его имя в файл в /etc/modules-load.d/*.conf (страница руководства).

  • Наконец, если вы хотите выполнить общую команду или запустить демон, напишите файл модуля .service (одна из многих страниц справочника). Поместите его в /etc/systemd/system/*.service и используйте множество примеров в /lib/systemd/system . Это будет управляться через systemctl .

    Несколько вещей , чтобы отметить: Type= параметр должны быть установлены правым simple против forking против oneshot и ExecStart= параметр не требует простой командной строки и не принимает подобную раковину синтаксиса > нет && нет $(...) и т. д., только простые $ENVVAR и %x .)

    Можно заказать услуги после появления определенного устройства, используя After=name.device (например, After=sys-subsystem-net-devices-%i.device).

И #archlinux, и #systemd имеют свои IRC-каналы в сети freenode .

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .