tramp-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Slow initial connection to remote


From: Michael Albinus
Subject: Re: Slow initial connection to remote
Date: Thu, 10 Aug 2023 16:18:59 +0200
User-agent: Gnus/5.13 (Gnus v5.13)

adam bobrow <bobrow.adam@gmail.com> writes:

> HI,

Hi Adam,

> While connecting a remote host using Tramp, I encounter an
> indeterminate 20 seconds delay after a successful initial connection.

Yes. You seem to have a slow connection to that host (no surpise going
to AWS), but Tramp must support this as well.

> From my understanding, when inspecting the debug log it seems that
> Tramp identifies the remote prompt after about 3 seconds, which I
> assume is just the network latency but then it takes another ~20
> seconds to finally connect.

Yes.

> I'm unsure what's Tramp's actions during these seconds. Your input
> would be appreciated.

I'm inserting all messages with level 6 from your log (these are the
sent commands, and the returned output) plus a comment.

--8<---------------cut here---------------start------------->8---
10:10:42.724900 tramp-call-process (6) # ‘locale -a’ nil  *temp*
10:10:42.748631 tramp-call-process (6) # 0
en_NZ
nl_NL.UTF-8
...
10:10:42.748966 tramp-call-process (6) # ‘ssh -G -o ControlMaster=auto 0.0.0.1’ 
nil nil
10:10:42.760573 tramp-call-process (6) # 0
Pseudo-terminal will not be allocated because stdin is not a terminal.
user bob
hostname 0.0.0.1
...
10:10:42.760697 tramp-call-process (6) # ‘ssh -G -o ControlPath=tramp.%C 
0.0.0.1’ nil nil
10:10:42.766693 tramp-call-process (6) # 0
Pseudo-terminal will not be allocated because stdin is not a terminal.
user bob
hostname 0.0.0.1
...
10:10:42.766811 tramp-call-process (6) # ‘ssh -G -o ControlPersist=no 0.0.0.1’ 
nil nil
10:10:42.772112 tramp-call-process (6) # 0
Pseudo-terminal will not be allocated because stdin is not a terminal.
user bob
hostname 0.0.0.1
port 22
...
--8<---------------cut here---------------end--------------->8---

These are some local commands, where Tramp determines existing locale
encodings and ssh client properties. They are not performance relevant

--8<---------------cut here---------------start------------->8---
10:10:42.783066 tramp-maybe-open-connection (6) # /bin/sh -i
10:10:42.788943 tramp-wait-for-regexp (6) #
#$
10:10:42.789916 tramp-send-command (6) # exec ssh -o ControlMaster=auto -o 
ControlPath=tramp.%C -o ControlPersist=no -e none bobrows
10:10:45.360996 tramp-process-actions (6) #
Welcome to Ubuntu 22.04.2 LTS (GNU/Linux 5.19.0-1029-aws x86_64)

 * Documentation:  https://help.ubuntu.com
 * Management:     https://landscape.canonical.com
 * Support:        https://ubuntu.com/advantage

  System information as of Tue Aug  8 07:10:44 UTC 2023

  System load:  0.0                Processes:             108
  Usage of /:   26.2% of 15.32GB   Users logged in:       1
  Memory usage: 71%                IPv4 address for eth0: 172.31.83.132
  Swap usage:   0%

 * Ubuntu Pro delivers the most comprehensive open source security and
   compliance features.

   https://ubuntu.com/aws/pro

Expanded Security Maintenance for Applications is not enabled.

7 updates can be applied immediately.
To see these additional updates run: apt list --upgradable

Enable ESM Apps to receive additional future security updates.
See https://ubuntu.com/esm or run: sudo pro status


Last login: Tue Aug  8 06:55:11 2023 from 176.230.32.30
$
--8<---------------cut here---------------end--------------->8---

Tramp established the remote shell. 3 seconds, as you have said.

--8<---------------cut here---------------start------------->8---
10:10:45.361199 tramp-send-command (6) # exec env TERM='dumb' 
INSIDE_EMACS='29.1,tramp:2.6.0.29.1' ENV='' HISTFILE=~/.tramp_history 
PROMPT_COMMAND='' PS1=///b2d958bbca0546596c9001895132444f\#\$ PS2='' PS3='' 
/bin/sh  -i
10:10:45.507803 tramp-wait-for-regexp (6) #
///b2d958bbca0546596c9001895132444f#$
--8<---------------cut here---------------end--------------->8---

Tramp opens an interactive shell /bin/sh. This is necessary, because
Tramp cannot know, whether your login shell is POSIX compliant. It sets
also the shell prompt to the random string
"///b2d958bbca0546596c9001895132444f#$" in order to detect it reliably.

Now it checks some shell properties.

--8<---------------cut here---------------start------------->8---
10:10:45.508291 tramp-send-command (6) # (cd ~/) 2>/dev/null; echo 
tramp_exit_status $?
10:10:45.652286 tramp-wait-for-regexp (6) #
tramp_exit_status 0
///b2d958bbca0546596c9001895132444f#$
--8<---------------cut here---------------end--------------->8---

Check, whether the remote shell supports tilde expansion.

--8<---------------cut here---------------start------------->8---
10:10:45.653454 tramp-send-command (6) # set +o vi +o emacs
10:10:45.796193 tramp-wait-for-regexp (6) #
///b2d958bbca0546596c9001895132444f#$
--8<---------------cut here---------------end--------------->8---

Remove some shell options for editing.

--8<---------------cut here---------------start------------->8---
10:10:45.796312 tramp-send-command (6) # stty -inlcr -onlcr -echo kill '^U' 
erase '^H'
10:10:45.940105 tramp-wait-for-regexp (6) #
///b2d958bbca0546596c9001895132444f#$
--8<---------------cut here---------------end--------------->8---

Some stty options are set.

--8<---------------cut here---------------start------------->8---
10:10:45.940577 tramp-send-command (6) # echo foo
10:10:46.089959 tramp-wait-for-regexp (6) #
foo
///b2d958bbca0546596c9001895132444f#$
--8<---------------cut here---------------end--------------->8---

Tramp checks, whether the shell echos the input. In that case, Tramp
would need to apply further settings.

--8<---------------cut here---------------start------------->8---
10:10:46.091114 tramp-send-command (6) # echo \"`uname -sr`\" 2>/dev/null; echo 
tramp_exit_status $?
10:10:46.238650 tramp-wait-for-regexp (6) #
"Linux 5.19.0-1029-aws"
tramp_exit_status 0
///b2d958bbca0546596c9001895132444f#$
--8<---------------cut here---------------end--------------->8---

Tramp checks the OS identification. This is needed in order to know,
whether cached values could still be applied.

--8<---------------cut here---------------start------------->8---
10:10:46.240146 tramp-send-command (6) # locale -a
10:10:46.386628 tramp-wait-for-regexp (6) #
C
C.utf8
en_US.utf8
POSIX
///b2d958bbca0546596c9001895132444f#$
--8<---------------cut here---------------end--------------->8---

Determining remote encoding systems.

--8<---------------cut here---------------start------------->8---
10:10:46.387088 tramp-send-command (6) # (echo foo ; echo bar)
10:10:46.532667 tramp-wait-for-regexp (6) #
foo
bar
///b2d958bbca0546596c9001895132444f#$
--8<---------------cut here---------------end--------------->8---

Check, which end-of-line conversion is applied.

Now, Tramp tries to determine the remote PATH, derived from tramp-remote-path.

--8<---------------cut here---------------start------------->8---
10:10:46.533944 tramp-send-command (6) # echo \"`getconf PATH 2>/dev/null`\" 
2>/dev/null; echo tramp_exit_status $?
10:10:46.678553 tramp-wait-for-regexp (6) #
"/bin:/usr/bin"
tramp_exit_status 0
///b2d958bbca0546596c9001895132444f#$
--8<---------------cut here---------------end--------------->8---

Tramp reads the default PATH on the remote side. The result must be
taken instead of the tramp-default-remote-path entry in
tramp-remote-path.

--8<---------------cut here---------------start------------->8---
10:10:46.680856 tramp-send-command (6) # test 0 2>/dev/null; echo 
tramp_exit_status $?
10:10:46.826778 tramp-wait-for-regexp (6) #
tramp_exit_status 0
///b2d958bbca0546596c9001895132444f#$
10:10:46.828039 tramp-send-command (6) # test -d /bin 2>/dev/null; echo 
tramp_exit_status $?
10:10:46.972647 tramp-wait-for-regexp (6) #
tramp_exit_status 0
///b2d958bbca0546596c9001895132444f#$
10:10:46.974137 tramp-send-command (6) # test -d /usr/bin 2>/dev/null; echo 
tramp_exit_status $?
10:10:47.122504 tramp-wait-for-regexp (6) #
tramp_exit_status 0
///b2d958bbca0546596c9001895132444f#$
10:10:47.124766 tramp-send-command (6) # test -d /sbin 2>/dev/null; echo 
tramp_exit_status $?
10:10:47.268654 tramp-wait-for-regexp (6) #
tramp_exit_status 0
///b2d958bbca0546596c9001895132444f#$
10:10:47.271035 tramp-send-command (6) # test -d /usr/sbin 2>/dev/null; echo 
tramp_exit_status $?
10:10:47.415802 tramp-wait-for-regexp (6) #
tramp_exit_status 0
///b2d958bbca0546596c9001895132444f#$
10:10:47.418543 tramp-send-command (6) # test -d /usr/local/bin 2>/dev/null; 
echo tramp_exit_status $?
10:10:47.563556 tramp-wait-for-regexp (6) #
tramp_exit_status 0
///b2d958bbca0546596c9001895132444f#$
10:10:47.565623 tramp-send-command (6) # test -d /usr/local/sbin 2>/dev/null; 
echo tramp_exit_status $?
10:10:47.710066 tramp-wait-for-regexp (6) #
tramp_exit_status 0
///b2d958bbca0546596c9001895132444f#$
10:10:47.712109 tramp-send-command (6) # test -d /local/bin 2>/dev/null; echo 
tramp_exit_status $?
10:10:47.857122 tramp-wait-for-regexp (6) #
tramp_exit_status 1
///b2d958bbca0546596c9001895132444f#$
10:10:47.859479 tramp-send-command (6) # test -d /local/freeware/bin 
2>/dev/null; echo tramp_exit_status $?
10:10:48.004416 tramp-wait-for-regexp (6) #
tramp_exit_status 1
///b2d958bbca0546596c9001895132444f#$
10:10:48.006812 tramp-send-command (6) # test -d /local/gnu/bin 2>/dev/null; 
echo tramp_exit_status $?
10:10:48.151278 tramp-wait-for-regexp (6) #
tramp_exit_status 1
///b2d958bbca0546596c9001895132444f#$
10:10:48.153849 tramp-send-command (6) # test -d /usr/freeware/bin 2>/dev/null; 
echo tramp_exit_status $?
10:10:48.298645 tramp-wait-for-regexp (6) #
tramp_exit_status 1
///b2d958bbca0546596c9001895132444f#$
10:10:48.300810 tramp-send-command (6) # test -d /usr/pkg/bin 2>/dev/null; echo 
tramp_exit_status $?
10:10:48.445221 tramp-wait-for-regexp (6) #
tramp_exit_status 1
///b2d958bbca0546596c9001895132444f#$
10:10:48.447192 tramp-send-command (6) # test -d /usr/contrib/bin 2>/dev/null; 
echo tramp_exit_status $?
10:10:48.591086 tramp-wait-for-regexp (6) #
tramp_exit_status 1
///b2d958bbca0546596c9001895132444f#$
10:10:48.593445 tramp-send-command (6) # test -d /opt/bin 2>/dev/null; echo 
tramp_exit_status $?
10:10:48.740577 tramp-wait-for-regexp (6) #
tramp_exit_status 1
///b2d958bbca0546596c9001895132444f#$
10:10:48.742222 tramp-send-command (6) # test -d /opt/sbin 2>/dev/null; echo 
tramp_exit_status $?
10:10:48.886329 tramp-wait-for-regexp (6) #
tramp_exit_status 1
///b2d958bbca0546596c9001895132444f#$
10:10:48.887902 tramp-send-command (6) # test -d /opt/local/bin 2>/dev/null; 
echo tramp_exit_status $?
10:10:49.031505 tramp-wait-for-regexp (6) #
tramp_exit_status 1
///b2d958bbca0546596c9001895132444f#$
--8<---------------cut here---------------end--------------->8---

Tramp checks, whether the lements of tramp-remote-path exists as
directory on remote. This is a bit lengthy, and takes ~2.5 secs. In
Tramp 2.7 of Emacs 30 this has already been optimized to the following:

--8<---------------cut here---------------start------------->8---
11:43:56.711931 tramp-send-command (6) # test 0 2>/dev/null; echo 
tramp_exit_status $?
11:43:56.716921 tramp-wait-for-regexp (6) #
tramp_exit_status 0
///de92b9d2e097e5a47f922a53fbf6ce95#$
11:43:56.717014 tramp-send-command (6) # test -e / 2>/dev/null; echo 
tramp_exit_status $?
11:43:56.721971 tramp-wait-for-regexp (6) #
tramp_exit_status 0
///de92b9d2e097e5a47f922a53fbf6ce95#$
11:43:56.722091 tramp-send-command (6) # test -e /\ this\ file\ does\ not\ 
exist\  2>/dev/null; echo tramp_exit_status $?
11:43:56.727791 tramp-wait-for-regexp (6) #
tramp_exit_status 1
///de92b9d2e097e5a47f922a53fbf6ce95#$
11:43:56.727870 tramp-maybe-send-script (5) # Sending script 
‘tramp_bundle_read_file_names’...
11:43:56.728274 tramp-send-command (6) # tramp_bundle_read_file_names () {
echo "("
while read file; do
    quoted=`echo "$file" | sed -e "s/\"/\\\\\\\\\"/"`
    if test -e "$file"; then
        echo "(\"$quoted\" \"file-exists-p\" t)"
    else
        echo "(\"$quoted\" \"file-exists-p\" nil)"
    fi
    if test -r "$file"; then
        echo "(\"$quoted\" \"file-readable-p\" t)"
    else
        echo "(\"$quoted\" \"file-readable-p\" nil)"
    fi
    if test -d "$file"; then
        echo "(\"$quoted\" \"file-directory-p\" t)"
    else
        echo "(\"$quoted\" \"file-directory-p\" nil)"
    fi
done
echo ")"
} 2>/dev/null; echo tramp_exit_status $?
11:43:56.735065 tramp-wait-for-regexp (6) #
tramp_exit_status 0
///de92b9d2e097e5a47f922a53fbf6ce95#$
11:43:56.735135 tramp-maybe-send-script (5) # Sending script 
‘tramp_bundle_read_file_names’...done
11:43:56.735326 tramp-send-command (6) # tramp_bundle_read_file_names 
<<'f4c81f0f29763272577fd1074a61bd23'
/bin
/usr/bin
/sbin
/usr/sbin
/usr/local/bin
/usr/local/sbin
/local/bin
/local/freeware/bin
/local/gnu/bin
/usr/freeware/bin
/usr/pkg/bin
/usr/contrib/bin
/opt/bin
/opt/sbin
/opt/local/bin
f4c81f0f29763272577fd1074a61bd23
11:43:56.766415 tramp-wait-for-regexp (6) #
(
("/bin" "file-exists-p" t)
("/bin" "file-readable-p" t)
("/bin" "file-directory-p" t)
...
)
///de92b9d2e097e5a47f922a53fbf6ce95#$
--8<---------------cut here---------------end--------------->8---

These are 5 network roundtrips instead of 16 roundtrips as in your case,
and it delivers more information which will be cache for further use.

--8<---------------cut here---------------start------------->8---
10:10:49.033189 tramp-send-command (6) # getconf PIPE_BUF / 2>/dev/null || echo 
4096 2>/dev/null; echo tramp_exit_status $?
10:10:49.180557 tramp-wait-for-regexp (6) #
tramp_exit_status 0
///b2d958bbca0546596c9001895132444f#$
10:10:49.181293 tramp-send-command (6) # 
PATH=/bin:/usr/bin:/sbin:/usr/sbin:/usr/local/bin:/usr/local/sbin && export PATH
10:10:49.327015 tramp-wait-for-regexp (6) #
///b2d958bbca0546596c9001895132444f#$
10:10:49.327571 tramp-send-command (6) # echo ~root
10:10:49.475422 tramp-wait-for-regexp (6) #
/root
///b2d958bbca0546596c9001895132444f#$
10:10:49.476229 tramp-send-command (6) # mesg n 2>/dev/null; biff n 2>/dev/null
10:10:49.623059 tramp-wait-for-regexp (6) #
///b2d958bbca0546596c9001895132444f#$
10:10:49.623419 tramp-send-command (6) # stty tab0
10:10:49.767952 tramp-wait-for-regexp (6) #
///b2d958bbca0546596c9001895132444f#$
10:10:49.768517 tramp-send-command (6) # stty iutf8 2>/dev/null
10:10:49.914552 tramp-wait-for-regexp (6) #
///b2d958bbca0546596c9001895132444f#$
10:10:49.915674 tramp-send-command (6) # echo \"`tty`\" 2>/dev/null; echo 
tramp_exit_status $?
10:10:50.063651 tramp-wait-for-regexp (6) #
"/dev/pts/1"
tramp_exit_status 0
///b2d958bbca0546596c9001895132444f#$
--8<---------------cut here---------------end--------------->8---

The remote path will be set, and further information about the remote
shell is collected or set.

--8<---------------cut here---------------start------------->8---
10:10:50.064712 tramp-send-command (6) # while read var val; do export 
$var="$val"; done <<'f94a09c93c0fe54f28bd3cc55aa5148f'
LC_ALL en_US.utf8
ENV ''
TMOUT 0
LC_CTYPE ''
PAGER cat
f94a09c93c0fe54f28bd3cc55aa5148f
10:10:50.211449 tramp-wait-for-regexp (6) #
///b2d958bbca0546596c9001895132444f#$
10:10:50.211952 tramp-send-command (6) # unset CDPATH HISTORY MAIL MAILCHECK 
MAILPATH autocorrect correct
10:10:50.355948 tramp-wait-for-regexp (6) #
///b2d958bbca0546596c9001895132444f#$
--8<---------------cut here---------------end--------------->8---

The remote environment is set, according to the value of
tramp-remote-process-environment.

Well, until here everything is just initialization of the connection.
Five seconds after the inital three seconds of login via ssh.

All of this is needed. One idea to optimize is to install a shell-script
on the remote, which does the same, and which is sourced. This would
reduce the number of network roundtrips.

The following Tramp commands do implement the insert-directory call from
dired. Looks like you wnat to insert "/".

--8<---------------cut here---------------start------------->8---
10:10:50.356627 tramp-send-command (6) # test 0 2>/dev/null; echo 
tramp_exit_status $?
10:10:50.518305 tramp-wait-for-regexp (6) #
tramp_exit_status 0
///b2d958bbca0546596c9001895132444f#$
10:10:50.519638 tramp-send-command (6) # test -e / 2>/dev/null; echo 
tramp_exit_status $?
10:10:50.664123 tramp-wait-for-regexp (6) #
tramp_exit_status 0
///b2d958bbca0546596c9001895132444f#$
10:10:50.665297 tramp-send-command (6) # test -e /\ this\ file\ does\ not\ 
exist\  2>/dev/null; echo tramp_exit_status $?
10:10:50.808932 tramp-wait-for-regexp (6) #
tramp_exit_status 1
///b2d958bbca0546596c9001895132444f#$
--8<---------------cut here---------------end--------------->8---

Test, which shel command implements the test for existence of a
file. This would be skipped if you don't call emacs -q, because Tramp
caches this information.

--8<---------------cut here---------------start------------->8---
10:10:50.809446 tramp-send-command (6) # test -e / 2>/dev/null; echo 
tramp_exit_status $?
10:10:50.959084 tramp-wait-for-regexp (6) #
tramp_exit_status 0
///b2d958bbca0546596c9001895132444f#$
--8<---------------cut here---------------end--------------->8---

Test, whether "e/" exists. This should have been skipped, because we
know the result already, which should be cached.

--8<---------------cut here---------------start------------->8---
10:10:50.961902 tramp-send-command (6) # which \perl5 | wc -w
10:10:51.108130 tramp-wait-for-regexp (6) #
0
///b2d958bbca0546596c9001895132444f#$
10:10:51.109028 tramp-send-command (6) # while read d; do if test -x $d/perl5 
&& test -f $d/perl5; then echo tramp_executable $d/perl5; break; fi; done 
<<'f94a09c93c0fe54f28bd3cc55aa5148f'
/bin
/usr/bin
/sbin
/usr/sbin
/usr/local/bin
/usr/local/sbin
f94a09c93c0fe54f28bd3cc55aa5148f
10:10:51.254934 tramp-wait-for-regexp (6) #
///b2d958bbca0546596c9001895132444f#$
10:10:51.256494 tramp-send-command (6) # which \perl | wc -w
10:10:51.403335 tramp-wait-for-regexp (6) #
///b2d958bbca0546596c9001895132444f#$
10:10:51.404343 tramp-send-command (6) # \perl -e 'print "Hello
";' 2>/dev/null; echo tramp_exit_status $?
10:10:51.552891 tramp-wait-for-regexp (6) #
Hello
tramp_exit_status 0
///b2d958bbca0546596c9001895132444f#$
10:10:51.553584 tramp-send-command (6) # \perl -e 'use File::Spec;' 
2>/dev/null; echo tramp_exit_status $?
10:10:51.709730 tramp-wait-for-regexp (6) #
tramp_exit_status 0
///b2d958bbca0546596c9001895132444f#$
10:10:51.710529 tramp-send-command (6) # \perl -e 'use Cwd "realpath";' 
2>/dev/null; echo tramp_exit_status $?
10:10:51.861455 tramp-wait-for-regexp (6) #
tramp_exit_status 0
///b2d958bbca0546596c9001895132444f#$
--8<---------------cut here---------------end--------------->8---

Tramp checks, whether Perl is installed on the remote machine, and which
Perl modules exist. Again, this would be skipped when Emacs isn't called
with option -q.

--8<---------------cut here---------------start------------->8---
10:10:51.863801 tramp-send-command (6) # tramp_perl_file_name_all_completions 
() {
\perl -e '
opendir(d, $ARGV[0]) || die("$ARGV[0]: $!\nfail\n");
@files = readdir(d); closedir(d);
foreach $f (@files) {
 if (-d "$ARGV[0]/$f") {
  print "$f/\n";
 }
 else {
  print "$f\n";
 }
}
print "ok\n"
' "$1" 2>/dev/null
} 2>/dev/null; echo tramp_exit_status $?
10:10:52.013782 tramp-wait-for-regexp (6) #
tramp_exit_status 0
///b2d958bbca0546596c9001895132444f#$
10:10:52.014783 tramp-send-command (6) # tramp_perl_file_name_all_completions /
10:10:52.169003 tramp-wait-for-regexp (6) #
proc/
boot/
./
../
sys/
home/
sbin/
media/
lib/
lib64/
tmp/
usr/
srv/
lost+found/
run/
snap/
dev/
libx32/
var/
etc/
mnt/
opt/
bin/
root/
lib32/
ok
///b2d958bbca0546596c9001895132444f#$
10:10:52.170675 tramp-send-command (6) # test -e /proc/ 2>/dev/null; echo 
tramp_exit_status $?
10:10:52.316529 tramp-wait-for-regexp (6) #
tramp_exit_status 0
///b2d958bbca0546596c9001895132444f#$
10:10:52.319705 tramp-send-command (6) # test -e /boot/ 2>/dev/null; echo 
tramp_exit_status $?
10:10:52.466834 tramp-wait-for-regexp (6) #
tramp_exit_status 0
///b2d958bbca0546596c9001895132444f#$
10:10:52.470731 tramp-send-command (6) # test -e /sys/ 2>/dev/null; echo 
tramp_exit_status $?
10:10:52.616431 tramp-wait-for-regexp (6) #
tramp_exit_status 0
///b2d958bbca0546596c9001895132444f#$
10:10:52.619203 tramp-send-command (6) # test -e /home/ 2>/dev/null; echo 
tramp_exit_status $?
10:10:52.784502 tramp-wait-for-regexp (6) #
tramp_exit_status 0
///b2d958bbca0546596c9001895132444f#$
10:10:52.785565 tramp-send-command (6) # test -e /sbin/ 2>/dev/null; echo 
tramp_exit_status $?
10:10:52.941879 tramp-wait-for-regexp (6) #
tramp_exit_status 0
///b2d958bbca0546596c9001895132444f#$
10:10:52.942875 tramp-send-command (6) # test -e /media/ 2>/dev/null; echo 
tramp_exit_status $?
10:10:53.086842 tramp-wait-for-regexp (6) #
tramp_exit_status 0
///b2d958bbca0546596c9001895132444f#$
10:10:53.089062 tramp-send-command (6) # test -e /lib/ 2>/dev/null; echo 
tramp_exit_status $?
10:10:53.235537 tramp-wait-for-regexp (6) #
tramp_exit_status 0
///b2d958bbca0546596c9001895132444f#$
10:10:53.238165 tramp-send-command (6) # test -e /lib64/ 2>/dev/null; echo 
tramp_exit_status $?
10:10:53.382299 tramp-wait-for-regexp (6) #
tramp_exit_status 0
///b2d958bbca0546596c9001895132444f#$
10:10:53.385644 tramp-send-command (6) # test -e /tmp/ 2>/dev/null; echo 
tramp_exit_status $?
10:10:53.533287 tramp-wait-for-regexp (6) #
tramp_exit_status 0
///b2d958bbca0546596c9001895132444f#$
10:10:53.536175 tramp-send-command (6) # test -e /usr/ 2>/dev/null; echo 
tramp_exit_status $?
10:10:53.680455 tramp-wait-for-regexp (6) #
tramp_exit_status 0
///b2d958bbca0546596c9001895132444f#$
10:10:53.683901 tramp-send-command (6) # test -e /srv/ 2>/dev/null; echo 
tramp_exit_status $?
10:10:53.833850 tramp-wait-for-regexp (6) #
tramp_exit_status 0
///b2d958bbca0546596c9001895132444f#$
10:10:53.836880 tramp-send-command (6) # test -e /lost\+found/ 2>/dev/null; 
echo tramp_exit_status $?
10:10:53.980820 tramp-wait-for-regexp (6) #
tramp_exit_status 0
///b2d958bbca0546596c9001895132444f#$
10:10:53.983102 tramp-send-command (6) # test -e /run/ 2>/dev/null; echo 
tramp_exit_status $?
10:10:54.131703 tramp-wait-for-regexp (6) #
tramp_exit_status 0
///b2d958bbca0546596c9001895132444f#$
10:10:54.133966 tramp-send-command (6) # test -e /snap/ 2>/dev/null; echo 
tramp_exit_status $?
10:10:54.278660 tramp-wait-for-regexp (6) #
tramp_exit_status 0
///b2d958bbca0546596c9001895132444f#$
10:10:54.280988 tramp-send-command (6) # test -e /dev/ 2>/dev/null; echo 
tramp_exit_status $?
10:10:54.429472 tramp-wait-for-regexp (6) #
tramp_exit_status 0
///b2d958bbca0546596c9001895132444f#$
10:10:54.432234 tramp-send-command (6) # test -e /libx32/ 2>/dev/null; echo 
tramp_exit_status $?
10:10:54.577279 tramp-wait-for-regexp (6) #
tramp_exit_status 0
///b2d958bbca0546596c9001895132444f#$
10:10:54.580011 tramp-send-command (6) # test -e /var/ 2>/dev/null; echo 
tramp_exit_status $?
10:10:54.723628 tramp-wait-for-regexp (6) #
tramp_exit_status 0
///b2d958bbca0546596c9001895132444f#$
10:10:54.727213 tramp-send-command (6) # test -e /etc/ 2>/dev/null; echo 
tramp_exit_status $?
10:10:54.871704 tramp-wait-for-regexp (6) #
tramp_exit_status 0
///b2d958bbca0546596c9001895132444f#$
10:10:54.874573 tramp-send-command (6) # test -e /mnt/ 2>/dev/null; echo 
tramp_exit_status $?
10:10:55.022816 tramp-wait-for-regexp (6) #
tramp_exit_status 0
///b2d958bbca0546596c9001895132444f#$
10:10:55.025549 tramp-send-command (6) # test -e /opt/ 2>/dev/null; echo 
tramp_exit_status $?
10:10:55.171516 tramp-wait-for-regexp (6) #
tramp_exit_status 0
///b2d958bbca0546596c9001895132444f#$
10:10:55.174759 tramp-send-command (6) # test -e /bin/ 2>/dev/null; echo 
tramp_exit_status $?
10:10:55.320591 tramp-wait-for-regexp (6) #
tramp_exit_status 0
///b2d958bbca0546596c9001895132444f#$
10:10:55.322823 tramp-send-command (6) # test -e /root/ 2>/dev/null; echo 
tramp_exit_status $?
10:10:55.468947 tramp-wait-for-regexp (6) #
tramp_exit_status 0
///b2d958bbca0546596c9001895132444f#$
10:10:55.471495 tramp-send-command (6) # test -e /lib32/ 2>/dev/null; echo 
tramp_exit_status $?
10:10:55.623197 tramp-wait-for-regexp (6) #
tramp_exit_status 0
///b2d958bbca0546596c9001895132444f#$
10:10:55.631264 tramp-send-command (6) # test -d /tmp 2>/dev/null; echo 
tramp_exit_status $?
10:10:55.776077 tramp-wait-for-regexp (6) #
tramp_exit_status 0
///b2d958bbca0546596c9001895132444f#$
10:10:55.778602 tramp-send-command (6) # test -w /tmp 2>/dev/null; echo 
tramp_exit_status $?
10:10:55.933606 tramp-wait-for-regexp (6) #
tramp_exit_status 0
///b2d958bbca0546596c9001895132444f#$
--8<---------------cut here---------------end--------------->8---

Now it has detected, which file names exist in directory
"/". Afterwards, it call file-exists-p for every single file name. This
shouldn't be needed, because we know it already from the very first
call. Will fix it.

--8<---------------cut here---------------start------------->8---
10:10:55.984905 tramp-send-command (6) # which \readlink | wc -w
10:10:56.131247 tramp-wait-for-regexp (6) #
///b2d958bbca0546596c9001895132444f#$
10:10:56.131926 tramp-send-command (6) # \readlink --canonicalize-missing / 
2>/dev/null; echo tramp_exit_status $?
10:10:56.280149 tramp-wait-for-regexp (6) #
/
tramp_exit_status 0
///b2d958bbca0546596c9001895132444f#$
10:10:56.280874 tramp-send-command (6) # \readlink --canonicalize-missing 
/tmp/tramp.1OxNuK 2>/dev/null; echo tramp_exit_status $?
10:10:56.428292 tramp-wait-for-regexp (6) #
/tmp/tramp.1OxNuK
tramp_exit_status 0
///b2d958bbca0546596c9001895132444f#$
10:10:56.430533 tramp-send-command (6) # which \stat | wc -w
10:10:56.579881 tramp-wait-for-regexp (6) #
///b2d958bbca0546596c9001895132444f#$
10:10:56.581060 tramp-send-command (6) # env QUOTING_STYLE=locale \stat -c 
'("%N" %s)' / 2>/dev/null; echo tramp_exit_status $?
10:10:56.727085 tramp-wait-for-regexp (6) #
("‘/’" 4096)
tramp_exit_status 0
///b2d958bbca0546596c9001895132444f#$
--8<---------------cut here---------------end--------------->8---

Tramp checks for the commands readlink, stat, id, getfacl,
selinuxenabled, ls. This will be skipped when the cache is filled, i.e.,
Emacs isn't started with -q.

--8<---------------cut here---------------start------------->8---
10:10:56.730284 tramp-send-command (6) # tramp_stat_file_attributes () {
(env QUOTING_STYLE=locale \stat -c '((/////%N/////) %h (/////%U///// . %u) 
(/////%G///// . %g) %X %Y %Z %s /////%A///// t %i -1)' "$1" 2>/dev/null || echo 
nil) | sed -e 's/"/\\"/g' -e 's/\/\/\/\/\//"/g'
} 2>/dev/null; echo tramp_exit_status $?
10:10:56.873939 tramp-wait-for-regexp (6) #
tramp_exit_status 0
///b2d958bbca0546596c9001895132444f#$
10:10:56.875770 tramp-send-command (6) # tramp_stat_file_attributes 
/tmp/tramp.1OxNuK 2>/dev/null; echo tramp_exit_status $?
10:10:57.024093 tramp-wait-for-regexp (6) #
nil
tramp_exit_status 0
///b2d958bbca0546596c9001895132444f#$
10:10:57.028450 tramp-send-command (6) # tramp_stat_file_attributes 
/tmp/.\#tramp.1OxNuK 2>/dev/null; echo tramp_exit_status $?
10:10:57.177696 tramp-wait-for-regexp (6) #
nil
tramp_exit_status 0
///b2d958bbca0546596c9001895132444f#$
10:10:57.183304 tramp-send-command (6) # while read d; do if test -x $d/id && 
test -f $d/id; then echo tramp_executable $d/id; break; fi; done 
<<'f94a09c93c0fe54f28bd3cc55aa5148f'
/bin
/usr/bin
/sbin
/usr/sbin
/usr/local/bin
/usr/local/sbin
f94a09c93c0fe54f28bd3cc55aa5148f
10:10:57.329597 tramp-wait-for-regexp (6) #
tramp_executable /bin/id
///b2d958bbca0546596c9001895132444f#$
10:10:57.330412 tramp-send-command (6) # /bin/id -u 2>/dev/null; echo 
tramp_exit_status $?
10:10:57.475579 tramp-wait-for-regexp (6) #
tramp_exit_status 0
///b2d958bbca0546596c9001895132444f#$
10:10:57.476133 tramp-send-command (6) # /bin/id
10:10:57.621091 tramp-wait-for-regexp (6) #
uid=1000(ubuntu) gid=1000(ubuntu) 
groups=1000(ubuntu),4(adm),20(dialout),24(cdrom),25(floppy),27(sudo),29(audio),30(dip),44(video),46(plugdev),119(netdev),120(lxd)
///b2d958bbca0546596c9001895132444f#$
10:10:57.624805 tramp-send-command (6) # getfacl / 2>/dev/null; echo 
tramp_exit_status $?
10:10:57.770571 tramp-wait-for-regexp (6) #
tramp_exit_status 127
///b2d958bbca0546596c9001895132444f#$
10:10:57.772502 tramp-send-command (6) # selinuxenabled 2>/dev/null; echo 
tramp_exit_status $?
10:10:57.917808 tramp-wait-for-regexp (6) #
tramp_exit_status 127
///b2d958bbca0546596c9001895132444f#$
10:10:57.925161 tramp-send-command (6) # \readlink --canonicalize-missing 
/tmp/.\#tramp.1OxNuK 2>/dev/null; echo tramp_exit_status $?
10:10:58.072059 tramp-wait-for-regexp (6) #
/tmp/.#tramp.1OxNuK
tramp_exit_status 0
///b2d958bbca0546596c9001895132444f#$
10:10:58.076061 tramp-send-command (6) # \readlink --canonicalize-missing /tmp 
2>/dev/null; echo tramp_exit_status $?
10:10:58.219747 tramp-wait-for-regexp (6) #
/tmp
tramp_exit_status 0
///b2d958bbca0546596c9001895132444f#$
10:10:58.221680 tramp-send-command (6) # tramp_stat_file_attributes /tmp 
2>/dev/null; echo tramp_exit_status $?
10:10:58.367661 tramp-wait-for-regexp (6) #
(("‘/tmp’") 12 ("root" . 0) ("root" . 0) 1691353271 1691478541 1691478541 4096 
"drwxrwxrwt" t 1532 -1)
tramp_exit_status 0
///b2d958bbca0546596c9001895132444f#$
10:10:58.812922 tramp-send-command (6) # cat </dev/null >/tmp/tramp.1OxNuK
10:10:58.957050 tramp-wait-for-regexp (6) #
///b2d958bbca0546596c9001895132444f#$
10:10:58.959124 tramp-send-command (6) # chown 1000:1000 /tmp/tramp.1OxNuK
10:10:59.105067 tramp-wait-for-regexp (6) #
///b2d958bbca0546596c9001895132444f#$
10:10:59.109225 tramp-send-command (6) # test -d /tmp/.\#tramp.1OxNuK 
2>/dev/null; echo tramp_exit_status $?
10:10:59.252813 tramp-wait-for-regexp (6) #
tramp_exit_status 1
///b2d958bbca0546596c9001895132444f#$
10:10:59.254344 tramp-send-command (6) # rm -f /tmp/.\#tramp.1OxNuK 
2>/dev/null; echo tramp_exit_status $?
10:10:59.402444 tramp-wait-for-regexp (6) #
tramp_exit_status 0
///b2d958bbca0546596c9001895132444f#$
10:10:59.404801 tramp-send-command (6) # test -e /TMP/TRAMP.1OXNUK 2>/dev/null; 
echo tramp_exit_status $?
10:10:59.549755 tramp-wait-for-regexp (6) #
tramp_exit_status 1
///b2d958bbca0546596c9001895132444f#$
10:10:59.552222 tramp-send-command (6) # test -d /tmp/tramp.1OxNuK 2>/dev/null; 
echo tramp_exit_status $?
10:10:59.696979 tramp-wait-for-regexp (6) #
tramp_exit_status 1
///b2d958bbca0546596c9001895132444f#$
10:10:59.698775 tramp-send-command (6) # rm -f /tmp/tramp.1OxNuK 2>/dev/null; 
echo tramp_exit_status $?
10:10:59.843104 tramp-wait-for-regexp (6) #
tramp_exit_status 0
///b2d958bbca0546596c9001895132444f#$
--8<---------------cut here---------------end--------------->8---

Tramp uses a temporary file in order to determine whether the remote
file system is case insensitive. Again, the result is cached, and it
won't bechecked when Emacs ist started with -q.

--8<---------------cut here---------------start------------->8---
10:10:59.844624 tramp-send-command (6) # echo ~ 2>/dev/null; echo 
tramp_exit_status $?
10:10:59.989071 tramp-wait-for-regexp (6) #
/home/ubuntu
tramp_exit_status 0
///b2d958bbca0546596c9001895132444f#$
10:10:59.991753 tramp-send-command (6) # test -d / 2>/dev/null; echo 
tramp_exit_status $?
10:11:00.144573 tramp-wait-for-regexp (6) #
tramp_exit_status 0
///b2d958bbca0546596c9001895132444f#$
10:11:00.178011 tramp-send-command (6) # \readlink --canonicalize-missing / 
2>/dev/null; echo tramp_exit_status $?
10:11:00.321508 tramp-wait-for-regexp (6) #
/
tramp_exit_status 0
///b2d958bbca0546596c9001895132444f#$
10:11:00.323201 tramp-send-command (6) # tramp_stat_file_attributes / 
2>/dev/null; echo tramp_exit_status $?
10:11:00.473671 tramp-wait-for-regexp (6) #
(("‘/’") 19 ("root" . 0) ("root" . 0) 1691438920 1691157693 1691157693 4096 
"drwxr-xr-x" t 2 -1)
tramp_exit_status 0
///b2d958bbca0546596c9001895132444f#$
10:11:00.477098 tramp-send-command (6) # while read d; do if test -x $d/ls && 
test -f $d/ls; then echo tramp_executable $d/ls; break; fi; done 
<<'f94a09c93c0fe54f28bd3cc55aa5148f'
/bin
/usr/bin
/sbin
/usr/sbin
/usr/local/bin
/usr/local/sbin
f94a09c93c0fe54f28bd3cc55aa5148f
10:11:00.622091 tramp-wait-for-regexp (6) #
tramp_executable /bin/ls
///b2d958bbca0546596c9001895132444f#$
10:11:00.623145 tramp-send-command (6) # /bin/ls -lnd / 2>/dev/null; echo 
tramp_exit_status $?
10:11:00.769499 tramp-wait-for-regexp (6) #
drwxr-xr-x 19 0 0 4096 Aug  4 14:01 /
tramp_exit_status 0
///b2d958bbca0546596c9001895132444f#$
10:11:00.770847 tramp-send-command (6) # /bin/ls --color=never -al /dev/null 
2>/dev/null; echo tramp_exit_status $?
10:11:00.918373 tramp-wait-for-regexp (6) #
crw-rw-rw- 1 root root 1, 3 Aug  4 14:01 /dev/null
tramp_exit_status 0
///b2d958bbca0546596c9001895132444f#$
10:11:00.919172 tramp-send-command (6) # /bin/ls --color=never --help 2>&1 | 
grep -iq busybox 2>/dev/null; echo tramp_exit_status $?
10:11:01.064643 tramp-wait-for-regexp (6) #
tramp_exit_status 1
///b2d958bbca0546596c9001895132444f#$
10:11:01.116123 tramp-send-command (6) # /bin/ls --color=never 
--quoting-style=literal --show-control-chars -al /dev/null 2>/dev/null; echo 
tramp_exit_status $?
10:11:01.260252 tramp-wait-for-regexp (6) #
crw-rw-rw- 1 root root 1, 3 Aug  4 14:01 /dev/null
tramp_exit_status 0
///b2d958bbca0546596c9001895132444f#$
10:11:01.260973 tramp-send-command (6) # /bin/ls --color=never --help 2>&1 | 
grep -iq busybox 2>/dev/null; echo tramp_exit_status $?
10:11:01.414277 tramp-wait-for-regexp (6) #
tramp_exit_status 1
///b2d958bbca0546596c9001895132444f#$
10:11:01.415118 tramp-send-command (6) # /bin/ls --color=never --dired -al 
/dev/null 2>/dev/null; echo tramp_exit_status $?
10:11:01.562774 tramp-wait-for-regexp (6) #
  crw-rw-rw- 1 root root 1, 3 Aug  4 14:01 /dev/null
//DIRED// 43 52
//DIRED-OPTIONS// --quoting-style=shell-escape
tramp_exit_status 0
///b2d958bbca0546596c9001895132444f#$
10:11:01.563583 tramp-send-command (6) # /bin/ls --color=never --dired -al 
--quoting-style\=literal --show-control-chars /. 2>/dev/null
10:11:01.710489 tramp-wait-for-regexp (6) #
  total 72
  drwxr-xr-x  19 root root  4096 Aug  4 14:01 .
  drwxr-xr-x  19 root root  4096 Aug  4 14:01 ..
  lrwxrwxrwx   1 root root     7 May 16 02:08 bin -> usr/bin
  drwxr-xr-x   4 root root  4096 Aug  3 20:02 boot
  drwxr-xr-x  15 root root  3220 Aug  4 14:01 dev
  drwxr-xr-x 106 root root  4096 Aug  5 20:39 etc
  drwxr-xr-x   3 root root  4096 Aug  3 16:43 home
  lrwxrwxrwx   1 root root     7 May 16 02:08 lib -> usr/lib
  lrwxrwxrwx   1 root root     9 May 16 02:08 lib32 -> usr/lib32
  lrwxrwxrwx   1 root root     9 May 16 02:08 lib64 -> usr/lib64
  lrwxrwxrwx   1 root root    10 May 16 02:08 libx32 -> usr/libx32
  drwx------   2 root root 16384 May 16 02:10 lost+found
  drwxr-xr-x   2 root root  4096 May 16 02:08 media
  drwxr-xr-x   2 root root  4096 May 16 02:08 mnt
  drwxr-xr-x   2 root root  4096 May 16 02:08 opt
  dr-xr-xr-x 170 root root     0 Aug  4 14:01 proc
  drwx------   6 root root  4096 Aug  6 20:34 root
  drwxr-xr-x  30 root root  1000 Aug  8 07:10 run
  lrwxrwxrwx   1 root root     8 May 16 02:08 sbin -> usr/sbin
  drwxr-xr-x   8 root root  4096 May 16 02:14 snap
  drwxr-xr-x   2 root root  4096 May 16 02:08 srv
  dr-xr-xr-x  13 root root     0 Aug  4 14:01 sys
  drwxrwxrwt  12 root root  4096 Aug  8 07:10 tmp
  drwxr-xr-x  14 root root  4096 May 16 02:08 usr
  drwxr-xr-x  14 root root  4096 Aug  3 20:14 var
//DIRED// 57 58 105 107 154 157 215 219 266 269 316 319 366 370 417 420 478 483 
543 548 608 614 675 685 732 737 784 787 834 837 884 888 935 939 986 989 1036 
1040 1099 1103 1150 1153 1200 1203 1250 1253 1300 1303 1350 1353
//DIRED-OPTIONS// --quoting-style=literal
///b2d958bbca0546596c9001895132444f#$
10:11:01.715724 tramp-send-command (6) # which \df | wc -w
10:11:01.860922 tramp-wait-for-regexp (6) #
///b2d958bbca0546596c9001895132444f#$
10:11:01.861781 tramp-send-command (6) # \df --block-size=1 
--output=size,used,avail / 2>/dev/null; echo tramp_exit_status $?
10:11:02.019485 tramp-wait-for-regexp (6) #
  1B-blocks       Used       Avail
tramp_exit_status 0
///b2d958bbca0546596c9001895132444f#$
10:11:02.020397 tramp-send-command (6) # \df --block-size=1 
--output=size,used,avail /
10:11:02.166279 tramp-wait-for-regexp (6) #
  1B-blocks       Used       Avail
///b2d958bbca0546596c9001895132444f#$
10:11:02.185833 tramp-send-command (6) # test -d /bin 2>/dev/null; echo 
tramp_exit_status $?
10:11:02.333808 tramp-wait-for-regexp (6) #
tramp_exit_status 0
///b2d958bbca0546596c9001895132444f#$
10:11:02.334989 tramp-send-command (6) # \readlink --canonicalize-missing /bin/ 
2>/dev/null; echo tramp_exit_status $?
10:11:02.479253 tramp-wait-for-regexp (6) #
/usr/bin
tramp_exit_status 0
///b2d958bbca0546596c9001895132444f#$
10:11:02.479979 tramp-send-command (6) # tramp_stat_file_attributes /bin/ 
2>/dev/null; echo tramp_exit_status $?
10:11:02.628979 tramp-wait-for-regexp (6) #
(("‘/bin/’") 2 ("root" . 0) ("root" . 0) 1691438483 1691438480 1691438480 32768 
"drwxr-xr-x" t 1534 -1)
tramp_exit_status 0
///b2d958bbca0546596c9001895132444f#$
10:11:02.631371 tramp-send-command (6) # test -e /usr/bin/ 2>/dev/null; echo 
tramp_exit_status $?
10:11:02.777834 tramp-wait-for-regexp (6) #
tramp_exit_status 0
///b2d958bbca0546596c9001895132444f#$
10:11:02.780959 tramp-send-command (6) # test -d /usr/bin 2>/dev/null; echo 
tramp_exit_status $?
10:11:02.926683 tramp-wait-for-regexp (6) #
tramp_exit_status 0
///b2d958bbca0546596c9001895132444f#$
10:11:02.931895 tramp-send-command (6) # test -d /lib 2>/dev/null; echo 
tramp_exit_status $?
10:11:03.076314 tramp-wait-for-regexp (6) #
tramp_exit_status 0
///b2d958bbca0546596c9001895132444f#$
10:11:03.078308 tramp-send-command (6) # \readlink --canonicalize-missing /lib/ 
2>/dev/null; echo tramp_exit_status $?
10:11:03.222430 tramp-wait-for-regexp (6) #
/usr/lib
tramp_exit_status 0
///b2d958bbca0546596c9001895132444f#$
10:11:03.223740 tramp-send-command (6) # tramp_stat_file_attributes /lib/ 
2>/dev/null; echo tramp_exit_status $?
10:11:03.369637 tramp-wait-for-regexp (6) #
(("‘/lib/’") 91 ("root" . 0) ("root" . 0) 1691395088 1691168912 1691168912 4096 
"drwxr-xr-x" t 2890 -1)
tramp_exit_status 0
///b2d958bbca0546596c9001895132444f#$
10:11:03.370869 tramp-send-command (6) # test -e /usr/lib/ 2>/dev/null; echo 
tramp_exit_status $?
10:11:03.516336 tramp-wait-for-regexp (6) #
tramp_exit_status 0
///b2d958bbca0546596c9001895132444f#$
10:11:03.519313 tramp-send-command (6) # test -d /usr/lib 2>/dev/null; echo 
tramp_exit_status $?
10:11:03.663707 tramp-wait-for-regexp (6) #
tramp_exit_status 0
///b2d958bbca0546596c9001895132444f#$
10:11:03.667497 tramp-send-command (6) # test -d /lib32 2>/dev/null; echo 
tramp_exit_status $?
10:11:03.812067 tramp-wait-for-regexp (6) #
tramp_exit_status 0
///b2d958bbca0546596c9001895132444f#$
10:11:03.814717 tramp-send-command (6) # \readlink --canonicalize-missing 
/lib32/ 2>/dev/null; echo tramp_exit_status $?
10:11:03.962056 tramp-wait-for-regexp (6) #
/usr/lib32
tramp_exit_status 0
///b2d958bbca0546596c9001895132444f#$
10:11:03.963275 tramp-send-command (6) # tramp_stat_file_attributes /lib32/ 
2>/dev/null; echo tramp_exit_status $?
10:11:04.110258 tramp-wait-for-regexp (6) #
(("‘/lib32/’") 2 ("root" . 0) ("root" . 0) 1684203159 1684202893 1684203022 
4096 "drwxr-xr-x" t 16684 -1)
tramp_exit_status 0
///b2d958bbca0546596c9001895132444f#$
10:11:04.112076 tramp-send-command (6) # test -e /usr/lib32/ 2>/dev/null; echo 
tramp_exit_status $?
10:11:04.258907 tramp-wait-for-regexp (6) #
tramp_exit_status 0
///b2d958bbca0546596c9001895132444f#$
10:11:04.262347 tramp-send-command (6) # test -d /usr/lib32 2>/dev/null; echo 
tramp_exit_status $?
10:11:04.407593 tramp-wait-for-regexp (6) #
tramp_exit_status 0
///b2d958bbca0546596c9001895132444f#$
10:11:04.412180 tramp-send-command (6) # test -d /lib64 2>/dev/null; echo 
tramp_exit_status $?
10:11:04.556176 tramp-wait-for-regexp (6) #
tramp_exit_status 0
///b2d958bbca0546596c9001895132444f#$
10:11:04.558422 tramp-send-command (6) # \readlink --canonicalize-missing 
/lib64/ 2>/dev/null; echo tramp_exit_status $?
10:11:04.703683 tramp-wait-for-regexp (6) #
/usr/lib64
tramp_exit_status 0
///b2d958bbca0546596c9001895132444f#$
10:11:04.705615 tramp-send-command (6) # tramp_stat_file_attributes /lib64/ 
2>/dev/null; echo tramp_exit_status $?
10:11:04.854088 tramp-wait-for-regexp (6) #
(("‘/lib64/’") 2 ("root" . 0) ("root" . 0) 1684203159 1684202921 1684203022 
4096 "drwxr-xr-x" t 16685 -1)
tramp_exit_status 0
///b2d958bbca0546596c9001895132444f#$
10:11:04.855937 tramp-send-command (6) # test -e /usr/lib64/ 2>/dev/null; echo 
tramp_exit_status $?
10:11:05.000318 tramp-wait-for-regexp (6) #
tramp_exit_status 0
///b2d958bbca0546596c9001895132444f#$
10:11:05.003792 tramp-send-command (6) # test -d /usr/lib64 2>/dev/null; echo 
tramp_exit_status $?
10:11:05.147607 tramp-wait-for-regexp (6) #
tramp_exit_status 0
///b2d958bbca0546596c9001895132444f#$
10:11:05.151810 tramp-send-command (6) # test -d /libx32 2>/dev/null; echo 
tramp_exit_status $?
10:11:05.294937 tramp-wait-for-regexp (6) #
tramp_exit_status 0
///b2d958bbca0546596c9001895132444f#$
10:11:05.295515 tramp-send-command (6) # \readlink --canonicalize-missing 
/libx32/ 2>/dev/null; echo tramp_exit_status $?
10:11:05.439118 tramp-wait-for-regexp (6) #
/usr/libx32
tramp_exit_status 0
///b2d958bbca0546596c9001895132444f#$
10:11:05.440563 tramp-send-command (6) # tramp_stat_file_attributes /libx32/ 
2>/dev/null; echo tramp_exit_status $?
10:11:05.586118 tramp-wait-for-regexp (6) #
(("‘/libx32/’") 2 ("root" . 0) ("root" . 0) 1684203159 1684202893 1684203022 
4096 "drwxr-xr-x" t 16687 -1)
tramp_exit_status 0
///b2d958bbca0546596c9001895132444f#$
10:11:05.588184 tramp-send-command (6) # test -e /usr/libx32/ 2>/dev/null; echo 
tramp_exit_status $?
10:11:05.735307 tramp-wait-for-regexp (6) #
tramp_exit_status 0
///b2d958bbca0546596c9001895132444f#$
10:11:05.738509 tramp-send-command (6) # test -d /usr/libx32 2>/dev/null; echo 
tramp_exit_status $?
10:11:05.883028 tramp-wait-for-regexp (6) #
tramp_exit_status 0
///b2d958bbca0546596c9001895132444f#$
10:11:05.888500 tramp-send-command (6) # test -d /sbin 2>/dev/null; echo 
tramp_exit_status $?
10:11:06.034148 tramp-wait-for-regexp (6) #
tramp_exit_status 0
///b2d958bbca0546596c9001895132444f#$
10:11:06.037148 tramp-send-command (6) # \readlink --canonicalize-missing 
/sbin/ 2>/dev/null; echo tramp_exit_status $?
10:11:06.181017 tramp-wait-for-regexp (6) #
/usr/sbin
tramp_exit_status 0
///b2d958bbca0546596c9001895132444f#$
10:11:06.182945 tramp-send-command (6) # tramp_stat_file_attributes /sbin/ 
2>/dev/null; echo tramp_exit_status $?
10:11:06.322636 tramp-send-command (6) # \readlink --canonicalize-missing 
/sbin/ 2>/dev/null; echo tramp_exit_status $?
10:11:06.327874 tramp-wait-for-regexp (6) #
(("‘/sbin/’") 2 ("root" . 0) ("root" . 0) 1691352324 1691182481 1691182481 
20480 "drwxr-xr-x" t 2495 -1)
tramp_exit_status 0
///b2d958bbca0546596c9001895132444f#$
10:11:06.328659 tramp-send-command (6) # tramp_stat_file_attributes /sbin/ 
2>/dev/null; echo tramp_exit_status $?
10:11:06.468228 tramp-send-command (6) # \readlink --canonicalize-missing 
/sbin/ 2>/dev/null; echo tramp_exit_status $?
10:11:06.468924 tramp-wait-for-regexp (6) #
/usr/sbin
tramp_exit_status 0
///b2d958bbca0546596c9001895132444f#$
10:11:06.469723 tramp-send-command (6) # tramp_stat_file_attributes /sbin/ 
2>/dev/null; echo tramp_exit_status $?
10:11:06.474105 tramp-wait-for-regexp (6) #
(("‘/sbin/’") 2 ("root" . 0) ("root" . 0) 1691352324 1691182481 1691182481 
20480 "drwxr-xr-x" t 2495 -1)
tramp_exit_status 0
///b2d958bbca0546596c9001895132444f#$
10:11:06.475042 tramp-send-command (6) # test -e /usr/sbin/ 2>/dev/null; echo 
tramp_exit_status $?
10:11:06.613430 tramp-wait-for-regexp (6) #
/usr/sbin
tramp_exit_status 0
///b2d958bbca0546596c9001895132444f#$
10:11:06.618360 tramp-send-command (6) # test -d /usr/sbin 2>/dev/null; echo 
tramp_exit_status $?
10:11:06.619113 tramp-wait-for-regexp (6) #
(("‘/sbin/’") 2 ("root" . 0) ("root" . 0) 1691352324 1691182481 1691182481 
20480 "drwxr-xr-x" t 2495 -1)
tramp_exit_status 0
///b2d958bbca0546596c9001895132444f#$tramp_exit_status 0
///b2d958bbca0546596c9001895132444f#$
--8<---------------cut here---------------end--------------->8---

Finally, Tramp inserts the directory listing of "/". There are some
symlinks in that directory, which are checked whether they are stale.

That's it. Proposals for improvements are welcome.

Best regards, Michael.



















> Thank you,
>
> Adam Bobrow



reply via email to

[Prev in Thread] Current Thread [Next in Thread]