shell脚本 判断某一进程是否结束
时间: 2023-07-07 18:18:07 浏览: 308
可以使用 `ps` 命令结合 `grep` 命令来判断某一进程是否结束。具体操作如下:
首先,使用 `ps` 命令查找某一进程的 PID:
``` shell
pid=$(ps -ef | grep "进程名称" | grep -v grep | awk '{print $2}')
```
其中,将 "进程名称" 替换为你要查找的进程名。
然后,判断 PID 是否存在,如果存在说明进程还在运行,否则进程已经结束:
``` shell
if [ -n "$pid" ]; then
echo "进程正在运行,PID 为 $pid"
else
echo "进程已经结束"
fi
```
完整的 shell 脚本如下:
``` shell
#!/bin/bash
pid=$(ps -ef | grep "进程名称" | grep -v grep | awk '{print $2}')
if [ -n "$pid" ]; then
echo "进程正在运行,PID 为 $pid"
else
echo "进程已经结束"
fi
```
需要注意的是,此方法只适用于单个进程的情况。如果要判断多个进程,可以将上述脚本放入循环中,对每个进程进行判断。
相关问题
shell脚本 循环等待一段时间判断某进程是否结束
你可以使用 `while` 循环结合 `ps` 命令来实现这个功能。
示例代码如下:
```shell
#!/bin/bash
# 设置等待时间
WAIT_TIME=60
# 设置要等待的进程名
PROCESS_NAME="your_process_name"
# 循环等待
while true; do
# 检查进程是否存在
if ! ps aux | grep -v grep | grep "$PROCESS_NAME" > /dev/null; then
echo "进程已结束"
break
fi
# 等待一段时间
sleep $WAIT_TIME
done
```
在上面的代码中,我们首先设置了要等待的时间和要等待的进程名。然后我们使用一个 `while` 循环来不断检查进程是否存在。如果进程不存在了,就打印一条消息并退出循环。否则,我们就等待一段时间再检查。
shell脚本 循环等待一段时间判断某进程是否结束,超时就结束进程
可以使用shell脚本中的while循环和sleep命令来实现等待一段时间并判断某进程是否结束,超时就结束进程的功能。示例代码如下:
```
#!/bin/bash
# 定义等待时间和超时时间
WAIT_TIME=5
TIMEOUT=60
# 启动进程
your_process &
# 获取进程PID
PID=$!
# 循环等待进程结束或超时
TIME=0
while ps -p $PID > /dev/null && [ $TIME -lt $TIMEOUT ]
do
sleep $WAIT_TIME
TIME=$(($TIME+$WAIT_TIME))
done
# 判断进程是否还在运行
if ps -p $PID > /dev/null
then
# 超时,结束进程
kill $PID
echo "Process timeout and killed."
else
# 进程已结束
echo "Process finished."
fi
```
在以上代码中,我们首先定义了等待时间(WAIT_TIME)和超时时间(TIMEOUT)。然后启动要监控的进程,并获取其PID。接着进入循环,每次循环等待WAIT_TIME秒,并将时间累加到TIME变量中。在每次循环中,使用ps命令检查进程是否还在运行,如果进程已结束则跳出循环,否则继续等待。当时间累计超过超时时间时,判断进程是否还在运行,如果还在运行则使用kill命令结束进程,并输出提示信息。如果进程已结束,则直接输出提示信息。
阅读全文