尝试加入 ps 和 pwdx linux 命令的输出
Trying to join output from ps and pwdx linux commands
我正在尝试加入 ps 和 pwdx 命令的输出。谁能指出我命令中的错误。
ps -eo %p,%c,%u,%a --no-headers | awk -F',' '{ for(i=1;i<=NF;i++) {printf $i",
"} ; printf pwdx ; printf "\n" }'
我希望每行的最后一列是进程目录。但它只是显示 $1 的值而不是命令输出 pwdx $1
这是我的输出样本(1 行):
163957, processA , userA , /bin/processA -args, 163957
我预计
163957, processA , userA , /bin/processA -args, /app/processA
谁能指出我可能遗漏了什么
试试这个:
ps -eo %p,%c,%u,%a --no-headers | awk -F',' '{ printf "%s,", [=10=]; "pwdx " | getline; print gensub("^[0-9]*: *","","1",[=10=]);}'
解释:
awk '{print pwdx }'
将连接 awk 变量 pwdx
(为空)和 </code>(pid)。因此,实际上,您在输出中只得到 <code>pid
。
为了运行一个命令并得到它的输出,你需要使用这个awk
结构:
awk '{"some command" | getline; do_something_with [=11=]}'
# After getline, the output will be present in [=11=].
#For multiline output, use this:
awk '{while ("some command" | getline){do_something_with [=11=]}}'
# Each individual line will be present in subsequent run of the while loop.
简化您的示例以专注于如何在 awk
中执行 pwdx
命令并将此命令的结果捕获到 awk
变量中,因为这是您遇到问题的地方:
ps -eo %p,%c,%u,%a --no-headers | awk -F',' '{ system("pwdx ") | getline vpwdx; printf vpwdx }'
产生:
15651665: /
16651690: /
16901691: /home/fpm
169134248: /home/fpm
3424834254: /home/fpm/tmp
3425440181: /home/fpm/UDK2015
...
我正在尝试加入 ps 和 pwdx 命令的输出。谁能指出我命令中的错误。
ps -eo %p,%c,%u,%a --no-headers | awk -F',' '{ for(i=1;i<=NF;i++) {printf $i",
"} ; printf pwdx ; printf "\n" }'
我希望每行的最后一列是进程目录。但它只是显示 $1 的值而不是命令输出 pwdx $1
这是我的输出样本(1 行):
163957, processA , userA , /bin/processA -args, 163957
我预计
163957, processA , userA , /bin/processA -args, /app/processA
谁能指出我可能遗漏了什么
试试这个:
ps -eo %p,%c,%u,%a --no-headers | awk -F',' '{ printf "%s,", [=10=]; "pwdx " | getline; print gensub("^[0-9]*: *","","1",[=10=]);}'
解释:
awk '{print pwdx }'
将连接 awk 变量 pwdx
(为空)和 </code>(pid)。因此,实际上,您在输出中只得到 <code>pid
。
为了运行一个命令并得到它的输出,你需要使用这个awk
结构:
awk '{"some command" | getline; do_something_with [=11=]}'
# After getline, the output will be present in [=11=].
#For multiline output, use this:
awk '{while ("some command" | getline){do_something_with [=11=]}}'
# Each individual line will be present in subsequent run of the while loop.
简化您的示例以专注于如何在 awk
中执行 pwdx
命令并将此命令的结果捕获到 awk
变量中,因为这是您遇到问题的地方:
ps -eo %p,%c,%u,%a --no-headers | awk -F',' '{ system("pwdx ") | getline vpwdx; printf vpwdx }'
产生:
15651665: /
16651690: /
16901691: /home/fpm
169134248: /home/fpm
3424834254: /home/fpm/tmp
3425440181: /home/fpm/UDK2015
...