Linux 如何在24小时内记录文件访问?
我经常无法在我的服务器上运行apt-get-install。就像这样:Linux 如何在24小时内记录文件访问?,linux,apt,dpkg,lsof,Linux,Apt,Dpkg,Lsof,我经常无法在我的服务器上运行apt-get-install。就像这样: $ 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
$ 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小时以上,还有谁在锁定
/变量/解放党/dpkg/锁定
?您可以创建一个运行以下命令的cron作业:
lsof | grep /var/lib/dpkg/lock >> whodunit.txt
试着在行动中抓住他们。我认为有多种解决方案 1:编写一个简单的脚本,例如在sleep 1时编写
;do lsof-n | grep/var/lib/dpkg/lock>>/var/log/dpkglocktmp.log;完成
。它很简单,但不是很漂亮,但作为一个短期的错误跟踪,它对我来说是好的。您将在日志文件中获得进程列表
扩展:在睡眠1时;do lsof-n | grep/var/lib/dpkg/lock;完成| tee--append/var/log/dpkglocktmp.log
将同时写入控制台和日志文件。如果您不想保持ssh连接的活动状态,您可以在一个服务器中运行它
2:Linux内核有一个功能inotify
,它使进程能够在它们正在监视的文件上发生的事件上获得信号。它周围有很多工具,最著名的是incron
。它使您能够在发生文件事件时调用脚本。可能还有更复杂的工具,针对与您类似的问题
当apt更新/安装向我询问一些问题时,我遇到了最类似的问题,我忘记了这一点,后来尝试在另一个ssh会话中运行另一个apt。可能是
/etc/cron.daily/apt
?为了澄清,它会在一天中随时发生,并持续几秒钟。这意味着它不能来自/etc/cron.daily/apt
,cron作业也不能解决它(因为它只持续几秒钟)。如果我希望这个while循环在写入日志文件的同时显示lsof到控制台的输出,那么需要进行哪些修改?让它永远运行而不需要保持SSH会话打开?“这一整天……”MichaelHeuberger我把它扩展到我的回答中。在你的情况下,我使用的正是这个,从屏幕上。屏幕是一个很好的工具,你可以在后台安装9个虚拟角色控制台,下班后将它们拆下,第二天重新连接。