标签: lsof

我如何知道正在打开 tcp 端口的进程名称?

我有两台Linux服务器。假设它们是CS
C是客户S

在我的S机器上,我打字。

$ netstat -an | grep 已建立
tcp 0 0 192.168.1.220:3306 C:57010 已 建立

然后我可以知道C现在正在连接。
C机器中,我也想知道打开57010端口并连接服务器的进程名称。我怎样才能做到这一点?当然,我有 root 权限。SC

networking centos lsof tcp netstat

6
推荐指数
3
解决办法
5386
查看次数

Memcache 'stats' 报告非零的 'curr_connections' - 但 lsof 显示没有套接字连接

我们的内存缓存守护进程报告非零的 'curr_connections'...

$ telnet memcache-server 11211
Escape character is '^]'.
stats
...
STAT curr_connections 12
...
Run Code Online (Sandbox Code Playgroud)

...然而,lsof显示没有套接字连接:

$ ssh memcache-server
# lsof -P -i -n | grep memcache
memcached 1759 memcached   26u  IPv4  11638      0t0  TCP *:11211 (LISTEN)
memcached 1759 memcached   27u  IPv6  11639      0t0  TCP *:11211 (LISTEN)
memcached 1759 memcached   28u  IPv4  11642      0t0  UDP *:11211 
memcached 1759 memcached   29u  IPv6  11643      0t0  UDP *:11211 
Run Code Online (Sandbox Code Playgroud)

我猜 'curr_connections' 并不意味着我认为它的作用......

lsof socket

6
推荐指数
1
解决办法
6898
查看次数

通过端口号查找进程ID

我正在尝试(目前收效甚微)在我的 Fedora 24 服务器上设置 Dovecot 邮件服务器。我已经安装了 Dovecot 并设置了 conf 文件,一切都很好。但是当我运行时:

systemctl restart dovecot
Run Code Online (Sandbox Code Playgroud)

编辑 conf 文件后,我收到此消息

Job for dovecot.service failed because the control process exited with error code. See "systemctl status dovecot.service" and "journalctl -xe" for details
Run Code Online (Sandbox Code Playgroud)

跑步systemctl status dovecot.service给了我一个不同的错误

[root@fedora app]# systemctl status dovecot.service
? dovecot.service - Dovecot IMAP/POP3 email server
   Loaded: loaded (/usr/lib/systemd/system/dovecot.service; disabled; vendor preset: disabled)
   Active: failed (Result: exit-code) since Tue 2016-08-16 15:02:30 UTC; 37min ago
     Docs: man:dovecot(1)
           http://wiki2.dovecot.org/
  Process: 11293 ExecStart=/usr/sbin/dovecot (code=exited, status=89) …
Run Code Online (Sandbox Code Playgroud)

fedora process lsof dovecot

6
推荐指数
1
解决办法
2818
查看次数

如何按进程列出 Unix 上所有进程的打开文件描述符数?

我需要列出每个进程以及为该进程打开了多少文件描述符,以便我可以确定哪些进程保留了太多打开的文件。不,我不需要像其他问题一样只为一个进程提供打开文件的数量。我需要知道每个正在运行的进程的编号,最好按降序排序。

lsof 似乎无法做到这一点。是否有任何其他实用程序或可以实现此目的的东西?

lsof

6
推荐指数
2
解决办法
1万
查看次数

"netstat -p"/"ss -p" 不显示监听端口的进程

在我的 CentOS 7sudo ss -plt*:30565,曾经在上列出了一个标记为 LISTENING 的端口,但在其行的进程列中没有任何信息。其他侦听端口像往常一样显示它们的拥有进程,例如users:(("sshd",pid=1381,fd=3)),但那一行没有任何进程信息。lsof -i :30565或者netstat -p也没有产生任何信息。

我无法重现这一点,而且我很难想象“非进程”可能正在侦听端口的情况(因为我很确定 Linux 在 tcp-listening 进程终止时会执行预期的清理工作)。由于它也发生在多个程序中,我能想到的唯一解释是这是 CentOS 的“有意但非常 rootkit-y”的行为,但我肯定遗漏了一些东西。这可能是什么原因造成的?

linux networking lsof tcp netstat

6
推荐指数
1
解决办法
3324
查看次数

找出一个文件被打开了多少次?

好的,这是一个脑力难题:如何找出当前在 Linux 机器上运行的任何/所有进程(以任何模式)打开特定文件的次数?即有多少文件描述符,全局(或在命名空间/容器内,无关紧要)正在使用引用特定文件/inode?

找出这一点的一种方法可能是使用 lsof 并计算有问题的文件名在其输出中出现的次数。但这似乎不雅,无论如何,我需要在 C 中以编程方式进行类似的操作。

编辑:或者可能是一个类似但不同的问题,这也有帮助:任何进程(可能不包括这个)?

filesystems c system-calls lsof

6
推荐指数
1
解决办法
2814
查看次数

如何找到哪些程序正在读取我的文件?

我有一个配置文件,想了解哪些可执行文件正在使用它(如果有)。我想知道谁是这个文件的读者。

如果我watch有一些间隔,我会想念它,因为读取发生得如此之快:

watch -d -n 1 "lsof /home/me/my.conf"
Run Code Online (Sandbox Code Playgroud)

如果我尝试执行该程序,我很确定在 的支持下使用它strace,它会由于strace引入的额外延迟而失败。

strace -o /tmp/$(date +%s)_myprog.trace myprog
Run Code Online (Sandbox Code Playgroud)

我怎样才能可靠地证明myprog没有读取这个文件?

linux monitoring lsof files

6
推荐指数
1
解决办法
335
查看次数

列出当前的 inotify 监视(路径名、PID)

我如何获得以下列表:

  • 当前正在监视的路径名inotify,以及
  • 进程监控的PID

我问是因为我发现syncthing'sinotify手表阻止我的磁盘被卸载。

如下所示,没有任何内容出现在lsoffuser列表中。

我猜对了syncthing......如果磁盘因以下原因无法卸载,我该如何消除未来的猜测inotify


# umount /media/backup
umount: /media/backup: target is busy.
# lsof +f -- /media/backup/
# echo $?
1
# fuser -vmM /media/backup/
                     USER        PID ACCESS COMMAND
/media/backup:       root     kernel mount /media/backup
# systemctl stop syncthing@ravi
# umount /media/backup
# echo $?
0
Run Code Online (Sandbox Code Playgroud)

linux unmounting lsof inotify fuser

6
推荐指数
1
解决办法
6528
查看次数

如何检测哪个进程现在或过去使用过文件

这是一个假设性的问题,而不是我目前遇到的问题。

你如何检测哪个进程现在或过去使用了一个文件?

找出哪个进程正在访问filenamelsof filenamefuser filename将完成工作。但是,如果想知道filename 过去 24 小时内访问哪些进程怎么办?

人们可以摆脱这个丑陋的 (*) hack

while true; do fuser filename; sleep 1; done
Run Code Online (Sandbox Code Playgroud)

让它在另一个学期运行 24 小时。但实际上有没有更好的系统,而不建立一个完整的审计框架?



(*) 更不用说fuser如果不到 1 秒可能无法检测到访问...

lsof audit fuser

6
推荐指数
1
解决办法
142
查看次数

netstat 显示监听端口,但 pid 不存在,无法使用 lsof 找到它

我正在运行 macOS(0.13.6),在尝试测试tinc时,我收到一条警告,指出端口0.0.0.0:655已在使用中。

\n\n

这是我得到的输出netstat

\n\n
 $\xc2\xa0sudo netstat -anv -p udp\nActive Internet connections (including servers)\nProto Recv-Q Send-Q  Local Address Foreign Address  (state) rhiwat shiwat    pid   epid\nudp4       0      0  *.655         *.*                      196724   9216  33103      0\n
Run Code Online (Sandbox Code Playgroud)\n\n

我也在尝试sudo lsof -i :655,但找不到哪个进程正在使用端口 655。

\n\n

我发现了一个类似的问题:https://serverfault.com/q/311009/94862,其中解决方案似乎与NFS mounts我尝试过rpcinfo -p但仍然找不到该过程有关。

\n\n

根据netstat输出,pid 是33103sudo lsof -p 33103返回是空的。

\n\n

尝试kill 不起作用:

\n\n
$\xc2\xa0kill -9 33103\nkill: kill 33103 failed: no …
Run Code Online (Sandbox Code Playgroud)

osx lsof netstat

5
推荐指数
0
解决办法
1131
查看次数