啟動時運行命令

啟動時運行命令

Systemd我將如何在 ArchLinux 中使用like rc.localin啟動時執行命令Sysv

答案1

取決於命令。對於最常見的情況,您需要一個命令。

  • 如果你想調整 sysctl ( 中的檔案/proc/sys),可以在/etc/sysctl.d/*.conf(通常99-sysctl.conf99-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=參數必須設定正確(simplevs forkingvs oneshot),而該ExecStart=參數需要一個簡單的命令列,並且不接受類似 shell 的語法( no >、 no &&、 no$(...)等等,只有簡單的$ENVVAR%x。)

    可以在特定設備出現後使用(例如)來訂購服務。After=name.deviceAfter=sys-subsystem-net-devices-%i.device

兩個都#archlinux#systemd有他們的 IRC 頻道自由節點網路。

相關內容