【发布时间】:2020-07-02 06:54:56
【问题描述】:
我需要为主机上的给定 PID 运行此命令。
cmd = cat /proc/$PID/cgroup | grep -o -e "docker-.*.scope"
io.popen(cmd)
当 PID 是一个容器时,这很好,但我偶尔会看到,
cat: /proc/12345/cgroup: No such file or directory
所以,我做了以下事情:
f1 = io.open("/proc/" .. PID .. "/cgroup", "r+")
if (f1 == nil) then return end
local filename = "/proc/" .. PID .. "/cgroup"
local cmd = "test -f " .. filename .. " && cat " .. filename .. " grep -o -e "docker-.*.scope"
local f2 = io.popen(cmd)
我仍然偶尔会看到错误消息, cat: /proc/5678/cgroup: 没有这样的文件或目录
请注意,我打开了 /proc/$PID/cgroup 并在传递给 popen 的命令中执行 test -f 检查。
我的假设是,在test -f 和后来的cat ... 命令之间,进程的 proc 条目消失了,因此 popen 命令失败。
上面的代码有问题吗?我只需要禁止显示此错误消息。抑制此错误消息的好方法是什么?
【问题讨论】: