为了在我的嵌入式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
看起来不像是一个好的解决方案。
另外,有没有提示为什么我不能没有-l
的umount
?
您需要等待被终止的进程终止。根据你的评论…
wait <pid>
…不工作!因此,可以循环ala:
while ps -p <pid> > /dev/null; do sleep 1; done
正如其他人已经提到的,您应该并且只在进程终止时使用-l
。一个选择,如果它花了很长时间,或者它只是无视你礼貌的停止请求,它会使用不同的信号。选项将是-9
到kill/killall/pkill命令发送SIGKILL而不是SIGTERM。如果你不想在第一次尝试时使用锤子,你可以这样做
pkill your_programm
sleep 10
pkill -9 your_programm