标签: lsof

确定哪个进程绑定到端口

我知道使用命令:

lsof -i TCP 
Run Code Online (Sandbox Code Playgroud)

(或 lsof 参数的一些变体)我可以确定哪个进程绑定到特定端口。这很有用,如果我试图启动一些想要绑定到 8080 的东西,而其他人已经在使用该端口,但我不知道是什么。

有没有一种简单的方法可以在不使用 lsof 的情况下做到这一点?我花时间在许多系统上工作,但通常没有安装 lsof。

networking process lsof tcp

106
推荐指数
3
解决办法
20万
查看次数

谁有这个unix socketpair的另一端?

我想确定哪个进程具有 UNIX 套接字的另一端。

具体来说,我问的是用 来创建的socketpair(),尽管任何 UNIX 套接字的问题都是一样的。

我有一个程序parent可以创建一个socketpair(AF_UNIX, SOCK_STREAM, 0, fds), 和fork()s。父进程关闭fds[1]并保持fds[0]通信。孩子反其道而行之,close(fds[0]); s=fds[1]。然后孩子exec()的另一个程序,child1。两者可以通过这个 socketpair 来回通信。

现在,假设我知道parent是谁,但我想弄清楚是谁child1。我该怎么做呢?

有几种工具可供我使用,但没有一个可以告诉我套接字的另一端是哪个进程。我试过了:

  • lsof -c progname
  • lsof -c parent -c child1
  • ls -l /proc/$(pidof server)/fd
  • cat /proc/net/unix

基本上,我可以看到两个套接字以及关于它们的所有内容,但无法判断它们是否已连接。我试图确定父进程中的哪个 FD 正在与哪个子进程通信。

process lsof open-files socket

68
推荐指数
5
解决办法
4万
查看次数

lsof 和监听端口

我正在尝试让所有进程在 Mac OS X 上侦听网络连接。netstat没有-p选项,我正在尝试使用 lsof

lsof -i -sTCP:LISTEN
Run Code Online (Sandbox Code Playgroud)

给了我一个公平的聆听过程清单,但不是全部。例如,我可以 telnet 到端口 10080,在那里我有一个进程正在侦听连接,但这未显示在lsof. 我错过了什么?

$ telnet localhost 10080
Trying ::1...
Connected to localhost.
Escape character is '^]'.
^]
telnet> Connection closed.
Run Code Online (Sandbox Code Playgroud)

$ sudo lsof -n -i | grep 10080
$
Run Code Online (Sandbox Code Playgroud)

osx lsof

67
推荐指数
2
解决办法
15万
查看次数

如何实时监控进程打开的文件?

我知道我可以查看使用过程中打开文件lsof 的时间在那一刻,我的Linux机器上。但是,进程可以如此快速地打开、更改和关闭文件,以至于我在使用标准 shell 脚本(例如watch)监视它时将无法看到它,如“在 linux 上监视打开的进程文件(实时)”中所述.

所以,我想我正在寻找一种简单的方法来审核流程并查看它在过去的时间里做了什么。如果还可以查看它(尝试)建立的网络连接并在进程有时间运行而不启动审计之前开始审计,那就太好了。

理想情况下,我想这样做:

sh $ audit-lsof /path/to/executable
4530.848254 OPEN  read  /etc/myconfig
4530.848260 OPEN  write /var/log/mylog.log
4540.345986 OPEN  read  /home/gert/.ssh/id_rsa          <-- suspicious
4540.650345 OPEN  socket TCP ::1:34895 -> 1.2.3.4:80    |
[...]
4541.023485 CLOSE       /home/gert/.ssh/id_rsa          <-- would have missed
4541.023485 CLOSE socket TCP ::1:34895 -> 1.2.3.4:80    |   this when polling
Run Code Online (Sandbox Code Playgroud)

这是否可以使用strace某些标志来看不到每个系统调用?

process lsof open-files audit

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

如何解释 lsof 命令的这个输出?

root@host [/home2]# lsof /home2
COMMAND     PID     USER   FD   TYPE DEVICE SIZE/OFF     NODE NAME
php        3182 ctxmortg  cwd    DIR   8,17     4096 32858196 /home2/ctxmortg/public_html/hello
php        3182 ctxmortg    3r   REG   8,17    46404 55781766 /home2/ctxmortg/public_html/hello/cache/subprimemortgagemorgage.com/cache-zch-8284-cache.txt
php        3185 ctxmortg  cwd    DIR   8,17     4096 32858196 /home2/ctxmortg/public_html/hello
php        3185 ctxmortg    3r   REG   8,17     4185 35962154 /home2/ctxmortg/public_html/hello/cache/curl/http%3A%2F%2Fimage.yahoo.cn%2Fs%3Fq%3DNudity%26c%3D0%26s%3D%26page%3D277
php        3187 ctxmortg  cwd    DIR   8,17     4096 32858196 /home2/ctxmortg/public_html/hello
php        3187 ctxmortg    3r   REG   8,17    54640 69699731 /home2/ctxmortg/public_html/hello/cache/newdatingfriends.com/cache-zch-1545-cache.txt
php        3188 ctxmortg  cwd    DIR   8,17     4096 32858196 /home2/ctxmortg/public_html/hello
php        3188 ctxmortg    3r …
Run Code Online (Sandbox Code Playgroud)

lsof

41
推荐指数
2
解决办法
10万
查看次数

使用 lsof 持续监控文件

有没有办法让 lsof 持续工作以实时监控每个正在打开的文件?

我不知道进程的名称。我希望 lsof 连续工作一段时间,直到我看到列表包含我想要的内容。

lsof files

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

lsof: 警告: 不能 stat() fuse.gvfsd-fuse 文件系统

这里到底发生了什么?

root@bob-p7-1298c:/# ls -l /tmp/report.csv && lsof | grep "report.csv"
-rw-r--r-- 1 mysql mysql 1430 Dec  4 12:34 /tmp/report.csv
lsof: WARNING: can't stat() fuse.gvfsd-fuse file system /run/user/1000/gvfs
      Output information may be incomplete.
Run Code Online (Sandbox Code Playgroud)

fuse lsof privileges

31
推荐指数
2
解决办法
9万
查看次数

从保持打开的已删除文件中释放磁盘空间的最佳方法

嗨,我有许多文件已被删除,但由于某种原因,与已删除文件相关的磁盘空间无法使用,直到我明确终止占用磁盘空间的文件的进程

$ lsof /tmp/
COMMAND   PID USER   FD   TYPE DEVICE SIZE/OFF      NODE NAME
cron     1623 root    5u   REG   0,21        0 395919638 /tmp/tmpfPagTZ4 (deleted)
Run Code Online (Sandbox Code Playgroud)

上面删除的文件占用的磁盘空间会导致问题,例如在尝试使用 Tab 键自动完成文件路径时出现错误 bash: cannot create temp file for here-document: No space left on device

但是在我运行kill -9 1623该 PID 的空间后,我不再收到错误消息。

我的问题是:

  • 为什么在第一次删除文件时没有立即释放这个空间?
  • 取回与已删除文件关联的文件空间的最佳方法是什么?

请让我知道我使用过的任何不正确的术语或与这种情况相关的任何其他相关信息。

lsof open-files deleted-files

31
推荐指数
4
解决办法
15万
查看次数

“lsof”命令的替代方案?

在许多情况下,“lsof”没有安装在我必须工作的机器上,但是非常需要 lsof 的“功能”(例如在 AIX 上)。:\

在非 Windows 世界中是否有类似“lsof”的应用程序?

更新:例如:我需要知道哪些进程使用“/home/username”目录?

process administration lsof open-files

26
推荐指数
3
解决办法
13万
查看次数

进程打开的文件是否加载到 RAM 中?

例如sed命令是程序,程序是文件内的编码逻辑,这些文件位于硬盘上的某处。然而,当命令正在运行时,它们的文件副本从硬盘被放入RAM 中,在那里它们变得生动起来,可以做一些事情,被称为进程

进程可以使用其他文件,读取或写入它们,如果它们这样做,这些文件称为打开文件。有一个命令可以列出所有正在运行的进程的所有打开的文件:lsof.

好的,所以我想知道一个命令的双重生命,一个在硬盘上,另一个在 RAM 中,是否也适用于其他类型的文件,例如那些没有逻辑编程的文件,但只是容器数据。

我的假设是,进程打开的文件也会加载到 RAM 中。我不知道这是不是真的,这只是一种直觉。

拜托,有人能理解吗?

memory lsof files

24
推荐指数
3
解决办法
1万
查看次数