2013-03-29 145 views
0

在我的脚本中,我正在执行cat,然后试图grep获取进程ID。通过Perl脚本获取进程ID

我用这个:

ps | grep -e \'cat$\' | cut -d\' \' -f2 | head -n 1 

但它不返回任何东西。

+0

你是如何执行'cat'?获取PID的方式可能比列出过程更直接。 – Joni

+0

这两个命令是按顺序运行的吗?如果你正在执行cat,等待它完成,然后使用ps,那么将不会有PID查找。 – chooban

+0

尝试:ps | grep -e'cat $'|剪下-d''-f2 |头-n 1。提示:逐步检查你的管道链,看看结果是否如你所期望的那样。 – katastrophos

回答

1

当您使用program &在shell中启动后台进程时,您可以通过$!访问子进程的PID。

例如:

bash-4.2.37$ cat & 
[1] 9664 
bash-4.2.37$ CAT_PID=$! 
...time passes... 
bash-4.2.37$ echo $CAT_PID 
9664 
+0

这会失败,如果用户之间运行另一个B/G进程? – anishsane

+0

诀窍是将pid存储在某处,以便稍后使用它。 – Joni

+0

^^嗯...应该做.. – anishsane