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가 표시됩니다.
이 두 명령에 차이점이 있는지 확인하세요.
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)만 사용하도록 파서에 지시합니다. 뭔가 깨진 경우 다시 변경할 수 있습니다.