无法从 ps 的输出构造命令

无法从 ps 的输出构造命令

我希望获取 httpd 进程,然后获取bin\apachectl命令/文件 -v 输出

输出:

ps -eo cmd | grep httpd | grep -v grep
/home/myapache/app/httpd/bin/httpd -k start
/home/myapache/app/httpd/bin/httpd -k start
/home/myapache/app/httpd/bin/httpd -k start

的输出ps -eo cmd | grep httpd | grep -v grep | head -1 | awk '{print $1}'

/home/myapache/app/httpd/bin/httpd

我的要求是使用上面的命令触发下面的命令ps

/home/myapache/app/httpd/bin/apachectl -v

以下是到目前为止我能得到的。

dirname `ps -eo cmd | grep httpd | grep -v grep | head -1 | awk '{print $1}'` && echo -n "/apachectl -v

输出:

/home/myapache/app/httpd/bin
/apachectl -v

不幸的是,/apachectl -v当我希望它在同一行时出现在下一行,如下所示:

ps 要求通过最好使用 posix构建以下命令来执行它:

/home/myapache/app/httpd/bin/apachectl -v

答案1

假设ps -eo cmd做你想要的,看起来你需要的是:

"$(ps -eo cmd | awk 'sub("/[h]ttpd[^/]*$",""){print; exit}')"/apachectl -v

答案2

你可以像这样一行运行它

PS_OUTPUT=`dirname $(ps -eo cmd | grep [h]ttpd | head -1|awk '{print $1}')`; APACHE='apachectl -v'; myCMD='$OUTPUT/$APACHE'; eval $myCMD

eval: 像 shell 命令一样执行参数

相关内容