linux - 显示套接字选项

标签 linux shell

我如何从 shell 中看到设置了哪些套接字选项?尤其是 我很想知道是否设置了 SO_BROADCAST?

最佳答案

您可以使用 lsof(8) .如果 PID 是进程 ID,FD 是您感兴趣的套接字的文件描述符编号,您可以这样做:

lsof -a -p PID -d FD -T f

列出进程的所有 IPv4 套接字:

lsof -a -p PID -i 4 -T f

这将打印出带有 SO= 的套接字选项,以及其他信息。请注意,如果未设置任何选项,您将得到空字符串,因此您会看到类似 SO=PQLEN=0 等的内容。要测试 SO_BROADCAST,只需SO= 之后的字符串 SO_BROADCAST 的 grep,例如

if lsof -a -p PID -d FD -T f | grep -q 'SO=[^=]*SO_BROADCAST'; then
    # socket has SO_BROADCAST
else
    # it doesn't
fi

关于linux - 显示套接字选项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1824115/

相关文章:

linux - 带有 DB 的主机端口到 Docker 容器

linux - 如何在不同的容器中运行相同的命令?

linux - 从 shell 脚本创建初始化脚本

shell - 是否可以使用来自 shell 脚本的 teamcity 消息?

c - 获取自己的蓝牙地址

c - Ubuntu递归列出文件,检测符号链接(symbolic link)

linux - 生产中的 Sunspot Solr

linux - 在 awk 命令 shell 中使用日期

bash - shell $@ 变量赋值和迭代

bash - 是否可以在 Bash 脚本的 switch case 中组合两个条件?