我希望获取 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 命令一样执行参数