Awk

無法從 ps 的輸出構造命令

  • September 5, 2020

我希望得到 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

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

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

您可以像這樣在一行中執行它

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

eval: 像 shell 命令一樣執行參數

引用自:https://unix.stackexchange.com/questions/607963