OpenSUSE 13.2 で sudo が遅くなるときのメモ
OpenSUSE 13.2 の管理をしているけど,zipper refresh & update した時に(恐らく) dbus 関連がアップデートされたときの話. zipper ps で実行中のバイナリに関するファイルが変更されているとの warning が出るので,
$ sudo rcdbus restart
または
$ sudo systemctl restart dbus
と正直に対応した後に sudo を使うと,何故か毎回 30 〜 60 秒くらい待たされることがあった.
仕方ないので $ sudo strace -o trace.log -r sudo ls
と調べてみると,以下のような結果が得られた(一部抜粋).
... 0.000075 recvmsg(9, {msg_name(0)=NULL, msg_iov(1)=[{"l\4\1\1\n\0\0\0\2\0\0\0\215\0\0\0\1\1o\0\25\0\0\0", 24}], msg_controllen=0, msg_flags=MSG_CMSG_CLOEXEC}, MSG_DONTWAIT|MSG_NOSIGNAL|MSG _CMSG_CLOEXEC) = 24 0.000075 recvmsg(9, {msg_name(0)=NULL, msg_iov(1)=[{"/org/freedesktop/DBus\0\0\0\2\1s\0\24\0\0\0"..., 146}], msg_controllen=0, msg_flags=MSG_CMSG_CLOEXEC}, MSG_DONTWAIT|MSG_NOSIGNAL|MSG_C MSG_CLOEXEC) = 146 0.000636 recvmsg(9, 0x7fff25a66e70, MSG_DONTWAIT|MSG_NOSIGNAL|MSG_CMSG_CLOEXEC) = -1 EAGAIN (Resource temporarily unavailable) 0.000054 ppoll([{fd=9, events=POLLIN}], 1, {24, 999236000}, NULL, 8) = 0 (Timeout) 25.004158 open("/usr/share/locale-langpack/en_US.UTF-8/LC_MESSAGES/libc.mo", O_RDONLY) = -1 ENOENT (No such file or directory) ...
何度やっても recvmsg にて /org/freedesktop/DBus にアクセスした後の ppoll の次の処理で時間がかかっているらしい. 色々調べた挙句,
$ sudo systemctl restart systemd-logind
とコマンドを打つと sudo を使っても待たされることがなくなった. 参考にしたのは以下の URL.
55136 – DBus Timeout on poll(): kdialog, plasma-desktop and other binaries are freezing