ターミナルを最初に開いたとき、またはしばらく使用しなかった後に新しいターミナルを開いたとき、ホームディレクトリ内の任意の種類のタブ補完(たとえば、ls
およびタブ )数秒かかります。 autofs
を使用するときに、この動作を以前に見ました。 ネットワークドライブをマウントしますが、~/
には何もありません 。 systemdの自動マウントを使用してNFS共有をマウントしますが、それらは~/badabing/
にあります 、つまり~/
のすべて それ自体は単なるローカルファイルです。
自動マウントの問題である場合は、関連する/etc/fstab
をご覧ください。 行(はい、サーバーは「badabing」と呼ばれます。数年前のソプラノスのビンジで名前を付けました):
badabing:/nfs_shares/music /mnt/badabing/music nfs4 noauto,x-systemd.automount,x-systemd.device-timeout=5sec,x-systemd.idle-timeout=1min 0 0
badabing:/nfs_shares/series /mnt/badabing/series nfs4 noauto,x-systemd.automount,x-systemd.device-timeout=5sec,x-systemd.idle-timeout=1min 0 0
badabing:/nfs_shares/movies /mnt/badabing/movies nfs4 noauto,x-systemd.automount,x-systemd.device-timeout=5sec,x-systemd.idle-timeout=1min 0 0
次に、~/badabing
私が持っている:
$ ls -l ~/badabing/
total 0
lrwxrwxrwx 1 terdon terdon 32 Jan 10 2016 movies -> /mnt/badabing/nfs_shares/movies/
lrwxrwxrwx 1 terdon terdon 31 Jan 10 2016 music -> /mnt/badabing/nfs_shares/music/
lrwxrwxrwx 1 terdon terdon 31 Jan 10 2016 series -> /mnt/badabing/nfs_shares/series
これについてもっと調べたいと思います。どういうわけかstrace
を使用できますか? タブ補完? echo
を追加する唯一の方法です 何がぶら下がっているのかを確認するためのさまざまなbash完了スクリプトのコマンドそれらはかなりたくさんあるので、私はむしろそれを避けたいと思います。
それで、これを引き起こしているのは何ですか、または少なくとも、どうすればさらにデバッグできますか?
承認された回答:
私はこれを行います:
sudo strace -pXXXX -tfo /tmp/strace.log
ここでXXXX bashのプロセスIDです。 NFSマウントされたディレクトリツリーの1つでファイル名の補完を簡単にチェックすると、問題なく機能します。
-f
fork(2)システムコールの結果として現在トレースされているプロセスによって作成された子プロセスをトレースします。
-t
トレースの各行の前に時刻を付けます。
-r
を好む人もいるかもしれません :
-r
各システムコールへのエントリ時に相対タイムスタンプを出力します。これにより、連続するシステムコールの開始間の時間差が記録されます。