use*_*964 2 bash grep command-line-arguments
我想知道当前运行的路径./a.out
有多个 MPI 进程,但我只需要几个 PID 之一./a.out。所以我首先使用下面的代码来 grep 它:
ps aux | grep -P "Rl.*a\.out" | grep -oP "\d+"|head -n 1
Run Code Online (Sandbox Code Playgroud)
它给出一个 PID,例如 12345。
现在我想使用:
lsof -p12345
Run Code Online (Sandbox Code Playgroud)
知道PID 12345的文件路径。
如何将两步合并到一个命令行中?
这是您需要的命令:
ps aux|grep -P "Rl.*a\.out"|grep -oP "\d+"|head -n 1 | xargs lsof -p
Run Code Online (Sandbox Code Playgroud)
这里的关键是xargs。
grep和等命令awk可以接受标准输入(STDIN) 作为参数,或使用管道作为参数。但是,其他命令(例如cp、echo和 )lsof忽略标准输入流,而仅依赖于命令后找到的参数。
使用该命令,xargs您可以从标准输入构建和执行命令行。
| 归档时间: |
|
| 查看次数: |
2950 次 |
| 最近记录: |