Linux-fuser

2. 选项
3. EXAMPLES
4. RESTRICTIONS 限制
5. SIGNAL 可用信号

fuser - 使用文件或套接字识别进程

1. 描述

  fuser使用指定的文件或文件系统显示进程的PID。
  在默认显示模式下,每个文件名后跟一个表示访问类型的字母:
F…. open file for writing. F is omitted in default display mode. 打开文件写。 默认显示模式中省略F。
f…. open file. f is omitted in default display mode. 打开文件。 默认显示模式中省略f。
.r… root directory. 根目录。
..c.. current directory. 当前目录。进程的工作目录
...e. executable being run. 正在运行的可执行
….m mmap'ed file or shared library. mmap的文件或共享库。
. Placeholder, omitted in default display mode. 占位符,在默认显示模式下省略。

如果未访问任何指定的文件或发生致命错误,fuser 将返回非零返回码。 如果至少找到一个访问权限,则fuser返回零。

   要使用TCP和UDP套接字查找进程,必须使用“-n”选项选择相应的名称空间。 默认情况下,fuser将同时查看IPv6和IPv4套接字。 要更改默认行为,请使用-4和-6选项。 套接字可以由本地和远程端口以及远程地址指定。 所有字段都是可选字段,但必须存在缺少字段前面的逗号:
       [lcl_port][,[rmt_host][,[rmt_port]]]
   符号或数字值都可用于IP地址和端口号。
   fuser只将PID输出到stdout,其他所有内容都发送到stderr。

2. 选项

Option en cn 互斥 依赖
-a,--all display unused files too 显示命令中指定的所有文件,包含未使用 -s  
-s,--silent silent operation 无声的操作. 将忽略-u和-v。 -a  
-v,--verbose verbose output 详细输出    
-u,--user display user IDs 显示用户ID    
         
-n,--namespace SPACE search in this name space (file, udp, or tcp) 在此名称空间中搜索(默认文件,也可udp或tcp)    
-4,--ipv4 search IPv4 sockets only 仅搜索IPv4套接字, 仅对tcp和udp命名空间有效。 -6  
-6,--ipv6 search IPv6 sockets only 仅搜索IPv6套接字, 仅对tcp和udp命名空间有效。 -4  
         
-k,--kill kill processes accessing the named file 杀死访问该文件的进程。默认发SIGKILL,可用-SIGNAL更改    
-i,--interactive ask before killing (ignored without -k) 在杀戮之前询问   -k
-w,--writeonly kill only processes with write access 仅杀死具有写访问权限的进程   -k
-SIGNAL send this signal instead of SIGKILL 发送指定信号而不是SIGKILL   -k
-l,--list-signals list available signal names 列出可用的信号名称    
         
-m,--mount show all processes using the named filesystems or block device 使用命名文件系统或块设备显示所有进程    
-M,--ismountpoint fulfill request only if NAME is a mount point 仅在NAME是挂载点时才满足请求。如果NAME恰好不是文件系统,它可以防止你杀死机器。    
-I,--inode use always inodes to compare files 始终使用inode来比较文件    
-V,--version display version information 显示版本信息    
- Reset all options and set the signal back to SIGKILL. 重置所有选项并将信号设置回SIGKILL。    

3. EXAMPLES

$ fuser -km /home
// kills all processes accessing the file system /home in any way.以任何方式杀死访问文件系统/ home的所有进程。

  if fuser -s /dev/ttyS1; then :; else something; fi
// invokes something if no other process is using /dev/ttyS1.如果没有其他进程正在使用/dev/ttyS1,则调用一些东西。

$ fuser telnet/tcp
// shows all processes at the (local) TELNET port.显示(本地)TELNET端口的所有进程。

$ fuser -v fuser.xls
 USER PID ACCESS COMMAND
/home/toma/fuser.xls:
 toma 5323 F.... soffice.bin

$ sudo fuser -vua /dev/sda10
 USER PID ACCESS COMMAND
/dev/sda10: root 839 F.... (root)mount.ntfs

$ sudo fuser -mvua /dev/sda10
 USER PID ACCESS COMMAND
/dev/sda10: root kernel mount (root)/run/media/toma/TjOe
 root 839 F.... (root)mount.ntfs
 toma 7697 f.... (toma)vlc

$ sudo fuser -vun tcp 1080
 USER PID ACCESS COMMAND
1080/tcp: root 421 F.... (root)v2*

4. RESTRICTIONS 限制

  以相同方式多次访问同一文件或文件系统的进程仅显示一次。
  如果在命令行上多次指定了同一个对象,则可能会忽略其中一些条目。
  除非以特权运行,否则fuser可能只能收集部分信息。因此,可能未列出属于其他用户的进程打开的文件,并且可执行文件可能仅被分类为映射。
  fuser无法报告它没有查看文件描述符表的权限的任何进程。发生此问题的最常见时间是在以非root用户身份运行fuser时查找TCP或UDP套接字。在这种情况下,定影器将报告无法访问。
  安装fuser SUID root将避免与部分信息相关的问题,但出于安全和隐私原因可能不合需要。
  udp和tcp名称空间,并且无法使用早于1.3.78的内核搜索UNIX域套接字。
  内核访问仅使用-v选项显示。
  -k选项仅适用于进程。如果用户是内核,fuser将打印一条建议,但除此之外不采取任何措施。

5. SIGNAL 可用信号

 -SIGNAL 选项可用信号使用 -l 列出
No fuser -l 信号 默认操作 描述
1 HUP SIGHUP 终止 挂断
2 INT SIGINT 终止 终端中断信号 'Ctrl C’
3 QUIT SIGQUIT 终止(核心转储) 终端退出信号 'Ctrl \’
4 ILL SEAL 终止(核心转储) 非法指令
5 TRAP SIGTRAP 终止(核心转储) 跟踪/断点陷阱
6 ABRT SIGABRT 终止(核心转储) 处理中止信号
7 BUS SIGBUS 终止(核心转储) 访问内存对象的未定义部分
8 FPE SIGFPE 终止(核心转储) 错误的算术运算
9 KILL SIGKILL 终止 强制终止(不能被抓住或忽略)
10 USR1 SIGUSR1 终止 用户定义的信号1
11 SEGV SIGSEGV 终止(核心转储) 无效的内存引用
12 USR2 SIGUSR2 终止 用户定义的信号2
13 PIPE SIGPIPE 终止 写在没有人阅读的管道上
14 ALRM SIGALRM 终止 警报
15 TERM SIGTERM 终止 终止信号
16 STKFLT SIGSTKFLT   堆栈故障
17 CHLD SIGCHLD 忽略 子进程已终止,停止或继续
18 CONT SIGCONT 继续 如果停止,继续执行 'fg/bg’
19 STOP SIGSTOP 停止 停止执行(无法捕获或忽略) ‘Ctrl Z’
20 TSTP SIGTSTP 停止 终端停止信号 ‘Ctrl Z’
21 TTIN SIGTTIN 停止 后台进程尝试读取
22 TTOU SIGTTOU 停止 尝试写入的后台进程
23 URG SIGURG 忽略 套接字可提供高带宽数据
24 XCPU SIGXCPU 终止(核心转储) 超出CPU时间限制
25 XFSZ SIGXFSZ 终止(核心转储) 超出文件大小限制
26 VTALRM SIGVTALRM 终止 虚拟计时器已过期
27 PROF SIGPROF 终止 分析计时器已过期
28 WINCH SIGWINCH 忽略 终端窗口大小已更改
29 POLL SIGPOLL 终止 可轮询的事件
30 PWR SIGPWR   电源故障
31 SYS SIGSYS 终止(核心转储) 系统调用错误

默认操作行动解释:
终止  - Terminate 过程异常终止。该过程终止于_exit()的所有后果,除了wait()和waitpid()可用的状态指示指定信号的异常终止。
终止(核心转储)  - Terminate (core dump)  异常终止进程。另外,可能发生实现定义的异常终止动作,例如创建核心文件。
忽略  - Ignore 忽略信号。
停止  - Stop 停止(不终止)该过程。
继续  - Continue 如果停止,继续该过程; 否则,忽略信号。

https://en.wikipedia.org/wiki/Signal_(IPC)

Post operation failed. The error message related to this problem was as follows: 博文中含有违规内容: v2*!