知道为什么在基于 busybox 的容器镜像上运行时没有显示任何内容吗?尝试连接到/nc
上的端口时出现问题。127.0.0.1
localhost
/app # nc -v 127.0.0.1 12345
/app # nc -v localhost 12345
/app # nc
BusyBox v1.35.0 (2022-08-01 15:14:44 UTC) multi-call binary.
Usage: nc [OPTIONS] HOST PORT - connect
nc [OPTIONS] -l -p PORT [HOST] [PORT] - listen
...
我希望看到是否nc
已连接。在普通的 Ubuntu 上,该命令会输出成功或不成功的连接,如下所示。在 busybox 上,我不知道发生了什么,因为没有输出任何内容。
答案1
大多数 Linux/Unix 程序除非发生错误,否则不会发出任何信息。这是因为相同的程序通常也用于编写脚本。请参阅https://en.wikipedia.org/wiki/Unix_philosophy 此外,BusyBox 在设计上非常安静,并尽量避免使用大文本。
但是您可以检查程序使用$?
命令返回的错误代码。
$ busybox httpd -p 8080
$ busybox nc 127.0.0.1 8081
nc: can't connect to remote host (127.0.0.1): Connection refused
$ echo $?
1
$ busybox nc 127.0.0.1 8080
^C
$ echo $?
130
这里我在端口 8080 上启动了 httpd。然后执行了 nc,但失败了,错误代码为 1。再次在 8080 端口上启动 nc,成功了,没有显示任何信息。但我中断了它,所以退出代码是 130: