我们生产服务器上的一个特定文件在明显随机的时间被修改,这似乎与任何日志活动无关。我们无法弄清楚是什么程序在做的,有很多嫌疑。我怎样才能找到罪魁祸首?
它始终是相同的文件,位于相同的路径,但位于不同的服务器和不同的时间。这些框由puppet管理,但在修改文件时,puppet 日志显示没有活动。
什么内核钩子、工具或技术可以帮助我们找到正在修改这个文件的进程?
lsof 不适合这个,因为文件被打开、修改和关闭的速度非常快。任何依赖轮询(例如经常运行 lsof)的解决方案都不好。
升级到新发布版本后,我的bash脚本开始出现错误:
bash: /dev/stderr: Permission denied
Run Code Online (Sandbox Code Playgroud)
在以前的版本中的Bash将在内部承认这些文件的名称(这就是为什么这个问题不是重复这一个),并做正确的事(TM) ,但是,这现在已经不再工作。我该怎么做才能再次成功运行我的脚本?
我曾尝试将运行脚本的用户添加到组中tty,但这没有区别(即使在注销并重新登录后)。
我可以在命令行上毫无问题地重现这个:
$ echo test > /dev/stdout
bash: /dev/stdout: Permission denied
$ echo test > /dev/stderr
bash: /dev/stderr: Permission denied
$ ls -l /dev/stdout /dev/stderr
lrwxrwxrwx 1 root root 15 May 13 02:04 /dev/stderr -> /proc/self/fd/2
lrwxrwxrwx 1 root root 15 May 13 02:04 /dev/stdout -> /proc/self/fd/1
$ ls -lL /dev/stdout /dev/stderr
crw--w---- 1 username tty 136, 1 May 13 05:01 /dev/stderr
crw--w---- 1 …Run Code Online (Sandbox Code Playgroud)