我使用基于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
看起来内核调度程序没有唤醒脚本进程。但是,我应该在哪里解决这个问题,或者问题可能在哪里。
谢谢。
发布于 2020-03-27 23:33:49
我遇到了类似的问题。在我的例子中,问题是当调用K80networking时,仍有一个进程在运行,该进程使用网络堆栈。内核锁定不会发生,直到sendsigs中的关机进入休眠状态。奇怪的是,在sendsigs中用调用了5次的睡眠1替换了睡眠5,解决了这个问题。
https://stackoverflow.com/questions/28672044
复制相似问题