我有一个/tmp子目录中的某些文件,我写的脚本是用来从头开始的。 打开和closures这些文件几个小时完美罚款。 然后,无处不在,文件不再被发现。
我查看了/var/log/messages ,在文件消失的时候没有看到任何会引起任何标志的事情。
有没有人有任何线索,我怎么能解决这个问题?
是的,我知道/tmp不是我关心的文件的理想位置,但我仍然想知道是什么原因导致此行为。
股票F14只能每天删除一次/tmp文件,只有通过/etc/cron.daily/tmpwatch超过10天才会删除/tmp文件。
你可以使用审计子系统。 假设文件在dir /tmp/help 。 在/etc/audit/audit.rules添加
-a exit,always -F path=/tmp/help
然后用/etc/rc.d/init.d/auditd restart启动auditd。 以下是执行rm /tmp/help/heregoes时在/var/log/audit/audit.loglogging的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。 `
如果同时运行多个脚本实例,是否有问题?
如果存在,请尝试在文件名中使用$$(转换为运行脚本的进程的PID)。 就像是
some_command > /tmp/output.$$
应该做的伎俩。
尝试安装inotify-tools,然后使用inotifywait你应该能够看到文件被触摸的确切时间。 使用inotifywait和lsof的组合应该能够看到什么进程正在接触/ tmp /
SSH依赖于/ tmp /中存在的文件超过几个小时的文件,其他进程是否也受到这个问题的影响?
根据你的发行版本,tmp文件可能会被抹去,因为它们一直没有被触动。
找一个名为“tmpwatch”的cronjob,可能在/etc/cron.daily中
它肯定应该超过“几个小时”,默认是30到60天。