我试图通过 sleep
命令在正在休眠的 bash 脚本中捕获 SIGUSR1
信号:
#!/bin/bash
trap 'echo "Caught SIGUSR1"' SIGUSR1
echo "Sleeping. Pid=$$"
while :
do
sleep 10
echo "Sleep over"
done
信号陷阱有效,但在 sleep 10
完成之前不会显示正在回显的消息。
看来 bash 信号处理会等到当前命令完成后再处理信号。
有没有办法让它在收到信号后立即中断正在运行的 sleep
命令,就像 C 程序中断 libc sleep()
一样功能?
最佳答案
#!/bin/bash
trap 'echo "Caught SIGUSR1"' SIGUSR1
echo "Sleeping. Pid=$$"
while :
do
sleep 10 &
wait $!
echo "Sleep over"
done
关于bash - 使用信号陷阱中断 bash 中的 sleep ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27694818/