我的主目录中突然出现了三个文件,分别是“client_state.xml”、“lockfile”和“time_stats_log”。最后两个是空的。我想知道他们是怎么到那里的。这不是第一次发生,但最后一次是几周前;我删除了文件,没有任何损坏或抱怨。我一直想不起来我在报道的时候在做什么stat $filename。有什么办法可以找出他们来自哪里?
或者,有没有办法监视主目录(但不是子目录)以创建文件?
我们生产服务器上的一个特定文件在明显随机的时间被修改,这似乎与任何日志活动无关。我们无法弄清楚是什么程序在做的,有很多嫌疑。我怎样才能找到罪魁祸首?
它始终是相同的文件,位于相同的路径,但位于不同的服务器和不同的时间。这些框由puppet管理,但在修改文件时,puppet 日志显示没有活动。
什么内核钩子、工具或技术可以帮助我们找到正在修改这个文件的进程?
lsof 不适合这个,因为文件被打开、修改和关闭的速度非常快。任何依赖轮询(例如经常运行 lsof)的解决方案都不好。
我想要一个日志文件,其中包含每次用户运行任何 suid 程序时的条目,其中包含用户名、程序和传递给它的任何命令行参数。有没有标准的方法可以在 Linux 上实现这一点?
LoggedFS配置文件的语法是什么?
官方文档只有loggedfs命令的使用说明和配置文件示例。好的,它是 XML,但是所有可能的标签和属性是什么?它们是什么意思?
我们有一台运行 VMware Server 的机器。它不断创建一个名为not_configuredin的文件/etc/vmware/,这以某种方式使我们的虚拟机无法启动。
我想知道是否有任何可靠的方法可以防止从一开始就创建此文件。
文件本身不包含任何内容,所以我不想创建和写保护它。它首先不应该在那里。
我有一台在 Debian Lenny 下运行的 Linux 服务器,带有 4Go 的 RAM。它运行的不多,只是:
每天 UTC 时间 3:05,服务器几乎所有内存都完全降到底层。在那之后,我有超过 2G 的缓冲区使用并且从未清理过(除非我手动告诉内核删除缓存)。
我在网上搜索了很多,一开始,我认为这是由于 NFS 缓冲区的使用。我使用 gzip/tar 通过 NFS 共享驱动器进行备份,备份发生在 3:05。
但是,我现在处于一个非常奇怪的情况,因为我在 1:40 移动了备份任务(它在 2 分钟内完成)并且我仍然在 3:05 删除了所有 RAM。
在我的日志中,没有什么特别的,除了在 03:05:01,cron 以 root 用户身份打开一个会话并在 03:05:02 立即关闭它而不做任何事情。当然,cron 已经重新启动,我检查了任务的时间——同样,没什么特别的。
知道为什么会这样吗?或者,知道如何跟踪使用所有这些缓冲区的内容吗?
编辑:服务器以 UTC 运行,这里的所有时间都是 UTC。它没有运行任何 NFS 服务器,我也没有安装 mlocate 或 slocate。对于 crontab、daily 和 user crontab,在那个时间什么都不做。
这是我关于 cron 的日志中有趣的部分:
auth.log-20110501:May 1 03:05:01 SRV CRON[15914]: pam_unix(cron:session): session 为用户 root (uid=0)
auth.log-20110501:May 1 03:05:01 打开SRV CRON[15914]: pam_unix(cron:session): session …
我创建了一个小函数,用于strace按名称 'ing 一组当前用户的进程:
function pstrace() {
local pattern="$1";
shift;
prefixDashP $(pgrep -U $(whoami) $pattern) | xargs strace -o /dev/stdout $@;
}
function prefixDashP() {
local new_args=();
for arg; do
new_args+=( '-p' );
new_args+=( "$arg" );
done;
for arg in "${new_args[@]}"; do
echo "$arg";
done;
}
# Usage: pstrace pattern1 pattern2 ...
Run Code Online (Sandbox Code Playgroud)
问题是,如果我不小心指定了太宽泛的模式,它会尝试监视它不应该监视的进程,因此我的系统会冻结。
是否有我可以随时排除的进程列表?
我有一个本地文件系统,它通过 nfs(非常大的 xfs 分区)导出为 rw。
某个地方(我无法确定谁或什么远程进程)正在写入、创建新文件或更新附加更多数据;并且可用磁盘空间很快就不足了。
为了确定哪些文件可以安全地移动到其他地方,我考虑了以下命令:
find . -type f -mtime +15 -size +100M
find . -type f -mmin -2
Run Code Online (Sandbox Code Playgroud)
但是有没有一种通用方法可以调用 find 或任何其他系统实用程序来跟踪当前正在增长/正在写入(远程)的文件?
我有一个通过 SSH 连接到远程主机的脚本,创建临时文件并执行以下命令:
调用系统(mysql --database=information_schema --host=localhost < /tmp/drush_1JAjtt)
每次它创建不同的文件(模式:)drush_xxxxxx。
我已经尝试在远程手动运行几次:
tail -f /tmp/drush_*
Run Code Online (Sandbox Code Playgroud)
但我的连接速度太慢,大多数时候我都会遇到错误:
tail:无法打开`/tmp/drush_*'进行读取:没有这样的文件或目录
有什么技巧可以在创建此类文件后立即访问该文件以显示其内容吗?
linux ×5
files ×3
filesystems ×2
logs ×2
nfs ×2
command-line ×1
debian ×1
find ×1
fuse ×1
memory ×1
monitoring ×1
permissions ×1
process ×1
security ×1
strace ×1
tmp ×1