Systemd
Azure Linux 中 systemd 的 ps 輸出出現巨大延遲
我的 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
我的懷疑是
ps
試圖將數字 UID 轉換為使用者名,查找該 UID,然後超時。查找失敗後,將顯示數字 ID。看看這兩個命令是否顯示不同:
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) 將用於帳戶資訊。如果它破壞了某些東西,可以改回來。