
Как мне запустить команду при запуске 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
или запустить программу для изменения настроек устройства, напишитеудевправило, которое будет делать это, когда устройство подключено и помещено в/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
vsforking
vsoneshot
), аExecStart=
параметр требует простой командной строки и не принимает синтаксис, подобный синтаксису оболочки (no>
, no&&
, no$(...)
и т. д., только simple$ENVVAR
и%x
.)Заказать услуги можно после появления конкретного устройства, используя (например ).
After=name.device
After=sys-subsystem-net-devices-%i.device
Оба#архлинукси#системдимеют свои IRC-каналы насвободный узелсеть.