LINUX+ 例外の根本原因を見つける - バス接続の作成に失敗しました: リソースを一時的に使用できない

LINUX+ 例外の根本原因を見つける - バス接続の作成に失敗しました: リソースを一時的に使用できない

timedatectlRHELサーバーバージョン7.6では、奇妙なコマンド例外が発生します。

timedatectl set-timezone UTC
Failed to create bus connection: Resource temporarily unavailable

この例外に基づいて、Google 検索で dbus サービスを再起動すると役に立つことがわかりました。サービスを通じて dbus を再起動してみました。

systemctl restar dbus.service

しかし、我々は得る

Error getting authority: Error initializing authority: Could not connect: Resource temporarily unavailable (g-io-error-quark, 27)

dbusデバッグの後、私たちは次のようにPIDを終了することが解決策であることを発見しました。kill -9

〜のように

ps -ef | grep dbus
dbus        775      1  0 May22 ?        00:27:30 /usr/bin/dbus-daemon --system --address=systemd: --nofork --nopidfile --systemd-activation

kill 775

それではもう一度やりましょう。

timedatectl set-timezone UTC

上記は成功です

だから解決策が見つかるまで私たちの手順に従ってください。

私たちの回避策が「バス接続を作成できませんでした:リソースを一時的に使用できません」の正しい解決策であることを知りたいです。

そして、「バス接続を作成できませんでした:リソースを一時的に使用できません」という例外が発生するのはなぜですか?timedatectl

Dバスとは?

D-Busは、異なるソースのアプリケーション間の通信システムです。このシステムを介して(D-Busを実装している場合)、独自のアプリケーションを呼び出すこともできます。ライブラリはスタンドアロンプ​​ログラムではなく実行可能ファイルの一部であるため、ライブラリとは異なる役割を果たします。 D-Busのアイデアは、Windows OLE、COM、ActiveXオブジェクトに触発されました。 Windows COM オブジェクトは、他のプログラムからすべてのプログラムを呼び出す簡単な方法を提供し、同じプログラミング言語を使用せずに、あるプログラムを別のプログラムに直感的に含めることもできます。 D-Busはそれほど発展していませんが、UNIXに不十分な通信を提供しました。

答え1

言及した「リソースを一時的に使用できません」というエラーは、通常、グローバルまたはローカルのリソース制限に達したときに発生します。

つまり、またはまたはulimitのグローバル値です。/sys/proc

コマンドを呼び出すときにコマンドラインで最も一般的な理由は、通常スレッド制限に達したためです。

ulimit -aこの値が高いことを確認することをお勧めします。

ノート:ジョブulimitは次の目的で使用されます。仕事プロセス(すべてのスレッドを含む)ではないため、信頼できる数を取得するには、次の作業を行う必要があります。$(pgrep -wu your_user | wc -l)

関連情報