systemctlを使用してbashスクリプトを介して編集しますか?

systemctlを使用してbashスクリプトを介して編集しますか?

私はDebianを頻繁にインストールします。これには完全に自動化されたpreseed.cfgがあります。プロビジョニングが完了したら、TFTPサーバーからpostinstall.shスクリプトをダウンロードして実行し、いくつかの追加のカスタマイズを実行します。

GNOMEからLXQTEに切り替えて、GDMの代わりにSDDMを使用しています。しかし、SDDMは私のハードウェアと比較して早すぎる起動を試みます。この問題を解決するために、systemctl edit sddm以下を追加しました。

[Service]
ExecStartPre=/bin/sleep 5

これは非常にうまく機能するので、postinstall.shスクリプトに追加してこのプロセスを自動化したいと思います。しかし、systemctl editbashスクリプトを介してファイルの内容を渡す方法がわかりません。どうすればいいですか?

ベストアンサー1

上書きできます$SYSTEMD_EDITOR環境変数を実行するときは、エディタ以外のコマンドを使用してくださいsystemctl edit

たとえば、このようなものを使用するとうまくSYSTEMD_EDITOR='cp /path/to/source.file'動作するようです(とても醜いですが、最後のパラメータがsystemdによって追加されると期待しています!)

場合によっては、以下を使用できます。

$ { echo "[Service]"; 
    echo "ExecStartPre=/bin/sleep 5";
  } >~/tmp/sddm-override.conf
$ sudo env SYSTEMD_EDITOR="cp $HOME/tmp/sddm-override.conf" systemctl edit sddm

しかし、実際にすべきことは、systemctl editディレクトリの下にオーバーレイファイル(この場合はname override.conf)を作成し/etc/systemd/system/<service>.service.d/、存在しない場合はオーバーレイファイルを作成することです。したがって、直接的な方法で行うことも完全に許容されます。 (「挿入」と「上書き」の参照を参照してください。systemd.unitのマニュアルページ詳細については。 )

したがって、あなたの場合、これは適切なソリューションになります。

$ sudo mkdir -p /etc/systemd/system/sddm.service.d/
$ { echo "[Service]"; 
    echo "ExecStartPre=/bin/sleep 5";
  } | sudo tee /etc/systemd/system/sddm.service.d/10-startup-delay.conf
$ sudo systemctl daemon-reload

これにより、デバイスの「ドロップ」ディレクトリに期待される内容を含むファイルが配置されます。その場合は、実行する操作に応じて適切に名前を付けることもできます。

修正する:@GracefulRestartが指摘したように、systemctl daemon-reloadプラグインを直接追加した後にこれを行う必要があります。

おすすめ記事