如何唤醒休眠进程?

如何唤醒休眠进程?

Shell 脚本将两个函数作为子进程运行(通过 &)。
他们俩都进入了睡眠状态(通过 sleep 命令)。

可以叫醒他们吗?

我有他们的pid。

PS

我不想用 & 运行 sleep 并等待

答案1

一种相当野蛮的方法是终止sleep进程(而不是终止脚本/函数运行的整个子 shell)。考虑以下 shell 脚本:

#!/bin/bash
sleep 20
echo "Done!"

或者,使用一个函数:

#!/bin/bash

function gotosleep()
{
    sleep 20
    echo "Done!"
}

gotosleep &
sleep 60 # Not really necessary, keeps the script in foreground.

然后,找到sleep进程:

$ ps -ef | grep sleep
you    PID    PGID  ... sleep 20

并杀死它:

$ kill PID

然后您的脚本将输出(至少在bash):

./script.sh: line 2: PID Terminated    sleep 20
Done!

既然你不想wait这样做,那么你就必须处理 Bash 的小消息。如果你改变主意,请看一下这个问题:

sleep 20 &
if wait $! 2>/dev/null; then
    # Keep working
    continue
else
    echo "Done!"
    return # from function
fi

相关内容