systemdオーバーライドでオプションの設定を解除する

systemdオーバーライドでオプションの設定を解除する

背景:

LXDと互換性のないシステム単位ファイルを提供するパッケージがあります。具体的には、コンテナ内で失敗しているように見える次の2つのオプションを使用します。

[Service]
IOSchedulingClass=realtime
CPUSchedulingPolicy=rr

だから私は努力しますドロップインを使用してそれを上書きします。systemctl edit以下と組み合わせて使用​​:

[Service]
IOSchedulingClass=
CPUSchedulingPolicy=

ただし、次のメッセージが表示されますjournalctl -xe

Jun 17 18:40:14 nickel systemd[1]: [/etc/systemd/system/freeswitch.service.d/override.conf:2] Failed to parse IO scheduling class, ignoring: 
Jun 17 18:40:14 nickel systemd[1]: [/etc/systemd/system/freeswitch.service.d/override.conf:4] Failed to parse CPU scheduling policy, ignoring: 

質問:

そのオプションをキャンセルすることは許可されていないようです。また、空の引用符のペアを使用してみました(例IOSchedulingClass="":)。これを行う正しい方法は何ですか?ユニットファイル全体を上書きできることを知っていますが、可能であれば、圧縮されたユニットファイルの後続の更新をブロックしたくありません。

参照、systemd.exec(5)マンページこれを行う方法があることを提案します。

このオプションを空の文字列として指定すると、IOSchedulingClass =およびIOSchedulingPriority =の以前の仕様はすべて適用されません。

ベストアンサー1

バグのようですが、試してみましょう。

[Service]
IOSchedulingClass=best-effort
CPUSchedulingPolicy=other

それを修正してください。これはioprio_setマンページから取得したデフォルト値ですsched_setscheduler

もちろん、同じ名前のファイルを入れてこれを行うこともできます/etc/systemd/system/。より多くのメンテナンスが必要なので、これを行わないことをお勧めします(コンテナビルドの一部として作成できます)。

おすすめ記事