Raspa arquivos em / tmp sendo deletados misteriosamente

1

Eu tenho certos arquivos em um subdiretório /tmp que um script que eu escrevi usa para o rascunho. O abre e fecha esses arquivos perfeitamente bem por algumas horas. Então, do nada, os arquivos não são mais encontrados.

Eu olhei em /var/log/messages e não vejo nada que aumente as bandeiras quando os arquivos desaparecem.

Alguém tem alguma idéia de como eu poderia solucionar isso?

E sim, eu sei que /tmp não é o local ideal para arquivos que me interessam, mas ainda gostaria de saber o que causa esse comportamento.

    
por Belmin Fernandez 03.03.2011 / 01:22

5 respostas

4

O Stock F14 exclui apenas /tmp arquivos uma vez por dia e somente se eles tiverem mais de 10 dias de idade via /etc/cron.daily/tmpwatch .

Você pode usar o subsistema de auditoria. Suponha que os arquivos estejam no diretório /tmp/help . Em /etc/audit/audit.rules add

-a exit,always -F path=/tmp/help

Em seguida, reinicie o auditd com /etc/rc.d/init.d/auditd restart . Aqui está o que está logado em /var/log/audit/audit.log quando executo rm /tmp/help/heregoes :

type=SYSCALL msg=audit(1299113860.183:47): arch=c000003e syscall=263 success=yes exit=0 a0=ffffffffffffff9c a1=133a0c0 a2=0 a3=1 items=2 ppid=21286 pid=21328 auid=500 uid=0 gid=0 euid=0 suid=0 fsuid=0 egid=0 sgid=0 fsgid=0 tty=pts361 ses=1 comm="rm" exe="/bin/rm" subj=unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023 key=(null)
type=CWD msg=audit(1299113860.183:47):  cwd="/root"
type=PATH msg=audit(1299113860.183:47): item=0 name="/tmp/help/" inode=398818 dev=fd:00 mode=040755 ouid=0 ogid=0 rdev=00:00 obj=unconfined_u:object_r:user_tmp_t:s0
type=PATH msg=audit(1299113860.183:47): item=1 name="/tmp/help/heregoes" inode=398819 dev=fd:00 mode=0100644 ouid=0 ogid=0 rdev=00:00 obj=unconfined_u:object_r:user_tmp_t:s0

A primeira linha (bastante longa) mostra o executável, pid e ppid, o que pode ajudar.

    
por 03.03.2011 / 02:00
2

/tmp é usado para armazenamento temporário de arquivos. Normalmente, ele é limpo na inicialização e / ou quando está cheio e / ou nas bases de tempo.

Eu não sei como é no fedora, mas alguns outros sistemas unix usam /etc/init.d/bootclean.sh ou cronjobs. '

    
por 03.03.2011 / 01:36
1

Existe algum problema se houver mais de uma instância do seu script em execução ao mesmo tempo?

Se houver, tente usar $$ (que se traduz no PID do processo que está executando o script) no nome do arquivo. Algo como

some_command > /tmp/output.$$

deve fazer o truque.

    
por 03.03.2011 / 01:40
1

Tente instalar o inotify-tools e, em seguida, usando o inotifywait, você poderá ver exatamente quando o arquivo é tocado. Usando uma combinação de inotifywait e lsof, você deve ser capaz de ver qual processo está tocando / tmp /

O SSH depende de arquivos em / tmp / que existem por mais de horas, outros processos também estão sendo afetados por esse problema?

    
por 03.03.2011 / 01:45
0

Dependendo da sua distribuição, os arquivos tmp estão possivelmente sendo apagados porque eles não foram tocados por um período de tempo.

Procure por um cronjob chamado "tmpwatch", provavelmente em /etc/cron.daily

Deve definitivamente ser mais do que "algumas horas", o padrão é entre 30 e 60 dias.

    
por 03.03.2011 / 01:31