Eu queria usar o strace para ver o que estava acontecendo quando eu faço o `hadoop fs -ls ', então executei o comando:
strace -f -e trace=execve hadoop fs -ls /stg
o 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?
linux
linux-kernel
jcm
fonte
fonte
execlp()
eexecvp()
implementa essaPATH
pesquisa. O tipo de condição de corrida é conhecido como "TOCTOU", time-of-check tempo de uso: CWE-367exec
funções chama um shell. São todas as funções da biblioteca C envolvendo aexecve
chamada do sistema. Aexecve
chamada da biblioteca é um invólucro muito fino, as outras cincoexec
funções precisam de mais lógica e provavelmente são implementadas na parte superior daexecve
chamada da biblioteca. Asystem
função de biblioteca, no entanto, chama um shell.