Linux kernel SysV Init killall5在睡眠5后不会醒来

Linux kernel SysV Init killall5在睡眠5后不会醒来,linux-kernel,sleep,yocto,Linux Kernel,Sleep,Yocto,我已经使用基于Poky的Yocto创建了一个定制的嵌入式Linux发行版。我正在使用SysVInit实用程序。当我们重新启动系统并调用所有rc6脚本时。最后几乎调用了/etc/init.d/sendsigs脚本。此脚本首先向所有正在运行的进程发送SIGTERM信号并休眠5秒,然后向所有剩余进程发送SIGKILL信号。我看到的问题是,当我重新启动系统时,脚本发送SIGTERM信号并休眠5秒,但在休眠后不会醒来,因此它不会发送SIGTERM并挂起系统,导致系统无法重新启动。下面是/etc/init.

我已经使用基于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
看起来内核调度器没有唤醒脚本进程。但是我应该在哪里解决问题,或者问题可能在哪里


谢谢。

我遇到了类似的问题。在我的例子中,问题是当调用K80networking时,有一个进程仍在运行,它使用了网络堆栈。直到关机进入sendsigs中的休眠5,内核锁定才会发生。奇怪的是,用sendsigs中调用五次的sleep 1替换sleep 5解决了这个问题。

您是否找到了这个错误的原因以及如何修复它?