问题:如何在bash中检查PID是否存在并在IF语句中使用结果?
我尝试过的方法:
if [ "$(ps -p $pid)" -eq 0 ]; then
echo "Running"
else
echo "Not Running"
fi
if [ "$(kill -0 $pid)" -eq 0 ]; then
echo "Running"
else
echo "Not Running"
fi
无论如何我重定向STDOUT / STDER,这两者都不能正确评估。
问题:如何在bash中检查PID是否存在并在IF语句中使用结果?
我尝试过的方法:
if [ "$(ps -p $pid)" -eq 0 ]; then
echo "Running"
else
echo "Not Running"
fi
if [ "$(kill -0 $pid)" -eq 0 ]; then
echo "Running"
else
echo "Not Running"
fi
output=$(ps -p "$pid")
if [ "$?" -eq 0 ]; then
echo "Found"
echo "$output"
fi
$?
会在每次运行命令时重置,因此以下内容不起作用:output=$(ps -p "$pid")
echo "$output"
# Now $? will be refering to the exit status of echo
if [ "$?" -eq 0 ]; then
echo "Found"
fi
在if语句中,也可以将所有内容粘在一起:
if output=$(ps -p "$pid")
then
echo "Found: $output"
fi
您的主机操作系统是什么?
如果您有/proc,那么这可能对您有用:
if [ -d "/proc/$pid" ]; then
echo "Running"
else
echo "Not running"
fi