Назад | Перейти на главную страницу

Скретч-файлы в / tmp загадочно удаляются

У меня есть файлы в /tmp подкаталог, который написанный мной сценарий использует для нуля. Открывает и закрывает эти файлы отлично в течение нескольких часов. Потом ниоткуда файлы больше не находят.

Я заглянул в /var/log/messages и не видите ничего, что поднимало бы какие-либо флаги в то время, когда файлы исчезли.

Кто-нибудь знает, как я могу решить эту проблему?

И да я знаю /tmp не идеальное место для файлов, которые мне небезразличны, но я все же хотел бы знать, что вызывает такое поведение.

Stock F14 только удаляет /tmp файлы один раз в день и только если они старше 10 дней через /etc/cron.daily/tmpwatch.

Вы можете использовать подсистему аудита. Предположим, файлы находятся в каталоге /tmp/help. В /etc/audit/audit.rules Добавить

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

Затем перезапустите auditd с помощью /etc/rc.d/init.d/auditd restart. Вот что авторизовано /var/log/audit/audit.log когда я выполняю 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

Первая (довольно длинная) строка показывает исполняемый файл, pid и ppid, которые могут помочь.

/tmp используется для временного файлового хранилища. Обычно он очищается при загрузке и / или когда он заполнен и / или вовремя.

Я не знаю, как обстоят дела в Fedora, но некоторые другие системы unix используют /etc/init.d/bootclean.sh или cronjobs. `

Попробуйте установить inotify-tools, а затем с помощью inotifywait вы сможете точно увидеть, когда вы касаетесь файла. Используя комбинацию inotifywait и lsof, вы сможете увидеть, какой процесс касается / tmp /

SSH полагается на файлы в / tmp /, которые существуют дольше нескольких часов, влияет ли эта проблема и на другие процессы?

Есть ли проблема, если одновременно работает более 1 экземпляра вашего скрипта?

Если есть, попробуйте использовать $$ (который переводится в PID процесса, запускающего скрипт) в имени файла. Что-то вроде

some_command > /tmp/output.$$

должен сделать свое дело.

В зависимости от вашего дистрибутива файлы tmp, возможно, стираются, потому что они не менялись в течение некоторого времени.

Найдите задание cron с именем "tmpwatch", вероятно, в /etc/cron.daily

Это определенно должно быть больше, чем «несколько часов», значение по умолчанию составляет от 30 до 60 дней.