起動時にコマンドを実行する

起動時にコマンドを実行する

Systemdように使用して、ArchLinux の起動時にコマンドを実行するにはどうすればよいですか?rc.localSysv

答え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ユニットファイル(多くのマニュアルページのうちの1つ)。 中に入れて/etc/systemd/system/*.service、の多くの例を使用します/lib/systemd/system。これは を通じて管理されますsystemctl

    注意すべき点がいくつかあります。Type=パラメータは正しく設定する必要があり (simpleforkingoneshot)、ExecStart=パラメータには単純なコマンド ラインが必要であり、シェルのような構文は受け入れません ( >&&$(...)などは受け入れず、単純な と のみ$ENVVAR受け入れます%x)。

    特定のデバイスが表示された後、(例)を使用してサービスを注文することが可能です。After=name.deviceAfter=sys-subsystem-net-devices-%i.device

両方# アーチリナックスそして#システムIRCチャンネルはフリーノード通信網。

関連情報