Estou executando manualmente um programa em um cluster, copiando o arquivo executável para cada nó, executando-o e copiando de volta a saída para o nó do servidor. De repente, notei que um arquivo que faz parte de todo esse processo está sendo excluído de forma consistente e não consigo descobrir onde estou fazendo isso ou pelo menos qual script está excluindo-o.
Isso está relacionado à pergunta no SO: link
mas observe que aqui posso replicar o problema. Não tenho direitos de administrador, portanto não posso usar auditd
, mas posso repetir o processo da maneira que desejar. Curiosamente, tentei alterar as permissões do arquivo e ele continua desaparecendo.
Eu não estou esperando nada mágico como
$ please tell me who did
mas estou feliz em ouvir idéias inteligentes sobre como tentar resolver isso.
btw, perguntei ao administrador se algum processo poderia estar excluindo o arquivo e ele disse que isso não é possível.
OBSERVAÇÃO: Originalmente postei isso no SO, mas fui marcado como offtopic
EDIT: Ok, pelo que eu posso ver usando a sugestão de Mark Plotnick strace
, vejo que primeiro eu há uma chamada para gcc
onde o arquivo .c
é compilado. Em seguida, há um lstat
no executável. E então aparece em uma chamada de execve
para /usr/bin/ld
que tem o PID do unlink:
5980 execve("/usr/bin/ld", ["/usr/bin/ld", "-plugin", "/cm/local/apps/gcc/6.3.0/libexec"..., "-plugin-opt=/cm/local/apps/gcc/6"..., "-plug in-opt=-fresolution=/tmp/cc"..., "-plugin-opt=-pass-through=-lgcc", "-plugin-opt=-pass-through=-lgcc_"..., "-plugin-opt=-pass-through=-lc", "-plugin-opt=-pass-through=-lgcc", "-plugin-opt=-pass-through=-lgcc_"..., "--eh-frame-hdr", "-m", "elf_x86_64", "-dynamic-linker", "/lib64 /ld-linux-x86-64.so.2", "-o", "MY/EXECUTABLE/BEING/DELETED", "/lib/../lib64/crt1.o", "/lib/../lib64/crti.o", "/cm/local/apps/gcc/6.3.0/lib/g cc"..., "-L/cm/shared/apps/slurm/17.02.2/"..., "-L/cm/local/apps/gcc/6.3.0/lib/g"..., "-L/cm/local/apps/gcc/6.3.0/lib/g"..., "-L/lib/../lib 64", "-L/usr/lib/../lib64", "-L/cm/shared/apps/slurm/17.02.2/"..., "-L/cm/shared/apps/slurm/17.02.2/"..., "-L/cm/local/apps/gcc/6.3.0/lib/g "..., "/tmp/ccdL3Sax.o", "-lm", "-lgcc", "--as-needed", ...], [/* 39 vars */]) = 0
e depois:
5980 stat("MY/EXECUTABLE/BEING/DELETED", {st_mode=S_IFREG|0755, st_size=17392, ...}) = 0
5980 lstat("MY/EXECUTABLE/BEING/DELETED", {st_mode=S_IFREG|0755, st_size=17392, ...}) = 0
5980 unlink("MY/EXECUTABLE/BEING/DELETED") = 0
5980 open("MY/EXECUTABLE/BEING/DELETED", O_RDWR|O_CREAT|O_TRUNC, 0666) = 3
Tags bash linux shell-script