我想创建一个文件,例如,让它称为/tmp/not_running_pods
,当读取cat /tmp/not_running_pods
时运行kubectl get pods -o wide | grep -v Running
并将输出提供给读取过程。
为了举例,这个用例被简化了。没有真正寻找替代方案,除非它适合这个确切的情况:文件输出没有'服务'总是运行监听阅读器
在搜索中很难找到任何具体的内容。我的本地羡慕是macos,但希望有一些通用的linux/bash/zsh
编辑:终于找到了我脑子里想的东西,比如inetd/super-server -仍然在看这是否适用于这种情况
读取cat/tmp/not_running_podsruns
文件是静态的。它的存在。
HTTP web服务器运行一个PHP脚本(和更多的东西)来生成网页供您查看。SSHD服务器运行一个让你与之联系的躯壳。MYSQL服务器提供一个允许执行查询的特定协议。"做某事";当建立连接时,通常使用套接字-网络,tcp,但也使用文件套接字-允许accept()
检测传入的连接并运行
# in one terminal
$ f() { echo new >&2; echo Hello world; LC_ALL=C date; }; export -f f; socat UNIX-LISTEN:/tmp/file,fork SYSTEM:'bash -c f'
new
new
# in the second terminal
$ socat UNIX-CONNECT:/tmp/file -
Hello world
Tue Jul 19 21:29:03 CEST 2022
$ socat UNIX-CONNECT:/tmp/file -
Hello world
Tue Jul 19 21:29:19 CEST 2022
如果您真的想要在读取文件时"执行一个操作",那么您必须创建自己的文件系统来执行该操作。主要的例子是/proc
和/sys
中的文件。对于用户空间文件系统,使用FUSE编写程序。
代替
$ cat /tmp/not_running_pods
just make ~/bin/not_running_pods:
#! /bin/bash
kubectl get pods -o wide | grep -v Running
withchmod 755
and do
$ not_running_pods
简单,易于理解,支持良好。