Запуск команды при запуске

2060
Jordan Doyle

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

1

1 ответ на вопрос

7
grawity

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

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

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

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

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

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

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

Это демон, который я хочу запустить, я пытался создать служебный файл, но он завис или что-то в этом роде, и никогда не запускал команду, но она работала, если я запускал ее вручную. Спасибо за подробный ответ. Jordan Doyle 10 лет назад 0
@JordanDoyle: вы можете найти [этот пост в блоге] (http://0pointer.de/blog/projects/systemd-for-admins-3.html) полезным. Обратите также пристальное внимание на параметр ** `Type =` ** в `systemd.service (5)`. Также попробуйте обратиться к IRC-каналу или форумам Arch, поскольку модули systemd должны быть частью пакета, как когда-то были скрипты rc.d. grawity 10 лет назад 0