fuser Command: Tutorial & Examples
Identify processes using files and manage file access on Linux servers
The fuser command is a vital tool for Linux administrators to identify which processes are using specific files, directories, or filesystems. It helps in
managing system resources, troubleshooting locked files, and controlling processes that interfere with file operations. This article explores the command in
detail, providing practical examples, usage tips, and guidance on effective process and file management using fuser.
What It Does
fuser reports the process IDs (PIDs) of processes that are accessing a given file, directory, or filesystem. This allows administrators to find out which
processes are currently using system resources or files, enabling targeted troubleshooting or management actions such as safely terminating those processes.
Example output of running fuser on a system log file:
/var/log/syslog:
514(syslogd)
This output indicates that the file /var/log/syslog is in use by the process with PID 514, which corresponds to the syslogd daemon.
How It Works
The fuser command interacts with the Linux kernel to retrieve information about processes accessing files. It uses system calls that
query the /proc filesystem, where the kernel exposes information about processes and their open file descriptors. By scanning these open files, fuser
determines which processes hold references to the specified file or filesystem.
For example, running the command:
fuser /var/log/syslog
will scan processes and list those currently holding the /var/log/syslog file open.
Installation
On most Linux distributions, fuser is included in the psmisc package. If fuser is not available by default, you can install it using your package manager:
On Debian/Ubuntu:
apt-get update apt-get install psmiscOn CentOS/Fedora:
yum install psmisc
Verify installation with:
fuser --version
Common Command Line Parameters
Some frequently used options with fuser include:
-m: Treat the specified file as a mount point and show processes using any file on that filesystem.-k: Kill processes accessing the specified file.-u: Display the username of the process owner along with PIDs.-v: Verbose output with detailed information.-n <space>: Specify namespace (e.g.,file,tcp,udp) for special files.-signal: Send a specific signal to the processes instead of the defaultSIGKILL(used with-k).
Example combining verbose and mount options:
fuser -v -m /var
This lists detailed information about all processes accessing any file within the /var filesystem.
How To Use fuser
Basic Usage
To list processes using a specific file:
fuser /path/to/file
Example:
fuser /var/log/syslog
Output:
/var/log/syslog: 514(syslogd)
Killing Processes Using a File
To terminate all processes accessing a file (use carefully):
fuser -k /path/to/file
Example:
fuser -k /var/log/syslog
By default, this sends the SIGKILL signal. To use a different signal, specify it before -k. For example, to send SIGTERM:
fuser -TERM -k /var/log/syslog
Displaying Process Owner
To show the usernames of processes:
fuser -u /path/to/file
Example:
fuser -u /var/log/syslog
Output:
/var/log/syslog: 514(syslogd) root
Advanced Usage
Using fuser With Multiple Files
You can specify multiple files or directories:
fuser -v /var/log/syslog /var/run/docker.sock
Specifying Network Ports
fuser can identify processes using specific network ports by specifying the namespace tcp or udp:
fuser -v -n tcp 80
This lists processes using TCP port 80.
Combining Options and Signals
Send custom signals to processes:
fuser -TERM -k /var/run/docker.sock
Using fuser In Scripts
Example script to check if any process is using a file and kill it:
#!/bin/bash
FILE="/tmp/mylockfile"
if fuser "$FILE" > /dev/null 2>&1; then
echo "Processes found using $FILE. Killing..."
fuser -k "$FILE"
else
echo "No process is using $FILE."
fi
Potential Problems and Pitfalls
- Killing processes with
-kmay cause data loss or system instability if those processes are critical or performing important tasks. - Some processes may open and close files quickly, so
fusermight miss them if they are not holding the file open at the time of the scan. - Running
fuserwithout root privileges limits the output to processes owned by the current user. - Use caution when using
-mon large filesystems, as it may list many processes and produce extensive output. - Network port identification depends on namespaces and may require root privileges.
Common Errors and Troubleshooting
Permission denied: Running
fuseron files used by other users requires root privileges. Usesudo:sudo fuser /path/to/fileNo output despite file being used: The process might have opened the file briefly and closed it. Try running
fuserimmediately after the issue is observed.Command not found:
fusermay not be installed; see the Installation section.Misunderstanding output: Without
-v,fuseroutputs only PIDs. Use-vfor detailed info.
Tips and Best Practices
- Always verify what a process is doing before terminating it to avoid unintended consequences.
- Use
fuser -vfor more informative output before killing processes. - Combine
fuserwith other commands likepsortopto investigate process details. - Use
fuserto diagnose file-system corruption or disk-full scenarios caused by active processes. - Avoid running
fuser -kon critical system files or directories unless absolutely necessary.
Security Considerations
- Running
fuserwith root privileges exposes information about all system processes. Limit access to trusted administrators. - Killing system or daemon processes may cause security or stability issues.
- Understand the signals sent with
-kand use less aggressive signals likeSIGTERMbeforeSIGKILL. - Avoid exposing scripts that use
fuserwith elevated privileges to untrusted input.
Comparison With Related Commands
lsof: Lists all open files and the processes that opened them, providing more extensive details but with more overhead.fuser: Focuses on processes using specific files or filesystems and can send signals to those processes.- For network port usage,
ssornetstatmay be more appropriate butfusercan be used for quick checks.
See Also
lsofkillpstop- process
- PID
/var/log/syslog- filesystem
- file-system-corruption
- disk-full
- root
- signal
Further Reading
- Linux for Hackers by Mark Reed (partner link)
- How Linux Works by Brian Ward (partner link)
- Linux for Beginners by Jason Cannon (partner link)
- Expert Linux Administration Guide by Vishal Rai (partner link)
As an Amazon Associate, I earn from qualifying purchases.