我将陷阱放置在if中,运行脚本,在第二次执行之后,它会警告锁文件被保存(ok)。但是,当我kill -9运行的PID时,锁文件不会被删除。
当我在if之前移动陷阱时(您现在可以看到下面的注释):
如何在if中获取陷阱以删除脚本的kill -9上的锁文件?
lockfile=/tmp/localfile
#trap 'rm -f "$lockfile"; exit $?' INT TERM EXIT KILL
if ( set -o noclobber; echo "$" > "$lockfile") 2> /dev/null;
then
trap 'rm -f "$lockfile"; exit $?' INT TERM EXIT KILL
while true
do
ls -ld ${lockfile}
sleep 1
done
rm -f "$lockfile"
trap - INT TERM EXIT
else
echo "Failed to acquire lockfile: $lockfile."
echo "Held by $(cat $lockfile)"
fi发布于 2018-03-22 11:01:06
kill -KILL (或kill -9)杀死进程,却不能清除它。SIGKILL信号在设计上是不可捕获的.
使用普通的kill (默认情况下发送TERM )。
https://unix.stackexchange.com/questions/432795
复制相似问题