KSH - Linux - ps -ef - 返回代码与找到的进程数

时间:2017-12-06 14:12:52

标签: linux shell ksh

关于* nix ps -ef命令。我们在较旧的AIX上有许多shell脚本,它们使用ps -ef命令搜索并查看特定进程“name”当前是否正在运行。我看到它的典型用法:

ps -ef  | grep java | grep RUDaemon | grep -v grep
rc=$?

if (( rc > 0 ))
then
    ...do process-exists stuff...
else
    ...do process-does-not-exists stuff...
fi

事情是,代码似乎不适用于我们较新的Linux ...即,rc现在似乎返回命令本身的简单“状态”结果,而不是它找到的进程数。 ..由于我没有写原始脚本,我不确定原始代码EVER是否正常工作。但是要求声明我们需要使用native * nix命令,因此我按照以下方式重新编写代码,并针对“存在”和“不存在”条件进行测试。

rc=$(ps -ef | grep java | grep RUDaemon | grep -v grep | wc -l)

if (( rc > 0 ))
then
    ...do process-exists stuff...
else
    ...do process-does-not-exists stuff...
fi

我的问题是,ps -ef的正确用法是什么来发现使用特定名称或部分名称运行的进程数?

tia,Adym

1 个答案:

答案 0 :(得分:0)

因为您不仅要发现...运行具有特定名称的进程,而且还具有特定的参数,所以显示的是基本用法。但可以优化:

ps -ef | grep java | grep RUDaemon | grep -v grep

可以替换为

ps -fCjava | grep RUDaemon

如果确实需要在参数中使用java的{​​{1}}进程。