Bash:通过进一步的逻辑检查PID是否存在
问题:如何检查PID是否存在,并在bash中的if语句中使用结果 我尝试过的事情Bash:通过进一步的逻辑检查PID是否存在,bash,if-statement,centos,pid,Bash,If Statement,Centos,Pid,问题:如何检查PID是否存在,并在bash中的if语句中使用结果 我尝试过的事情 if [ "$(ps -p $pid)" -eq 0 ]; then echo "Running" else echo "Not Running" fi 无论我如何重定向STDOUT/STDER,这两个都不能正确计算 如何检查PID是否存在并在if语句中使用结果 您可以在变量中捕获输出,然后检查退出状态: output=$(ps -p "$pid") if [ "$?" -eq 0 ]; then e
if [ "$(ps -p $pid)" -eq 0 ]; then
echo "Running"
else
echo "Not Running"
fi
无论我如何重定向STDOUT/STDER,这两个都不能正确计算 如何检查PID是否存在并在if语句中使用结果 您可以在变量中捕获输出,然后检查退出状态:
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
通过传递要检查的pid使其动态:
#!/usr/local/bin/bash
if ps -p $1 > /dev/null;
then
echo "running"
else
echo "not running"
fi
示例运行:
目标Centos 6.5-6.7
#!/usr/local/bin/bash
if ps -p $1 > /dev/null;
then
echo "running"
else
echo "not running"
fi