使用lsof
命令我想打印出TCP
与ESTABLISHED
状态的连接,但忽略与本地主机的连接。
我试过:
lsof -itcp@^127.0.0.1 -stcp:established
lsof -itcp@(^127.0.0.1) -stcp:established
lsof -itcp -i ^@127.0.0.1 -stcp:established
和其他人类似,但总是得到语法错误响应。
什么是正确的语法?
使用lsof
命令我想打印出TCP
与ESTABLISHED
状态的连接,但忽略与本地主机的连接。
我试过:
lsof -itcp@^127.0.0.1 -stcp:established
lsof -itcp@(^127.0.0.1) -stcp:established
lsof -itcp -i ^@127.0.0.1 -stcp:established
和其他人类似,但总是得到语法错误响应。
什么是正确的语法?
我发现lsof
命令输出中使用了一个 Unix 套接字:
COMMAND PID TID TASKCMD USER FD TYPE DEVICE SIZE/OFF NODE NAME
screen 110970 username 4u unix 0xffff91fe3134c400 0t0 19075659 socket
“DEVICE”列包含看起来像内存地址的内容。根据 lsof 手册页:
DEVICE contains the device numbers, separated by commas, for a character special, block special, regular, directory or NFS file;
or ``memory'' for a memory file system node under Tru64 UNIX;
or the address of the private data area of a Solaris socket stream;
or a kernel reference address that identifies the file (The kernel reference address may be used for FIFO's, for example.);
or the base address or device name of a Linux AX.25 socket device.
Usually only the lower thirty two bits of Tru64 UNIX kernel addresses are displayed.
我的问题是,我在看这些中的哪一个0xffff91fe3134c400
?
另外,我该如何与之互动?我知道我可以netcat
用来连接到 Unix 域套接字,但是从在线阅读示例看来,您必须指定一个文件。
我试图弄清楚我的 Linux Ubuntu 机器上正在使用哪些端口。我正在阅读文章如何检查端口是否在 Linux 或 Unix 上使用,并看到他们的命令之一是:
sudo lsof -i -P -n | grep LISTEN
我仍然对许多 Linux 命令感到困惑,但我最近才了解lsof
列出所有打开的文件,所以我想了解这些标志的用途。
(-P 和 -n 标志是做什么用的?我看过手册,但它根本没有帮助。似乎 -i 标志是这里最重要的标志。)
我发现如果我在没有 -i 标志的情况下对“LISTEN”进行 grep,我得到的结果与使用完全不同。
在手册中,它是这样说的:
-i [i] 此选项选择任何 Internet 地址与 i 中指定的地址匹配的文件列表。如果未指定地址,此选项将选择所有 Internet 和 x.25 (HP-UX) 网络文件的列表。
我真的不明白这意味着什么,也绝对不明白它如何帮助我弄清楚正在使用的端口。
我有以下输出lsof -i:portnumber
[ztao@MongoDB ~]$ lsof -i:6379
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
redis-ser 5341 ztao 4u IPv6 23457 0t0 TCP *:6379 (LISTEN)
redis-ser 5341 ztao 5u IPv4 23459 0t0 TCP *:6379 (LISTEN)
redis-ser 5341 ztao 6u IPv4 23533 0t0 TCP localhost:6379->localhost:6633 (ESTABLISHED)
redis-ser 5341 ztao 7u IPv4 23535 0t0 TCP localhost:6379->localhost:6634 (ESTABLISHED)
redis-ser 5341 ztao 8u IPv4 23538 0t0 TCP localhost:6379->localhost:6635 (ESTABLISHED)
redis-ser 5341 ztao 9u IPv4 23540 0t0 TCP localhost:6379->localhost:6636 (ESTABLISHED)
redis-ser 5341 ztao 10u IPv4 23839 0t0 TCP localhost:6379->localhost:6747 (ESTABLISHED)
redis-ser 5341 ztao 11u IPv4 23842 0t0 TCP localhost:6379->localhost:6748 (ESTABLISHED)
newsProvi 5349 ztao 6u IPv4 23530 0t0 TCP localhost:6633->localhost:6379 (ESTABLISHED)
newsProvi 5349 ztao 7u IPv4 23532 0t0 TCP localhost:6634->localhost:6379 (ESTABLISHED)
newsProvi 5349 ztao 8u IPv4 23536 0t0 TCP localhost:6635->localhost:6379 (ESTABLISHED)
newsProvi 5349 ztao 9u IPv4 23539 0t0 TCP localhost:6636->localhost:6379 (ESTABLISHED)
newsDistr 5456 ztao 12u IPv4 23838 0t0 TCP localhost:6747->localhost:6379 (ESTABLISHED)
newsDistr 5456 ztao 13u IPv4 23841 0t0 TCP localhost:6748->localhost:6379 (ESTABLISHED)
我很难理解是什么
localhost:6379->localhost:6633 (ESTABLISHED)
意思。我试图搜索但找不到答案。这一定是一些非常基础的知识,但我是新手,我不知道。有什么帮助吗?
我试图查看已经运行的 rsync 和 cp 任务的进度,并找到了这个答案,让我可以看到当前正在发生的事情
当我转到man
页面lsof
并看到它-c
是用来选择要查看的过程(cp
在下面的示例中)时:
-a causes list selection options to be ANDed, as described above.
-b causes lsof to avoid kernel functions that might block - lstat(2), readlink(2), and stat(2).
但我真的不明白与3-999
做什么lsof -ad3-999 -c cp
?