小编Jon*_*art的帖子

谁有这个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万
查看次数

mv 一个文件到 /dev/null 中断 dev/null

如果我这样做:touch file; mv file /dev/null作为根,/dev/null消失。 ls -lad /dev/null结果没有这样的文件或目录。这会破坏依赖于/dev/nullSSH 的应用程序,并且可以通过执行mknod /dev/null c 1 3; chmod 666 /dev/null. 为什么将常规文件移动到这个特殊文件会导致/dev/null?

澄清一下,这是出于测试目的,我了解该mv命令的工作原理。我很好奇的是为什么ls -la /dev/null在用常规文件替换它之前显示预期的输出,但之后它显示/dev/null不存在,即使据称是通过原始mv命令创建的文件并且文件命令显示 ASCII 文本。我认为这必须是ls命令行为与devfs非特殊文件替换字符/特殊文件时的组合。这是在 Mac OS X 上,行为在其他操作系统上可能会有所不同。

osx devices null

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

为什么 Gnome 分数缩放是 1.7518248558044434 而不是 1.75?

如果我在 Gnome 设置中设置 175% 缩放,则该值将保存1.7518248558044434~/.config/monitors.xml

<monitors version="2">
  <configuration>
    <logicalmonitor>
      <x>0</x>
      <y>0</y>
      <scale>1.7518248558044434</scale>
      <primary>yes</primary>
      <monitor>
        <monitor spec>
          <connector>DP-3</connector>
Run Code Online (Sandbox Code Playgroud)

为什么会这样呢?起初,我认为这可能是由于浮点舍入误差造成的,但 1.75 是可以表达精确值的快乐数字之一。

侏儒韦兰 43.3

gnome wayland display

22
推荐指数
2
解决办法
8360
查看次数

以用户身份挂载 ramfs

我的 fstab 条目:

none    /home/jreinhart/ramdisk    ramfs    defaults,user   0 0
Run Code Online (Sandbox Code Playgroud)

挂载的目录:

drwxrwxr-x  2 jreinhart jreinhart  4096  Oct 17 11:31 ramdisk
Run Code Online (Sandbox Code Playgroud)

之后的目录mount ramdisk

drwxr-xr-x  2 root     jreinhart  4096  Oct 17 11:31 ramdisk
Run Code Online (Sandbox Code Playgroud)

所以,你可以看到问题。挂载后,所有者更改为 root,组权限将变为,r-x因此我无法使用此 ramdisk。是什么赋予了?

我正在尝试这样做而不必su

filesystems permissions mount fstab

9
推荐指数
1
解决办法
6821
查看次数

网桥在启动时无法通过 DHCP 获取 IP

我正在运行 CentOS 7。我没有运行 NetworkManager,我实际上已经卸载了它。

我的系统应该br0在启动时通过 DHCP 获取 IPv4 地址。但是,当我登录时,它没有地址。

我的配置:

# pwd
/etc/sysconfig/network-scripts

# cat ifcfg-enp5s0 
DEVICE=enp5s0
ONBOOT="yes"
BRIDGE=br0

# cat ifcfg-br0 
DEVICE=br0
ONBOOT=yes
TYPE=Bridge
BOOTPROTO=dhcp
STP=on
DELAY=0
Run Code Online (Sandbox Code Playgroud)

请注意,我没有手动配置此网桥;virt-manager当我br0在此对话框中添加时这样做:

virt-manager 屏幕截图显示网络接口选项卡上的 br0

相关journalctl --boot | grep '\(\<br0\>\|enp5s0\)'和上下文:

Jan 08 21:04:32 jonathon-centos7 kernel: r8169 0000:05:00.0 enp5s0: link down
Jan 08 21:04:32 jonathon-centos7 kernel: IPv6: ADDRCONF(NETDEV_UP): enp5s0: link is not ready
Jan 08 21:04:32 jonathon-centos7 kernel: r8169 0000:05:00.0 enp5s0: link down
Jan 08 21:04:32 jonathon-centos7 kernel: device …
Run Code Online (Sandbox Code Playgroud)

dhcp centos bridge

8
推荐指数
1
解决办法
7151
查看次数

根据客户端 IP 对 OpenSSH 服务器使用不同的身份验证方法

我确定之前已经回答过这个问题,但是我无法通过 Google 和此搜索找到答案。我目前只允许对我的机器上的 openssh 服务器进行共享密钥身份验证。但是,当我通过内部 (192.168.1.x) 子网在本地连接时,我希望能够使用密码身份验证。

是否可以在 OpenSSH 中使用每主机身份验证方法?谢谢!

ssh openssh

5
推荐指数
1
解决办法
2242
查看次数