linux - 如何在不杀死当前执行行的情况下杀死shell脚本

标签 linux bash shell

我正在运行一个 shell 脚本,类似于 bash 中的 sh script.sh。该脚本包含许多行,其中一些需要几秒钟,而另一些需要几天才能执行。如何终止 sh 命令但不终止其当前正在运行的命令(脚本的当前行)?

最佳答案

您没有具体指定“终止”脚本时应该发生什么,但我假设您希望当前正在执行的行完成并退出,然后再做任何工作。

这可能最好的实现方式是将脚本编码为能够接收这样的 kill 命令并以适当的方式响应 - 我认为在 linux 中没有任何魔法可以做到这一点。

例如:

  • 你可以捕获一个信号然后设置一个变量
  • 检查文件是否存在(例如touch/var/tmp/trigger)

然后在脚本的每一行之后,您需要检查是否每个陷阱都已被调用(或您的触发器文件已创建),然后退出。如果尚未设置触发器,则继续进行下一项工作。

据我所知,您无法捕获 SIGKILL (-9) - 如果有人将其发送到您的进程,那么它就会死掉。

HTH,王牌

关于linux - 如何在不杀死当前执行行的情况下杀死shell脚本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32749016/

相关文章:

c++ - 将 C++ 绑定(bind)与 GObject Introspection 结合使用

bash - 转换行结尾

linux - 在 archlinux shell 中导出环境

bash - Bash脚本中的Sudo SU无需询问用户密码

linux - 修复 awk 命令中数据与本地不匹配的问题

linux - 在 x86_64 redhat 6.2 上安装 32 位库

linux - 在 linux 内核的上下文中,硬件 "gates"是什么?

bash - 在 for 循环中嵌套 if

BASH,目录更新时自动运行脚本?

c - 如何将 zenity -entry 的输出分配给 C 语言变量?