为了在我的嵌入式Linux系统中停止活动,我有以下shell脚本(由busybox解释):
#!/bin/sh
pkill usefulp_program
swapoff /home/.swapfile
umount -l /home
sleep 3 # While I can't find a way to sync, sleep
如果我取消sleep
行,脚本会立即返回,而不等待umount
(这是懒惰的,因为某些原因它拒绝卸载)。你知道如何在完成脚本之前等待所有三个操作完成吗?诉诸任意sleep
并不是一个好的解决方案。
此外,任何关于为什么我umount
没有-l
的原因的提示?
答案 0 :(得分:0)
您需要等待已终止的已终止进程。根据你的评论......
wait <pid>
......不起作用!所以,可以循环ala:
while ps -p <pid> > /dev/null; do sleep 1; done
在执行swapoff和umount之前等待被终止的进程终止。
答案 1 :(得分:0)
正如其他人已经提到过的那样,当进程终止时,你应该只有-l
。一个选项,如果它需要很长/它只是忽略你礼貌的请求停止自己使用不同的信号。 kill / killall / pkill命令的选项为-9
,以发送SIGKILL而不是SIGTERM。如果您不想在第一次尝试时使用锤子,则可以执行类似
pkill your_programm
sleep 10
pkill -9 your_programm