我想确定哪个进程具有 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 正在与哪个子进程通信。
如果我这样做:touch file; mv file /dev/null
作为根,/dev/null
消失。 ls -lad /dev/null
结果没有这样的文件或目录。这会破坏依赖于/dev/null
SSH 的应用程序,并且可以通过执行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 上,行为在其他操作系统上可能会有所不同。
如果我在 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
我的 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
。
我正在运行 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
在此对话框中添加时这样做:
相关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) 我确定之前已经回答过这个问题,但是我无法通过 Google 和此搜索找到答案。我目前只允许对我的机器上的 openssh 服务器进行共享密钥身份验证。但是,当我通过内部 (192.168.1.x) 子网在本地连接时,我希望能够使用密码身份验证。
是否可以在 OpenSSH 中使用每主机身份验证方法?谢谢!