【发布时间】:2018-03-18 04:21:39
【问题描述】:
我想在 shell 中通过 ps 列出一个进程及其信息。 这是我的脚本:
#!/bin/sh
for line in `ps aux| grep test.py`
do
echo $line
done
但是输出是:
hey
13241
0.0
0.3
48388
13528
pts/18
S+
18:50
0:00
python
test.py
hey
13370
0.0
0.0
14504
1016
pts/21
S+
19:00
0:00
grep
test.py
它将一行分成很多部分,但我希望我可以在终端中获得有关名称为 test.py 的进程的一行信息:
hey 13241 0.0 0.3 48388 13528 pts/18 S+ 18:50 0:00 python test.py
hey 13446 0.0 0.0 14504 976 pts/21 S+ 19:08 0:00 grep --color=auto test.py
如何解决
【问题讨论】:
-
这不是
ps特有的——关于如何逐行迭代来自其他来源的输入的答案都是有效的。 -
(也就是说,一般来说,如果可以避免的话,您不应该在脚本中使用来自
ps的输出。对于大多数用途,pgrep更合适,或者使用这样的方法作为建议锁定,根本不需要读取进程表来检查程序是否正在运行)。