Linux查询已开启文件或已运行进程开启之文件fuser,lsof,pidof
fuser:藉由文件(或文件系统)找出正在使用该文件的程序
[root@www ~]# fuser [-umv] [-k [i] [-signal]] file/dir
选项与参数:
-u :除了进程的 PID 之外,同时列出该进程的拥有者;
-m :后面接的那个档名会主动的上提到该文件系统的最顶层,对 umount 不成功很有效!
-v :可以列出每个文件与进程还有命令的完整相关性!
-k :找出使用该文件/目录的 PID ,并试图以 SIGKILL 这个讯号给予该 PID;
-i :必须与 -k 配合,在删除 PID 之前会先询问使用者意愿!
-signal:例如 -1 -15 等等,若不加的话,默认是 SIGKILL (-9) 罗!
范例一:找出目前所在目录的使用 PID/所属帐号/权限 为何?
[root@www ~]# fuser -uv .
USER PID ACCESS COMMAND
.: root 20639 ..c.. (root)bash
|
项目代表的意义为:
c :此进程在当前的目录下(非次目录);
e :可被触发为运行状态;
f :是一个被开启的文件;
r :代表顶层目录 (root directory);
F :该文件被开启了,不过在等待回应中;
m :可能为分享的动态函式库;
范例二:找到所有使用到 /proc 这个文件系统的进程吧!
[root@www ~]# fuser -uv /proc
# 不会显示任何数据,因为没有任何进程会去使用 /proc 这个目录啊!
# 会被用到的是 /proc 底下的文件啦!所以你应该要这样做:
[root@www ~]# fuser -mvu /proc
USER PID ACCESS COMMAND
/proc: root 4289 f.... (root)klogd
root 4555 f.... (root)acpid
haldaemon 4758 f.... (haldaemon)hald
root 4977 F.... (root)Xorg
# 有这几支进程在进行 /proc 文件系统的存取喔!这样清楚了吗?
|
范例三:找到 /var 底下属於 FIFO 类型的文件,并且找出存取该文件的进程
[root@www ~]# find /var -type p
/var/gdm/.gdmfifo <==我们针对这玩意即可!
/var/run/autofs.fifo-misc
/var/run/autofs.fifo-net
[root@www ~]# fuser -uv /var/gdm/.gdmfifo
USER PID ACCESS COMMAND
/var/gdm/.gdmfifo: root 4892 F.... (root)gdm-binary
范例四:同范例三,但试图删除该 PID?且『不要』删除喔!
[root@www ~]# fuser -ki /var/gdm/.gdmfifo
/var/gdm/.gdmfifo: 4892
Kill process 4892 ? (y/N) n
|
lsof :列出被程序所开启的文件档名
[root@www ~]# lsof [-aUu] [+d] 选项与参数: -a :多项数据需要『同时成立』才显示出结果时! -U :仅列出 Unix like 系统的 socket 文件类型; -u :后面接 username,列出该使用者相关进程所开启的文件; +d :后面接目录,亦即找出某个目录底下已经被开启的文件! 范例一:列出目前系统上面所有已经被开启的文件与装置: [root@www ~]# lsof COMMAND PID USER FD TYPE DEVICE SIZE NODE NAME init 1 root cwd DIR 3,2 4096 2 / init 1 root rtd DIR 3,2 4096 2 / init 1 root txt REG 3,2 38620 1426405 /sbin/init ....(底下省略).... # 注意到了吗?是的,在默认的情况下, lsof 会将目前系统上面已经开启的 # 文件全部列出来~所以,画面多的吓人啊!您可以注意到,第一个文件 init 运行的 # 地方就在根目录,而根目录,嘿嘿!所在的 inode 也有显示出来喔! 范例二:仅列出关於 root 的所有程序开启的 socket 文件 [root@www ~]# lsof -u root -a -U COMMAND PID USER FD TYPE DEVICE SIZE NODE NAME udevd 400 root 3u unix 0xedd4cd40 1445 socket auditd 4256 root 7u unix 0xedd4c380 9081 socket audispd 4258 root 0u unix 0xedd4c1e0 9080 socket # 注意到那个 -a 吧!如果你分别输入 lsof -u root 及 lsof -U ,会有啥资讯? # 使用 lsof -u root -U 及 lsof -u root -a -U ,呵呵!都不同啦! # -a 的用途就是在解决同时需要两个项目都成立时啊! ^_^ 范例三:请列出目前系统上面所有的被启动的周边装置 [root@www ~]# lsof +d /dev COMMAND PID USER FD TYPE DEVICE SIZE NODE NAME init 1 root 10u FIFO 0,16 1147 /dev/initctl udevd 400 root 0u CHR 1,3 1420 /dev/null udevd 400 root 1u CHR 1,3 1420 /dev/null udevd 400 root 2u CHR 1,3 1420 /dev/null # 看吧!因为装置都在 /dev 里面嘛!所以罗,使用搜寻目录即可啊! 范例四:秀出属於 root 的 bash 这支程序所开启的文件 [root@www ~]# lsof -u root | grep bash bash 20639 root cwd DIR 3,2 4096 648321 /root bash 20639 root rtd DIR 3,2 4096 2 / bash 20639 root txt REG 3,2 735004 1199424 /bin/bash bash 20639 root mem REG 3,2 46680 64873 /lib/libnss_files-2.5.so ....(底下省略).... |
pidof :找出某支正在运行的程序的 PID
[root@www ~]# pidof [-sx] program_name 选项与参数: -s :仅列出一个 PID 而不列出所有的 PID -x :同时列出该 program name 可能的 PPID 那个进程的 PID 范例一:列出目前系统上面 init 以及 syslogd 这两个程序的 PID [root@www ~]# pidof init syslogd 1 4286 # 理论上,应该会有两个 PID 才对。上面的显示也是出现了两个 PID 喔。 # 分别是 init 及 syslogd 这两支进程的 PID 啦。 |
Linux查询已开启文件或已运行进程开启之文件fuser,lsof,pidof的更多相关文章
- 使用c#检测文件正在被那个进程占用 判断文件是否被占用的两种方法
C# 判断文件是否被占用的三种方法 using System.IO; using System.Runtime.InteropServices; [DllImport("kernel32.d ...
- 批处理判断是否存在文件,存在则运行另外一个bat文件
现在需求如下: 使用bat文件判断是否存在ktr文件,存在则运行pan.bat,执行kettle脚本. 代码如下: @echo off @title 批处理判断文件夹是否存在 cd /d F: rem ...
- 查阅日志文件:有时候报错信息只是给出了问题的表面现象,要想更深入的了解问题,必须查看相应的日志文件,而日志文件又分为系统日志文件(/var/log)和应用的日志文件,结合这两个日志文件,一般就能定位问题所在。
作为一名合格的 Linux 运维工程师,一定要有一套清晰.明确的解决故障思路,当问题出现时,才能迅速定位.解决问题,这里给出一个处理问题的一般思路: 重视报错提示信息:每个错误的出现,都是给出错误提示 ...
- 第四章-使用本机文件对话框和帮助进程间沟通 | Electron实战
本章主要内容: 使用Electron的dialog模块实现一个本机打开文件对话框 促进主进程和渲染器进程之间的通信 将功能从主进程暴露给渲染器进程 使用Electron的remote模块从主进程导入功 ...
- android studio adb.exe已停止工作(全面成功版 进程的查询和开启)
先输入adb看是否存在. 如果不存在则:在系统path里添加C:\Users\nubia\AppData\Local\Android\sdk\platform-tools 因为这个目录里有adb 或者 ...
- [已解决]下载chromium源码 download_from_google_storage 无法下载文件
当使用 gclient runhooks 后 出现下面的错误 File gs://chromium-gn/1088992877b3a13f25b61c8fc18e25296d8cab33 for sr ...
- linux 查询目录下包含关键字的所有文件
linux查找目录下的所有文件中是否含有某个字符串 查找目录下的所有文件中是否含有某个字符串 find .|xargs grep -ri "IBM" 查找目录下的所有文件中是否含有 ...
- SQLServer 安装以前的某个程序安装已在安装计算机上创建挂起的文件操作 解决办法
http://wenku.baidu.com/view/6732fe09844769eae009ede2.html SQL Server 安装以前的某个程序安装已在安装计算机上创建挂起的文件操作 安装 ...
- 解决 Excel2013打开提示 文件格式和扩展名不匹配。文件可能已损坏或不安全
有的时候打开xls文档时,会提示“文件格式和扩展名不匹配.文件可能已损坏或不安全.除非您信任其来源,否则请勿打开.是否仍要打开它?” 遇到这种情况,我们需要 1.win键+R键,打开“运行“,输入re ...
随机推荐
- 快速索引 (对View的自定义)
快速索引 (对View的自定义) 快速索引应用场景: 微信好友列表, 联系人通讯录, 应用管理, 文件管理等. 快速索引7步曲: *1. A-Z索引的绘制. * 2. 处理Touch事件. * 3. ...
- JSP1.x 自定义标签
Tag接口 任何一个标签都对应着一个java类,该类必须实现Tag接口,JSP遇到一个标签后后,将通过一个tld文件查找该标签的实现类,并运行该类的相关方法 import javax.servlet. ...
- FFmpeg源代码简单分析:libavdevice的avdevice_register_all()
===================================================== FFmpeg的库函数源代码分析文章列表: [架构图] FFmpeg源代码结构图 - 解码 F ...
- 聊聊Condition
本文可作为传智播客<张孝祥-Java多线程与并发库高级应用>的学习笔记. 上面我们说了Lock,那是对synchronized的一种更为面向对象的替代,在原来的synchronized内部 ...
- Win10中virtualbox新建虚拟机不能设置64位系统解决
问题描述 在Win10中,安装virtualBox后,新建虚拟电脑时,所有的操作系统都没有64位. 解决 进入控制面板->卸载程序->启用或关闭windows功能->取消hyper- ...
- iOS中 FMDB第三方SQLite数据库 UI_20
1.什么是FMDB? FMDB是iOS平台下SQLite数据库,只不过它是OC方式封装了C语言的SQLite语句,使用起来更加面向对象 2.FMDB的优点:1.使用起来更加面向对象; 2.对比苹果自带 ...
- 【翻译】如何在Ext JS 6中使用Fashion美化应用程序
原文:How to Style Apps with Fashion in Ext JS 6 在Ext JS 6,一个最大的改变就是框架合并,使用一个单一的代码库,就可以为每一种设备开发各具有良好体验的 ...
- Could not find property 'outputFile
* What went wrong: A problem occurred configuring project ':app'. > Could not find property 'outp ...
- Gradle脚本打包so库
要让引用的第三方的so库被打包进去,只需要把相关的armeabi文件夹放在libs下面,然后在builld.gradle脚本中加上这一句: sourceSets{ main { jniLibs.src ...
- Python学习笔记 - dict和set
dict #!/usr/bin/env python3 # -*- coding: utf-8 -*- #dict >>> d = {'Michael': 95, 'Bob': 75 ...