Eu tenho saída capturada pelo seguinte comando:
strace -f -e trace=process,socketpair,open,close,dup,dup2,read,write -o rsync.log rsync -avcz --progress src/ dst/
é um pouco longo, então eu carreguei aqui . Eu entendo o formato básico de strace
output, por exemplo, a seguinte linha:
1399 open("/lib/x86_64-linux-gnu/libpopt.so.0", O_RDONLY|O_CLOEXEC) = 3
Significa que:
1399
é o PID do processo open(const char *pathname, int flags);
é chamada de sistema com
argumentos particulares (tirados de man 2 open
) 3
é o valor de retorno, um descritor de arquivo neste caso específico (retirado de
man 2 open
) De acordo com este tópico:
rsync
spawns two processes/threads to do the copy, and there's one stream data between the processes, and another from the receiving process to the target file.Using something like
strace -e trace=process,socketpair,open,read,write
would show some threads spawned off, the socket pair being created between them, and different threads opening the input and output files.
Posso, de alguma forma, analisar strace
output para poder confirmar declarações do segmento mencionado e ver o que acontece sob o capô, mesmo que eu não esteja muito familiarizado com a comunicação entre processos? Estou especialmente interessado em passar dados entre processos / threads (quantos dados foram passados de process1 para process2? Onde o process2 escreveu os dados recebidos?)
Eu também vi linhas como essa no log, mas não sei como interpretá-las corretamente:
1399 <... close resumed> ) = 0
1400 <... dup2 resumed> ) = 0