ถ้าฉัน 'su root' หรือ 'su <other_user>' จากบัญชีล็อกอินผู้ใช้ของฉันแล้วออกจากระบบ (หรือออก) จะใช้เวลาประมาณ 1 นาทีเพื่อให้การล็อกเอาต์เสร็จสิ้นและนำฉันกลับไปที่เชลล์ผู้ใช้ของฉัน
ในช่วงนาทีนั้น กระบวนการ 'su <other_user>' กำลังใช้ CPU 100%
ฉันสามารถออกจากระบบเร็วขึ้นเล็กน้อยถ้าฉัน ctrl-c สองสามครั้ง (ซึ่งน่าจะขัดจังหวะสิ่งที่กำลังทำงานบนทางออก / ออกจากระบบ)
สิ่งนี้เกิดขึ้นแม้ว่าฉันจะไม่มี .profile, .bash_profile, .bashrc, .logout ฯลฯ ในโฮมไดเร็กทอรี ~<other_user>
มันเกิดขึ้นกับหรือกับแฟล็ก '-l' (ล็อกอินเชลล์)
ความล่าช้าเดียวกันนี้เกิดขึ้นแม้ว่าฉันจะ 'su' โดยใช้ /bin/sh (เช่น 'su <other_user> -s /bin/sh')
อย่างไรก็ตาม หากฉันเปลี่ยนผู้ใช้เป็นบัญชีของฉันเอง (เช่น 'su <my_user>') การออกจากระบบจะไม่มีความล่าช้า
การเรียกใช้ 'sudo -u <other_user>' นั้นไม่มีความล่าช้า
โดยเฉพาะอย่างยิ่ง 'sudo -u root bash' ซึ่งให้เชลล์รูทแก่ฉัน จะออกทันที (ในขณะที่ 'sudo -u root su' ล่าช้าเป็นเวลาหนึ่งนาทีหรือมากกว่านั้น)
มีความคิดอะไรบ้างที่ทำให้เกิดการออกจากระบบล่าช้าหลังจาก su'ing ไปยังเชลล์ผู้ใช้อื่น
กระบวนการใดที่ทริกเกอร์โดยการล็อกเอาต์/ออก ซึ่งจะทำให้การออกล่าช้าดังกล่าว
โปรดทราบว่าฉันใช้ Ubuntu 18.04
หมายเหตุการเรียกใช้ 'strace' ดูเหมือนว่าจะค้างอยู่ในคำสั่ง 'openat' สุดท้าย:
ป้อนรหัสที่นี่: แนบกระบวนการ 27411
openat(AT_FDCWD, "/etc/passwd", O_RDONLY|O_CLOEXEC) = 6
openat(AT_FDCWD, "/etc/login.defs", O_RDONLY) = 6
openat(AT_FDCWD, "/proc/sys/kernel/hostname", O_RDONLY|O_CLOEXEC) = 6
openat(AT_FDCWD, "/etc/passwd", O_RDONLY|O_CLOEXEC) = 7
openat(AT_FDCWD, "/run/fscrypt/1002.count", O_RDWR|O_CREAT|O_CLOEXEC, 0600) = 7
openat(AT_FDCWD, "/etc/group", O_RDONLY|O_CLOEXEC) = 7
openat(AT_FDCWD, "/etc/fscrypt.conf", O_RDONLY|O_CLOEXEC) = 7
openat(AT_FDCWD, "/proc/sys/vm/drop_caches", O_WRONLY|O_SYNC|O_CLOEXEC) = 7
+++ ออกด้วย 0 +++
หมายเหตุ: การเรียกใช้ "echo 3 >| /proc/sys/vm/drop_caches" ด้วยตนเองจะใช้เวลาประมาณหนึ่งนาทีในขณะที่ดูเหมือนว่าจะเร็วมาก
แม้จะเรียกใช้ทันทีอีกครั้งก็ใช้เวลานานเมื่อเรียกใช้ครั้งที่สอง
ดังนั้นสิ่งที่อาจใช้เวลานานในการทิ้งแคช
และตามที่ระบุไว้ข้างต้น โหลดซีพียูพุ่งสูงถึง ~100% เมื่อสิ่งนั้นเกิดขึ้น...