Как мне запустить команду при запуске в ArchLinux, используя Systemd например rc.local в Sysv?
1 ответ
Зависит от команды. Для наиболее распространенных случаев вам не нужна команда.
Если вы хотите настроить 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 .
