0

我正在努力:

#!/bin/bash
if $(ps -C "bm_d21_debug")
then
    kill $(ps -C "bm_d21_debug" -o pid=)
    echo "exists"
fi

它返回:“PID:找不到命令”

不知道我做错了什么?

4

3 回答 3

3

考虑这一行:

if $(ps -C "bm_d21_debug")

ps在命令替换中执行命令,这将返回命令输出。然后该if命令尝试将该输出作为命令运行。

ps 输出的第一个单词是PIDif它将作为命令名称处理。因此,“找不到命令”错误。

你只想

if ps -C "bm_d21_debug" >/dev/null; then
    echo running
else
    echo NOT running
fi
于 2019-02-23T20:54:17.963 回答
0

我建议也使用方括号:

if [[ $(ps -C "bm_d21_debug") ]]

但是此命令将始终返回“是”($?= 0)

于 2019-02-23T20:32:19.837 回答
0

通过更改为修复

if ps aux | grep ./bm_d21_debug | grep -v grep >/dev/null;then
    pid=$(ps aux | grep ./bm_d21_debug | grep -v grep | awk '{print $2}')
    kill $pid
    echo $pid
fi
于 2019-02-23T20:48:19.047 回答