能否创建读取时自动执行命令生成输出的文件?
实现读取文件时自动执行命令的方案
核心思路:使用POSIX命名管道(FIFO)
命名管道允许进程通过文件路径完成通信,当有进程读取管道时,写入端的命令会被触发执行,完美匹配需求——仅需一个轻量后台循环(无读取请求时处于休眠状态),无需常驻服务。
操作步骤
创建命名管道
执行命令创建指定路径的FIFO:mkfifo /tmp/not_running_pods启动后台触发逻辑
运行以下命令,它会在后台等待管道被读取,每次读取时自动执行目标kubectl命令并将结果输出到管道:while true; do kubectl get pods -o wide | grep -v Running > /tmp/not_running_pods done &这个循环进程非常轻量,无读取请求时处于阻塞休眠状态,不会占用CPU资源。
验证效果
直接用cat读取管道,即可实时获取非Running状态的Pod信息:cat /tmp/not_running_pods
兼容性说明
该方案完全兼容Linux(bash/zsh)和macOS(bash/zsh),所有命令均为POSIX标准工具,无需额外安装依赖。
清理方法
如果不再使用,可执行以下命令终止后台进程并删除管道:
# 终止后台循环进程 pkill -f "while true; do kubectl get pods" # 删除命名管道 rm /tmp/not_running_pods
内容的提问来源于stack exchange,提问作者user7187237
相关产品推荐
相关产品推荐

