linux - 什么脚本/用户/进程正在写入文件?

标签 linux bash scripting

我试图找出什么脚本/用户/进程正在写入文件。 我有 4 个主机安装了相同的 NFS 我制作了一个脚本并将其放在所有主机上但没有成功 有人可以帮忙吗 该脚本从 5:50 运行到 6:10,这是我的文件被写入的时间段 这是我制作的脚本:

#!/bin/sh
log=~/file-access.log

check_time_to_run() {
  tempTime=$1
  if [ $tempTime -gt 555 -a $tempTime -lt 610 ]; then 
    #Intre intervalul 5:55 si 6:10
    lsof /cdpool/Xprint/Liste_Drucker >> $log
  else
    #In afara intervalului
    exit 1
  fi
}

while true; do
  currTime=`date +%k%M`
  check_time_to_run $currTime
  sleep 0.1s
done

最佳答案

根本不要为此使用 shell 脚本。相反,安装 sysdig ,然后运行:

sysdig 'fd.filename=/cdpool/Xprint/Liste_Drucker'

...保持打开状态,每当有任何内容写入该文件或从该文件读取时,都会打印相应的日志消息。

<小时/>

如果您想将作业打印的用户名和进程名称(带参数)打印到文件中,则可以使用以下格式字符串:

sysdig \
  -p '%user.name %proc.name - %evt.dir %evt.type %evt.args' \
  'fd.filename=/cdpool/Xprint/Liste_Drucker'

关于linux - 什么脚本/用户/进程正在写入文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27788234/

相关文章:

linux - 负载均衡中如何处理返回 session

linux - Windows 以外操作系统的开发者工具

linux - 在shell脚本中,for循环中的 'if-else'是如何执行的?为什么它只为一个变量打印一次?

linux - 从 txt 文件中搜索并替换许多文件?

linux - 不同文件夹中的同名文件

powershell - 如何使用 Powershell 从文本文件中删除回车符?

linux - 在 while read (stdin) 循环后暂停 bash 脚本

linux - RHEL - 有限的 root 访问权限

linux - shell 脚本 grep 只处理文件的最后一行

linux - 为什么 "rm"命令会覆盖bash脚本的显示