Bash : 检查 PID 是否存在以及进一步的逻辑
Bash : Check if PID exists with further logic
问题:如何检查 PID 是否存在并在 bash 的 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
How do you check if a PID exists and use the result within an if statement?
您可以在变量中捕获输出,然后检查退出状态:
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
你的主机是什么OS?
如果你有 /proc 那么这可能对你有用:
if [ -d "/proc/$pid" ]; then
echo "Running"
else
echo "Not running"
fi
通过传递要检查的 pid 使其动态化:
#!/usr/local/bin/bash
if ps -p > /dev/null;
then
echo "running"
else
echo "not running"
fi
示例运行:
问题:如何检查 PID 是否存在并在 bash 的 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
How do you check if a PID exists and use the result within an if statement?
您可以在变量中捕获输出,然后检查退出状态:
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
你的主机是什么OS?
如果你有 /proc 那么这可能对你有用:
if [ -d "/proc/$pid" ]; then
echo "Running"
else
echo "Not running"
fi
通过传递要检查的 pid 使其动态化:
#!/usr/local/bin/bash
if ps -p > /dev/null;
then
echo "running"
else
echo "not running"
fi
示例运行: