Por que o strace retorna tantas chamadas execve com o código de retorno ENOENT?

5

Eu queria usar strace para ver o que estava acontecendo quando fiz 'hadoop fs -ls', então executei o comando:

strace -f -e trace=execve hadoop fs -ls /stg que resultou em muitos resultados como este:

[pid 187050] execve("/opt/sas/app/platform/lsf/8.0/linux2.6-glibc2.3-x86_64/etc/setsid", ["setsid", "bash", "-c", "echo $$"], [/* 78 vars */]) = -1 ENOENT (No such file or directory)
[pid 187050] execve("/opt/sas/app/platform/lsf/8.0/linux2.6-glibc2.3-x86_64/bin/setsid", ["setsid", "bash", "-c", "echo $$"], [/* 78 vars */]) = -1 ENOENT (No such file or directory)
[pid 187050] execve("/opt/dca/bin/setsid", ["setsid", "bash", "-c", "echo $$"], [/* 78 vars */]) = -1 ENOENT (No such file or directory)
[pid 187050] execve("/usr/local/greenplum-cc-web/./bin/setsid", ["setsid", "bash", "-c", "echo $$"], [/* 78 vars */]) = -1 ENOENT (No such file or directory)
[pid 187050] execve("/usr/lib64/qt-3.3/bin/setsid", ["setsid", "bash", "-c", "echo $$"], [/* 78 vars */]) = -1 ENOENT (No such file or directory)
[pid 187050] execve("/usr/local/bin/setsid", ["setsid", "bash", "-c", "echo $$"], [/* 78 vars */]) = -1 ENOENT (No such file or directory)
[pid 187050] execve("/bin/setsid", ["setsid", "bash", "-c", "echo $$"], [/* 78 vars */]) = -1 ENOENT (No such file or directory)
[pid 187050] execve("/usr/bin/setsid", ["setsid", "bash", "-c", "echo $$"], [/* 78 vars */]) = 0

Por que haveria tantos -1 ENOENT (No such file or directory) resultados?

    
por jcm 12.03.2015 / 05:02

1 resposta

9

Ele está tentando executar o programa chamando todos os possíveis locais em $PATH -order sem o conhecimento prévio de onde o programa está. Isso é completamente normal porque fazer algo como stat() , em seguida, execve() é considerado uma condição de corrida pelas práticas recomendadas de segurança em muitas lojas de software.

    
por 12.03.2015 / 05:33