Nếu tôi 'su root' hoặc 'su <other_user>' từ tài khoản đăng nhập người dùng của mình rồi đăng xuất (hoặc thoát), sẽ mất khoảng 1 phút để quá trình đăng xuất hoàn tất và đưa tôi trở lại trình bao người dùng của mình.
Trong phút đó, quá trình 'su <other_user>' đang sử dụng 100% CPU.
Tôi có thể đăng xuất nhanh hơn một chút nếu tôi ctrl-c một vài lần (điều này có lẽ làm gián đoạn mọi thứ đang chạy khi thoát/đăng xuất).
Điều này xảy ra ngay cả khi tôi không có .profile, .bash_profile, .bashrc, .logout, v.v. trong thư mục chính ~<other_user>.
Nó xảy ra với hoặc với cờ '-l' (đăng nhập shell).
Độ trễ tương tự xảy ra ngay cả khi tôi 'su' sử dụng /bin/sh (ví dụ: 'su <other_user> -s /bin/sh').
Tuy nhiên, nếu tôi chuyển người dùng sang tài khoản của riêng mình (tức là 'su <my_user>') thì quá trình đăng xuất sẽ không bị chậm trễ.
Cũng chạy 'sudo -u <other_user> ' không có độ trễ.
Cụ thể, 'sudo -u root bash' cung cấp cho tôi một trình bao gốc, thoát ngay lập tức (trong khi 'sudo -u root su' trễ trong một phút trở lên).
Bạn có biết điều gì có thể gây ra việc đăng xuất bị trì hoãn như vậy sau khi chuyển sang trình bao người dùng khác không?
(Các) quy trình nào được kích hoạt khi đăng xuất/thoát sẽ gây ra quá trình thoát chậm như vậy?
Lưu ý rằng tôi đang chạy Ubuntu 18.04.
Lưu ý khi chạy 'dấu vết', có vẻ như nó bị treo ở câu lệnh 'openat' cuối cùng:
nhập mã heresrace: Quy trình 27411 được đính kèm
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
+++ đã thoát với 0 +++
Lưu ý: việc chạy "echo 3 >| /proc/sys/vm/drop_caches" theo cách thủ công cũng mất khoảng một phút trong khi tốc độ có vẻ rất nhanh.
Ngay cả khi chạy lại ngay lập tức cũng mất nhiều thời gian như vậy khi chạy lần thứ hai.
Vì vậy, những gì có thể mất quá nhiều thời gian để loại bỏ bộ nhớ cache?
Và như đã lưu ý ở trên, tải cpu tăng vọt lên ~ 100% khi điều đó xảy ra ...