lsof survival guide

UnixSysadminLsof

Unix Problem Overview


lsof is an increadibly powerful command-line utility for unix systems. It lists open files, displaying information about them. And since most everything is a file on unix systems, lsof can give sysadmins a ton of useful diagnostic data.

What are some of the most common and useful ways of using lsof, and which command-line switches are used for that?

Unix Solutions


Solution 1 - Unix

To show all networking related to a given port:

lsof -iTCP -i :port
lsof -i :22

To show connections to a specific host, use @host

lsof -i@192.168.1.5

Show connections based on the host and the port using @host:port lsof [email protected]:22

grepping for LISTEN shows what ports your system is waiting for connections on:

lsof -i| grep LISTEN

Show what a given user has open using -u:

lsof -u daniel

See what files and network connections a command is using with -c

lsof -c syslog-ng

The -p switch lets you see what a given process ID has open, which is good for learning more about unknown processes:

lsof -p 10075

The -t option returns just a PID

lsof -t -c Mail

Using the -t and -c options together you can HUP processes

kill -HUP $(lsof -t -c sshd)

You can also use the -t with -u to kill everything a user has open

kill -9 $(lsof -t -u daniel)

Solution 2 - Unix

lsof -i :port 

will tell you what programs are listening on a specific port.

Solution 3 - Unix

lsof -i will provide a list of open network sockets. The -n option will prevent DNS lookups, which is useful when your network connection is slow or unreliable.

Solution 4 - Unix

lsof +D /some/directory

Will display recursively all the files opened in a directory. +d for just the top-level.

This is useful when you have high wait% for IO, correlated to use on a particular FS and want to see which processes are chewing up your io.

Solution 5 - Unix

See what files a running application or daemon has open:

lsof -p pid

Where pid is the process ID of the application or daemon.

Solution 6 - Unix

lsof +f -- /mountpoint

lists the processes using files on the mount mounted at /mountpoint. Particularly useful for finding which process(es) are using a mounted USB stick or CD/DVD.

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
QuestionHans SjunnessonView Question on Stackoverflow
Solution 1 - UnixView Answer on Stackoverflow
Solution 2 - UnixdvorakView Answer on Stackoverflow
Solution 3 - UnixJohn MillikinView Answer on Stackoverflow
Solution 4 - UnixsiestaView Answer on Stackoverflow
Solution 5 - UnixChrisView Answer on Stackoverflow
Solution 6 - UnixmasView Answer on Stackoverflow