我使用基于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
看起来内核调度程序不会唤醒脚本进程。但任何想法,我应该在哪里寻找解决问题或问题可能在哪里。
感谢。
答案 0 :(得分:0)
我遇到了类似的问题。就我而言,问题是当调用K80networking时,仍有一个仍在使用网络堆栈的进程正在运行。直到关闭进入sendigs的sleep 5时,才会发生内核锁定。奇怪的是,在sendigs中用5次调用sleep 1替换sleep 5可以解决此问题。