web-dev-qa-db-ja.com

systemd:xinetdによって開始されたサービスのコアダンプを取得します

最近、システムをopenSUSE13.1にアップグレードしました。 xinetdを介してシステム上でカスタムビルドのサービスを実行しており、古いxinetdでは、コアダンプを有効にするためにxinetdを開始する前にinitスクリプトにulimit -c unlimitedという行がありました。 openSUSE 13.1はsystemdを使用しているため、これは機能しなくなりました。

systemd-coredumpctlは、クラッシュを確認するカーネルログメッセージがあるにもかかわらず、コアダンプを検出しません。 bashから手動でサービスを開始し、SIGSEGVを送信すると、構成したディレクトリにコアダンプが作成されます。コアダンプを元に戻すにはどうすればよいですか?

4
sjaensch

Systemdは構成ファイルでの制限の設定をサポートしていることがわかりました。情報はさまざまなmanページに散らばっています。 systemd.exec によると、コアダンプの作成/ファイルサイズの制限はLimitCOREで設定されます。さらに、システムが提供する構成ファイルを変更せずに、ユニット/サービス構成を変更することができます。詳細については、 ArchLinux Wiki をご覧ください。したがって、ファイル(および親ディレクトリ)を作成する/etc/systemd/system/xinetd.service.d/core.conf次の内容で

[Service]
LimitCORE=infinity

その後、実行します

# systemctl daemon-reload
# systemctl restart xinetd

コアダンプの作成に必要な変更をアクティブにしました。

4
sjaensch