睡眠5后SysV Init killall5不会醒来

时间:2015-02-23 10:52:16

标签: linux-kernel sleep yocto

我使用基于Poky的Yocto创建了一个自定义嵌入式Linux发行版。我正在使用SysVInit实用程序。当我们重新启动系统并调用所有rc6脚本时。几乎在最后调用/etc/init.d/sendsigs脚本。此脚本首先将SIGTERM信号发送到所有正在运行的进程并休眠5秒钟,然后将SIGKILL信号发送到所有剩余进程。我看到的问题是当我重新启动系统时,脚本发送SIGTERM信号并休眠5秒但在睡眠后没有唤醒,因此它不会发送SIGTERM并挂起系统导致系统无法重启。以下是/etc/init.d/sendsigs脚本

echo "Sending TERM signal..."
killall5 -15
sleep 5     # Does not wakeup after sleep.
echo "Sending KILL signal..."
killall5 -9

看起来内核调度程序不会唤醒脚本进程。但任何想法,我应该在哪里寻找解决问题或问题可能在哪里。

感谢。

1 个答案:

答案 0 :(得分:0)

我遇到了类似的问题。就我而言,问题是当调用K80networking时,仍有一个仍在使用网络堆栈的进程正在运行。直到关闭进入sendigs的sleep 5时,才会发生内核锁定。奇怪的是,在sendigs中用5次调用sleep 1替换sleep 5可以解决此问题。