【发布时间】:2018-03-01 00:48:31
【问题描述】:
为什么当我在 Makefile 中使用 pgrep 时,它会找到一个进程 ID,但在 shell 中运行时却找不到?例如,假设我有这个 makefile
SHELL = /bin/bash
tst:
if pgrep -f askdfkasdfj ; then \
kill $$(pgrep -f askdfkasdfj); \
fi
当我运行make tst 时,它会找到一个进程并进入if 主体,即使没有名为“askdfkasdfj”的进程。我试图用pgrep 替换在这种情况下工作正常的ps aux | grep ... 并遇到了这个问题。
【问题讨论】:
-
仅供参考,如果你有
pgrep,你可能也有pkill。 -
是的,好点 :)
-
你在做类似
make askdfkasdfj的事情吗?然后pgrep会找到make命令。 -
不,我只是在运行
make tst。在 make 退出后,放在 stdout 上的进程 ID 似乎也不存在 -
@Barmar 你所说的让我觉得 make 启动了一个进程,其中包含整个命令作为其名称的一部分?
标签: bash makefile process grep