ps出力で膨大な遅延が発生します。systemd-networkd
最初のラインを出力するときに大きな遅延があります()。20到着25秒後すぐに残りを表示します。
$ ps -eaf
. . .
systemd+ 31865 1 0 Jul22 ? 00:00:10 /lib/systemd/systemd-networkd
62583 31891 1 0 Jul22 ? 00:00:12 /lib/systemd/systemd-timesyncd
root 31922 1 0 Jul22 ? 00:02:09 /lib/systemd/systemd-journald
. . .
理由と解決策をご存知ですか?
$ time ps -o uname -p 31891
USER
62583
real 0m25.025s
user 0m0.006s
sys 0m0.006s
$ time getent passwd 62583 | wc
0 0 0
real 0m25.030s
user 0m0.005s
sys 0m0.001s
$ grep 62583 /etc/passwd | wc
0 0 0
$ grep passwd /etc/nsswitch.conf
passwd: compat systemd
$ grep compat /etc/nsswitch.conf
passwd: compat systemd
group: compat systemd
shadow: compat
$ lsb_release -a
No LSB modules are available.
Distributor ID: Ubuntu
Description: Ubuntu 18.04.1 LTS
Release: 18.04
Codename: bionic
$ uname -rm
5.4.0-1047-azure x86_64
答え1
私の疑いは、ps
数値のUIDをユーザー名に変換しようとし、そのUIDを見つけてからタイムアウトすることです。照会が失敗した場合、数値IDが表示されます。
これら2つのコマンドに違いがあることを確認してください。
ps -o uid -p 31891
ps -o uname -p 31891
今、クエリが発生してタイムアウトするのはなぜですか?ユーザー名にNISを設定できますか?あなたは何のためですかgrep passwd /etc/nsswitch.conf
?探してみると確認できますが空になりgetent passwd 62583
そうです。
修理する:
NIS/NIS+を情報システムとして使用していないと思うなら(これは非常に単一システムでは一般的ではありません)nsswitch.confの行を次のように変更してこの機能をオフにすることができます。
passwd: files
アカウント情報を保存するためにローカルファイル(/ etc / passwd)のみを使用するようにパーサーに指示します。何かが壊れた場合は、もう一度変更できます。