首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >当陷阱位于"if“内时,锁文件未被删除。

当陷阱位于"if“内时,锁文件未被删除。
EN

Unix & Linux用户
提问于 2018-03-22 10:57:35
回答 1查看 1.3K关注 0票数 1

我将陷阱放置在if中,运行脚本,在第二次执行之后,它会警告锁文件被保存(ok)。但是,当我kill -9运行的PID时,锁文件不会被删除。

当我在if之前移动陷阱时(您现在可以看到下面的注释):

  1. 然后,当我杀死-9 PID,锁文件被删除(好)
  2. 但是当我运行额外的执行脚本时,只有第一个脚本会发出警告,因为在这第一次额外的运行之后,锁文件在退出时就被陷阱删除了!

如何在if中获取陷阱以删除脚本的kill -9上的锁文件?

代码语言:javascript
复制
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
EN

回答 1

Unix & Linux用户

发布于 2018-03-22 11:01:06

kill -KILL (或kill -9)杀死进程,却不能清除它。SIGKILL信号在设计上是不可捕获的.

使用普通的kill (默认情况下发送TERM )。

另见:我为什么不使用“杀死-9”/“SIGKILL”

票数 0
EN
页面原文内容由Unix & Linux提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://unix.stackexchange.com/questions/432795

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档