我正在努力:
#!/bin/bash
if $(ps -C "bm_d21_debug")
then
kill $(ps -C "bm_d21_debug" -o pid=)
echo "exists"
fi
它返回:“PID:找不到命令”
不知道我做错了什么?
考虑这一行:
if $(ps -C "bm_d21_debug")
您ps在命令替换中执行命令,这将返回命令输出。然后该if命令尝试将该输出作为命令运行。
ps 输出的第一个单词是PID,if它将作为命令名称处理。因此,“找不到命令”错误。
你只想
if ps -C "bm_d21_debug" >/dev/null; then
echo running
else
echo NOT running
fi
我建议也使用方括号:
if [[ $(ps -C "bm_d21_debug") ]]
但是此命令将始终返回“是”($?= 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