AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / unix / 问题

问题[unix-sockets](unix)

Martin Hope
deshalder
Asked: 2022-04-16 07:38:33 +0800 CST

SCM 在 unix 套接字上下文(SCM_RIGHTS 等)中是什么意思?

  • 4

从man 7 unix

SCM_RIGHTS 从另一个进程发送或接收一组打开的文件描述符。数据部分包含文件描述符的整数数组。传递的文件描述符表现得好像它们是用 dup(2) 创建的。

其中还有其他带有 SCM 的概念;SCM 在这里是什么意思?我没能找到它。

socket unix-sockets
  • 1 个回答
  • 210 Views
Martin Hope
Jeff
Asked: 2022-03-03 12:57:00 +0800 CST

unix 域套接字是否支持重用?

  • 0

unix 域套接字是否支持重用?

网上有很多关于这个的相互矛盾的信息。我怀疑其中很多只是过时的,但我不是专家。

如果我ProxySet enablereuse=on的处理程序是套接字,我会这样做吗?例如

<Proxy "fcgi://matching-worker-string/" max=10>
    # Unsure about this:
    ProxySet enablereuse=on
</Proxy>

<FilesMatch "\.php$">
    <If "-f %{REQUEST_FILENAME}">
        SetHandler proxy:unix:/run/php/php.sock|fcgi://matching-worker-string/
    </If>
</FilesMatch>

许多在线评论表示它们不受支持,并声明您甚至可以查看Apache 文档以获取证据,但我没有看到。也许他们在 2015-2017 年没有重用支持,但现在呢?

编辑

Apache 2.4、php-fpm 7.3、mod_proxy_fcgi

apache-httpd unix-sockets
  • 1 个回答
  • 98 Views
Martin Hope
dcom-launch
Asked: 2022-01-27 11:50:18 +0800 CST

与 lsof 中的 Unix Socket 交互

  • 1

我发现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 域套接字,但是从在线阅读示例看来,您必须指定一个文件。

unix-sockets lsof
  • 1 个回答
  • 635 Views
Martin Hope
Will
Asked: 2019-04-04 04:50:47 +0800 CST

除非通过 UDP 使用 socat 代理,否则将数据发送到 Unix 套接字失败

  • 1

我正在尝试调试为什么不通过 Unix 域套接字发送数据。

我有 2 个应用程序应该通过 UDS 进行通信,但不是。

为了测试我做了以下事情:

使用socat,我在这样的套接字上监听:

socat -x -u UNIX-RECV:/tmp/dd.sock STDOUT

并使用 netcat 发送这样的数据:

echo "hello" | nc -U -w1 /tmp/dd.sock

什么都没发生。

但是,如果我还将 socat 设置为代理,以侦听 UDP 端口,并将其写入套接字,如下所示:

socat -s -u UDP-RECV:9988 UNIX-SENDTO:/tmp/dd.sock

然后通过netcatUDP 端口发送工作:

echo "Hello" | nc -u localhost 9988

我还能够让我的客户端应用程序将 UDP 写入代理,并且在写入 unix 套接字时没有成功。

我想了解为什么socat不接收由 写入它的数据nc,但如果我通过 UDP 代理则可以。

使用 Amazon Linux 4.14.101-75.76.amzn1.x86_64

unix-sockets socat
  • 1 个回答
  • 2015 Views
Martin Hope
Zoltan K.
Asked: 2019-04-02 04:29:14 +0800 CST

Unix Domain Socket 绑定,复用地址

  • 4

如果我bind()是一个AF_INET套接字(用于 TCP 连接),那么稍后close(),当我运行我的程序时,我可能会遇到问题,因为尽管有close(),内核仍然可以拥有与打开的套接字关联的资源。

不过,我对 Unix Domain Sockets 的这个问题不是很清楚。

到目前为止我见过

  1. 我需要一个独特的路径来使用它bind()。调用时路径必须不存在,bind()文件将由bind(). (但是,它可能在文件系统中可见也可能不可见。如果路径以特殊字符开头,则文件不会出现在文件系统中\0。)

  2. 如果文件不是unlink()-ed,即使在关闭之后,内核也会保留相关的资源,并且套接字是完全正常的。

问题:

由于任何一个close()或unlink()单独一个都不能使 Unix 域套接字消失,他们两个都会可靠地完成这个技巧/触发内核放弃与套接字相关的所有资源吗?

如果两者都被调用,我是否可能会遇到reuseaddr错误?close()unlink()


编辑(在评论和回答之后):

因此,绑定的 AF_LOCAL 套接字看起来像这样:

unix_domain_socket_inode
-> binded to a socket
-> associated with a file (path)

unix_domain_socket_inode只要:

  1. 某些东西使它保持打开状态(套接字未关闭),或
  2. 它有关联的路径

如果只有 1. 为真,我们有一个打开的套接字和一个 inode,一切正常。

如果只有 2. 为真,因为 inode 有与之关联的路径,内核无法清理它,但它也不起作用,因为它缺少处理传入连接的套接字资源。它甚至不会是一个普通的文件,只是一个繁忙的工作套接字的过去荣耀的死壳。

在 AF_INET 连接的情况下,地址重用问题是提高可用性的设计选择。

在 AF_LOCAL 的情况下,剩余文件是先前设计选择的产物,这会阻止内核本身在调用时自动清理它在 1 go 中创建的文件close()。没有相关的隐藏机制,因此内核希望在close()调用 a 后保留此资源。

unix-sockets
  • 2 个回答
  • 2626 Views
Martin Hope
Gregg Leventhal
Asked: 2019-03-25 12:33:44 +0800 CST

一个进程可以有一个非阻塞的描述符,而另一个进程有一个描述符引用同一个阻塞的文件/套接字吗?

  • 0

我对套接字比对常规文件更感兴趣,但基本上我想知道一个进程是否可以将套接字“视为”阻塞,而另一个进程可以将其视为非阻塞。我猜是的,内核根据系统调用中使用的选项来处理所有这些。

我想这更多是关于 Unix 域套接字而不是 TCP 套接字,因为我不认为 2 个不同的进程可以使用相同的 TCP 套接字(但我可能是错的)

io unix-sockets
  • 2 个回答
  • 396 Views
Martin Hope
Dummmy
Asked: 2019-01-30 03:30:42 +0800 CST

可以在不接触 ICMP 的情况下进行跟踪路由吗?

  • 2

我经常遇到一种情况,我想在 Linux 中跟踪没有 root 或 NET_RAW 上限的 IP。

我试图发送一个带有小 TTL 的 UDP 数据包,但根本没有发出 ttl 错误。似乎获得 TTL 超出错误需要使用 ICMP 套接字。是否可以在不涉及 ICMP 的情况下仅使用 UDP 或 TCP 协议,同时仍会收到 TTL 错误通知,以便我可以使用有限的功能跟踪路由?

unix-sockets traceroute
  • 1 个回答
  • 3645 Views
Martin Hope
Sergiy Kolodyazhnyy
Asked: 2018-09-21 23:09:21 +0800 CST

如何创建公共 unix 域套接字?

  • 3

考虑/var/run/acpid.socket。在任何时候,我都可以连接到它并从中断开连接。将其与nc:

$ nc -l -U ./myunixsocket.sock
Ncat: bind to ./myunixsocket.sock: Address already in use. QUITTING.

nc显然只允许一次性使用的套接字。那么问题是,我如何创建一个类似于 的套接字以/var/run/acpid.socket供多次使用和重用?

unix-sockets nc
  • 1 个回答
  • 8538 Views
Martin Hope
pkaramol
Asked: 2018-09-01 21:44:16 +0800 CST

ss 命令:原始套接字和 unix 套接字之间的区别

  • 3

该ss命令(iproute2来自作为 的更新替代品的工具集netstat)在其--help以下选项中

   -0, --packet        display PACKET sockets
   -t, --tcp           display only TCP sockets
   -S, --sctp          display only SCTP sockets
   -u, --udp           display only UDP sockets
   -d, --dccp          display only DCCP sockets
   -w, --raw           display only RAW sockets
   -x, --unix          display only Unix domain sockets

RAW域套接字和域套接字之间的区别到底是什么UNIX?

PACKET插座实际上是什么?

command-line unix-sockets
  • 1 个回答
  • 1714 Views
Martin Hope
LB2
Asked: 2018-07-28 15:07:49 +0800 CST

ssh:通道 xx:打开失败:连接失败:打开失败

  • 1

我ssh在 macOS 上运行以将连接到本地 Unix 域套接字重定向到另一台机器上的域套接字。call的命令行ssh大致如下:

$ ssh -nNT -L /var/run/some.socket:/var/run/some.socket -o TCPKeepAlive=yes \
    -o ServerAliveCountMax=10 -o ServerAliveInterval=60 user@destination

在执行一些负载测试后,我发现有时某些客户端连接失败,并且在检查日志时,我发现在ssh连接失败的同时输出以下错误:

channel 41: open failed: connect failed: open failed
channel 44: open failed: connect failed: open failed
channel 47: open failed: connect failed: open failed
channel 49: open failed: connect failed: open failed
channel 51: open failed: connect failed: open failed
channel 59: open failed: connect failed: open failed
channel 62: open failed: connect failed: open failed
channel 64: open failed: connect failed: open failed

负载测试参数是运行 100 个并发连接(连接、发送一些数据、接收一些数据、断开连接,总共要执行 10,000 个连接。)

观察到的行为是,在测试开始时非常快速地创建第一组连接时,很少有连接因上述错误而失败。多少次失败的范围从运行到运行,但通常在几到十几个之间。大多数失败往往发生在测试开始时,尽管有时会发生在测试的后期(即在完成前 100 次之后)。

SO 上具有类似描述的其他帖子似乎涵盖了 using localhostwith workaround to use的问题127.0.0.1,这使得它不相关,因为它不是 TCP/IP 套接字。此外,destination上述命令中的部分已指定为 IP 地址。

对如何解决和跟踪问题有点茫然。我尝试使用-vvv来获取详细的ssh操作转储,但没有任何成果(它为相关通道记录的所有内容是套接字设置为非阻塞)。

请注意,调用ssh是从脚本完成的,并且调用之前ulimit -n 1024应该提供足够多的文件描述符来为所有套接字提供服务。

ssh unix-sockets
  • 1 个回答
  • 7690 Views

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    模块 i915 可能缺少固件 /lib/firmware/i915/*

    • 3 个回答
  • Marko Smith

    无法获取 jessie backports 存储库

    • 4 个回答
  • Marko Smith

    如何将 GPG 私钥和公钥导出到文件

    • 4 个回答
  • Marko Smith

    我们如何运行存储在变量中的命令?

    • 5 个回答
  • Marko Smith

    如何配置 systemd-resolved 和 systemd-networkd 以使用本地 DNS 服务器来解析本地域和远程 DNS 服务器来解析远程域?

    • 3 个回答
  • Marko Smith

    dist-upgrade 后 Kali Linux 中的 apt-get update 错误 [重复]

    • 2 个回答
  • Marko Smith

    如何从 systemctl 服务日志中查看最新的 x 行

    • 5 个回答
  • Marko Smith

    Nano - 跳转到文件末尾

    • 8 个回答
  • Marko Smith

    grub 错误:你需要先加载内核

    • 4 个回答
  • Marko Smith

    如何下载软件包而不是使用 apt-get 命令安装它?

    • 7 个回答
  • Martin Hope
    user12345 无法获取 jessie backports 存储库 2019-03-27 04:39:28 +0800 CST
  • Martin Hope
    Carl 为什么大多数 systemd 示例都包含 WantedBy=multi-user.target? 2019-03-15 11:49:25 +0800 CST
  • Martin Hope
    rocky 如何将 GPG 私钥和公钥导出到文件 2018-11-16 05:36:15 +0800 CST
  • Martin Hope
    Evan Carroll systemctl 状态显示:“状态:降级” 2018-06-03 18:48:17 +0800 CST
  • Martin Hope
    Tim 我们如何运行存储在变量中的命令? 2018-05-21 04:46:29 +0800 CST
  • Martin Hope
    Ankur S 为什么 /dev/null 是一个文件?为什么它的功能不作为一个简单的程序来实现? 2018-04-17 07:28:04 +0800 CST
  • Martin Hope
    user3191334 如何从 systemctl 服务日志中查看最新的 x 行 2018-02-07 00:14:16 +0800 CST
  • Martin Hope
    Marko Pacak Nano - 跳转到文件末尾 2018-02-01 01:53:03 +0800 CST
  • Martin Hope
    Kidburla 为什么真假这么大? 2018-01-26 12:14:47 +0800 CST
  • Martin Hope
    Christos Baziotis 在一个巨大的(70GB)、一行、文本文件中替换字符串 2017-12-30 06:58:33 +0800 CST

热门标签

linux bash debian shell-script text-processing ubuntu centos shell awk ssh

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve