我正在使用 Redhat 7.4,这台机器没有互联网连接,我想安装 Docker,因此我下载了一个 rpm 包,这个:
docker-ce-selinux-17.03.0.ce-1.el7.centos.noarch.rpm
我使用了该命令yum install,显然所有过程都进行得很顺利,但是当我使用时我的问题就开始了,sudo systemctl start docker我得到了这个:
无法启动 docker.service:未找到单元。
我尝试了本主题中的解决方案:Cannot start docker daemon in CentOS7 | Stack Overflow和我的问题没有解决,我在文档 docker.socket 中写了这个
[Unit]
Description=Docker Socket for the API
PartOf=docker.service
[Socket]
ListenStream=/var/run/docker.sock
SocketMode=0660
SocketUser=root
SocketGroup=docker
[Install]
WantedBy=sockets.target
Run Code Online (Sandbox Code Playgroud)
使用该命令时,sudo systemctl start docker.socket它会抛出:
docker.socket 的作业失败。有关详细信息,请参阅“systemctl status docker.socket”和“journalctl -xe”。
然后我使用了这个命令sudo systemctl status docker.socket并得到了这个
docker.socket - Docker Socket for the API
Loaded: loaded (/usr/lib/systemd/system/docker.socket; disabled; vendor
preset: disabled)
Active: inactive (dead)
Listen: …Run Code Online (Sandbox Code Playgroud) 我目前正在尝试使用两个 Fifo 套接字创建一个 systemd 服务。这些套接字映射到应用程序的标准输出和标准输入。我当前正在使用以下配置文件。
foo.service
[Unit]
Description=foo Fifo test
After=network.target foo-in.socket foo-out.socket
Requires=foo-in.socket foo-out.socket
[Service]
Sockets=foo-out.socket
Sockets=foo-in.socket
StandardOutput=fd:foo-out.socket
StandardInput=fd:foo-in.socket
StandardError=journal
ExecStart=/path/to/foo/exec
Run Code Online (Sandbox Code Playgroud)
foo-out.socket
[Unit]
Description=foo Task Writes to this
[Socket]
Service=foo.service
ListenFIFO=%t/foo/out
Run Code Online (Sandbox Code Playgroud)
foo-in.socket
[Unit]
Description=foo Task reads commands from this
[Socket]
Service=foo.service
ListenFIFO=/run/user/1000/foo/in
Run Code Online (Sandbox Code Playgroud)
systemctl --user daemon-reload我可以使用命令和启动服务systemctl --user start foo。当我尝试停止 foo.service 时,问题就出现了。我收到这条消息:
Warning: Stopping foo.service, but it can still be activated by:
foo-in.socket
foo-out.socket
Run Code Online (Sandbox Code Playgroud)
有没有办法在服务停止时自动停止套接字?
man 7 unix 在 Linux 上说:
在 Linux 实现中,文件系统中可见的套接字尊重它们所在目录的权限。它们的所有者、组和权限可以更改。如果进程在创建套接字的目录上没有写入和搜索(执行)权限,则创建新套接字将失败。 连接到套接字对象需要读/写权限。这种行为不同于许多 BSD 派生系统,后者忽略 UNIX 域套接字的权限。便携式程序不应依赖此功能来确保安全。
哪些系统会忽略 UNIX 域套接字的权限?
我对使用 UNIX 域套接字来控制 VLC 播放感兴趣。使用 oldrc的VideoLan 文档中概述了此功能。
所以我需要的是使用以下命令启动 vlc:
cvlc <path to media> -I oldrc --rc-unix /some/socket
Run Code Online (Sandbox Code Playgroud)
然后我应该能够发送 vlc 命令/some/socket来控制播放。
我的 Kubuntu 12.10 系统上是否有任何通用套接字可以用于此目的?
我们的内存缓存守护进程报告非零的 'curr_connections'...
$ telnet memcache-server 11211
Escape character is '^]'.
stats
...
STAT curr_connections 12
...
Run Code Online (Sandbox Code Playgroud)
...然而,lsof显示没有套接字连接:
$ ssh memcache-server
# lsof -P -i -n | grep memcache
memcached 1759 memcached 26u IPv4 11638 0t0 TCP *:11211 (LISTEN)
memcached 1759 memcached 27u IPv6 11639 0t0 TCP *:11211 (LISTEN)
memcached 1759 memcached 28u IPv4 11642 0t0 UDP *:11211
memcached 1759 memcached 29u IPv6 11643 0t0 UDP *:11211
Run Code Online (Sandbox Code Playgroud)
我猜 'curr_connections' 并不意味着我认为它的作用......
当我尝试通过 ssh 连接到远程主机时,我收到以下错误消息:
root@cloudstack-server-1:~/.ssh# ssh ubuntu@172.17.4.17 -v
OpenSSH_5.9p1 Debian-5ubuntu1.1, OpenSSL 1.0.1 14 Mar 2012
debug1: Reading configuration data /etc/ssh/ssh_config
debug1: /etc/ssh/ssh_config line 19: Applying options for *
debug1: Connecting to 172.17.4.17 [172.17.4.17] port 22.
debug1: Connection established.
debug1: permanently_set_uid: 0/0
debug1: identity file /root/.ssh/id_rsa type 1
debug1: Checking blacklist file /usr/share/ssh/blacklist.RSA-1024
debug1: Checking blacklist file /etc/ssh/blacklist.RSA-1024
debug1: identity file /root/.ssh/id_rsa-cert type -1
debug1: identity file /root/.ssh/id_dsa type 2
debug1: Checking blacklist file /usr/share/ssh/blacklist.DSA-1024
debug1: Checking blacklist file /etc/ssh/blacklist.DSA-1024
debug1: identity …Run Code Online (Sandbox Code Playgroud) 我有从传感器读取数据并通过串行到 USB 转换器(ftdi232 电缆)发送的微控制器设备。这个串口转 USB 转换器连接到 ARMv7 迷你电脑 - CuBox和 Ubuntu 13.04。我还将 WiFi USB 适配器连接到 CuBox。
我想从串口读取数据并通过 WiFi 发送并在 Windows PC 上接收。没有网络套接字编程,使用可用的工具是可能的吗?类似于串行端口和 WiFi 之间的管道/桥接/重定向。我不需要与这个盒子通信,所以通过 WiFi 的恒定和单向数据流就足够了。
感谢您提供有关如何设置此通信的任何资源和想法。
我在客户端进程和服务器进程之间有一个套接字连接,它们都在我的机器上运行。有两个条目显示为连接,
sudo netstat -ntp | grep 56442
tcp 1 0 127.0.0.1:56442 127.0.0.1:8002 CLOSE_WAIT 8276/python
tcp 0 0 127.0.0.1:8002 127.0.0.1:56442 FIN_WAIT2 -
Run Code Online (Sandbox Code Playgroud)
在这种情况下,我如何确定哪个是服务器?
我知道 TCP 服务器正在端口上运行8002,并且客户端从端口连接到侦听服务器56442。
我试图通过查看netstat输出条目找出一种区分服务器和客户端的方法。
为什么当套接字处于FIN_WAIT2状态时进程 ID/描述不出现?
我想定期观察一个套接字状态,所以我需要通过命令检查套接字状态。
目前我列出了所有侦听套接字ss并通过grep.
ss -l | grep -q /run/php/php7.0-fpm.sock
Run Code Online (Sandbox Code Playgroud)
有没有更好的方法来检查套接字的状态?
一些本地进程在端口 1234 上连接和断开连接到 127.0.0.1。
我想记录到此端口(或服务器进程)的所有连接。
我试过了
ss -tpn | grep 1234
Run Code Online (Sandbox Code Playgroud)
它显示一个列表,但随后停止;它不会继续记录新连接,因此我无法捕获所有者的套接字或 PID。
我可以使用什么工具来发现连接和断开套接字的 PID?
socket ×10
ss ×2
bridge ×1
docker ×1
fifo ×1
lsof ×1
netstat ×1
networking ×1
permissions ×1
portability ×1
process ×1
rhel ×1
serial-port ×1
services ×1
ssh ×1
systemd ×1
tcp ×1
vlc ×1
wifi ×1