У меня есть файлы в /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 дней.