
Systemd
我將如何在 ArchLinux 中使用like rc.local
in啟動時執行命令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=
參數需要一個簡單的命令列,並且不接受類似 shell 的語法( no>
、 no&&
、 no$(...)
等等,只有簡單的$ENVVAR
和%x
。)可以在特定設備出現後使用(例如)來訂購服務。
After=name.device
After=sys-subsystem-net-devices-%i.device
兩個都#archlinux和#systemd有他們的 IRC 頻道自由節點網路。