如何记录超过24小时的文件访问?
How to record file access over 24 hrs?
我经常无法 运行 在我的服务器上安装 apt-get。像那样:
$ sudo apt-get install tmux
E: Could not get lock /var/lib/dpkg/lock - open (11: Resource
temporarily unavailable)
E: Unable to lock the administration directory (/var/lib/dpkg/), is
another process using it?
经常发生,几乎每天都有。每当我试图找出还有谁用 lsof
命令锁定它时,我就来不及了,锁已经消失了。真的很奇怪。
有没有什么技巧,我怎么能记录超过24小时还有谁在锁定/var/lib/dpkg/lock
?
你可以做一个 运行:
的 cron 作业
lsof | grep /var/lib/dpkg/lock >> whodunit.txt
并尝试当场抓住他们。
我认为有多种解决方案。
1:编写一个简单的脚本,例如while sleep 1; do lsof -n|grep /var/lib/dpkg/lock >>/var/log/dpkglocktmp.log; done
。它很简单,但不是很漂亮,但作为一个短时间的 bugtracking,对我来说还可以。您将在日志文件中获得进程列表。
扩展名: while sleep 1; do lsof -n|grep /var/lib/dpkg/lock; done|tee --append /var/log/dpkglocktmp.log
将同时写入控制台和日志文件。如果你不想让你的 ssh 连接保持活动状态,你可以 运行 在 screen.
2: Linux 内核有一个功能 inotify
,它使进程能够在它们正在监视的文件上发生的事件得到信号。围绕它有很多工具,最著名的是 incron
。它使您能够在文件事件的情况下调用脚本。可能还有更复杂的工具,完全针对与您类似的问题。
我遇到了与 apt 最相似的问题 update/install 问我一些事情,我忘记了,后来尝试 运行 另一个 ssh 会话中的另一个 apt。
我经常无法 运行 在我的服务器上安装 apt-get。像那样:
$ sudo apt-get install tmux
E: Could not get lock /var/lib/dpkg/lock - open (11: Resource
temporarily unavailable)
E: Unable to lock the administration directory (/var/lib/dpkg/), is
another process using it?
经常发生,几乎每天都有。每当我试图找出还有谁用 lsof
命令锁定它时,我就来不及了,锁已经消失了。真的很奇怪。
有没有什么技巧,我怎么能记录超过24小时还有谁在锁定/var/lib/dpkg/lock
?
你可以做一个 运行:
的 cron 作业 lsof | grep /var/lib/dpkg/lock >> whodunit.txt
并尝试当场抓住他们。
我认为有多种解决方案。
1:编写一个简单的脚本,例如while sleep 1; do lsof -n|grep /var/lib/dpkg/lock >>/var/log/dpkglocktmp.log; done
。它很简单,但不是很漂亮,但作为一个短时间的 bugtracking,对我来说还可以。您将在日志文件中获得进程列表。
扩展名: while sleep 1; do lsof -n|grep /var/lib/dpkg/lock; done|tee --append /var/log/dpkglocktmp.log
将同时写入控制台和日志文件。如果你不想让你的 ssh 连接保持活动状态,你可以 运行 在 screen.
2: Linux 内核有一个功能 inotify
,它使进程能够在它们正在监视的文件上发生的事件得到信号。围绕它有很多工具,最著名的是 incron
。它使您能够在文件事件的情况下调用脚本。可能还有更复杂的工具,完全针对与您类似的问题。
我遇到了与 apt 最相似的问题 update/install 问我一些事情,我忘记了,后来尝试 运行 另一个 ssh 会话中的另一个 apt。