标签: fuser

使用 fuser 与 lsof 检查正在使用的文件

我一直在得到一些关于如何找出我的串行端口繁忙的建议。具体来说,当我尝试启动 gammu-smsd 时,它拒绝在 /dev/ttyS0 上启动,因为它说端口正忙:

sudo /etc/init.d/gammu-smsd start
Sep 30 16:16:51 porkypig gammu-smsd[25355]: Starting phone communication...
Sep 30 16:16:51 porkypig gammu-smsd[25355]: gammu: [Gammu            - 1.26.1 built 21:46:06 Nov 24 2009 using GCC 4.4]
Sep 30 16:16:51 porkypig gammu-smsd[25355]: gammu: [Connection       - "at115200"]
Sep 30 16:16:51 porkypig gammu-smsd[25355]: gammu: [Connection index - 0]
Sep 30 16:16:51 porkypig gammu-smsd[25355]: gammu: [Model type       - ""]
Sep 30 16:16:51 porkypig gammu-smsd[25355]: gammu: [Device           - "/dev/ttyS0"]
Sep 30 16:16:51 porkypig gammu-smsd[25355]: gammu: [Runing on        - …
Run Code Online (Sandbox Code Playgroud)

lsof fuser

6
推荐指数
1
解决办法
7189
查看次数

列出当前的 inotify 监视(路径名、PID)

我如何获得以下列表:

  • 当前正在监视的路径名inotify,以及
  • 进程监控的PID

我问是因为我发现syncthing'sinotify手表阻止我的磁盘被卸载。

如下所示,没有任何内容出现在lsoffuser列表中。

我猜对了syncthing......如果磁盘因以下原因无法卸载,我该如何消除未来的猜测inotify


# umount /media/backup
umount: /media/backup: target is busy.
# lsof +f -- /media/backup/
# echo $?
1
# fuser -vmM /media/backup/
                     USER        PID ACCESS COMMAND
/media/backup:       root     kernel mount /media/backup
# systemctl stop syncthing@ravi
# umount /media/backup
# echo $?
0
Run Code Online (Sandbox Code Playgroud)

linux unmounting lsof inotify fuser

6
推荐指数
1
解决办法
6528
查看次数

如何检测哪个进程现在或过去使用过文件

这是一个假设性的问题,而不是我目前遇到的问题。

你如何检测哪个进程现在或过去使用了一个文件?

找出哪个进程正在访问filenamelsof filenamefuser filename将完成工作。但是,如果想知道filename 过去 24 小时内访问哪些进程怎么办?

人们可以摆脱这个丑陋的 (*) hack

while true; do fuser filename; sleep 1; done
Run Code Online (Sandbox Code Playgroud)

让它在另一个学期运行 24 小时。但实际上有没有更好的系统,而不建立一个完整的审计框架?



(*) 更不用说fuser如果不到 1 秒可能无法检测到访问...

lsof audit fuser

6
推荐指数
1
解决办法
142
查看次数

查找在没有 lsof 或 fuser 的情况下打开文件的进程

我正在一台 Linux(Scientific Linux CERN SLC 版本 6.9 (Carbon))机器上工作,我无法在该机器上安装程序并且lsoffuser命令不可用。

我正在尝试删除这台机器上的 NFS 点文件,但我一直收到Device or resource busy错误消息,所以我想找出哪个进程(我怀疑它可能是我以前开始使用的进程nohup)仍然具有该文件的文件描述符。

我怎样才能做到这一点?

linux lsof files fuser

4
推荐指数
1
解决办法
1234
查看次数

您如何知道进程退出时的返回码是什么以及该值通常记录在哪里?

如果一个进程运行并退出它返回一个非零状态(我个人更喜欢术语返回代码);甚至零状态我知道该值在那里(主要是因为我已经完成了 C++ 编程并且我知道你可以在你的main()方法结束时返回一个值......但也因为如果我运行类似的东西:

fuser -s ./myfile.txt && echo "a process is accessing your file

我知道echo如果从fuser进程返回的状态值是0,则唯一打印,如果不是,echo则一起跳过,因为:

“如果没有访问任何指定文件或发生致命错误,fuser 将返回一个非零返回码。”

现在我如何显示这个返回码来知道它的价值?因为如果你正在运行fuser使用-silent,如在脚本,它似乎重要的是知道的返回码/状态值,所以我可以告诉大家,不被访问文件和实际致命错误之间的区别。

此外,手册页中是否有一个共同的地方记录了进程的返回代码/状态,以便我可以看到该值可能意味着什么?或者是否有一份文件对返回代码应该是什么有标准?

process fuser

1
推荐指数
1
解决办法
1188
查看次数

标签 统计

fuser ×5

lsof ×4

linux ×2

audit ×1

files ×1

inotify ×1

process ×1

unmounting ×1