Bash - 使用终端GUI“关闭”终止脚本时执行清理代码

时间:2015-03-18 16:44:05

标签: macos bash terminal

我甚至不确定有没有办法做到这一点,因为我一整天都在搜索,似乎我必须trap SIGKILL(我知道不能被{{{{1}抓住1}})但......

使用SIGTERM和SIGINT,当我按下Ctrl + C时,我的当前脚本执行清理操作以恢复对硬盘等的临时更改。这非常有效。但是,如果我关闭终端窗口(通过单击红色交通灯),我会被问到是否要终止当前正在运行的进程,但是单击“关闭”似乎并没有实际终止脚本。我可以告诉你,因为日志文件不断更新信息,脚本的其他部分仍在运行。

所以我的问题是,关闭GUI窗口时会向脚本发送什么信号,如果有的话?如果没有,或者无法捕获,如果GUI关闭或者在下次运行时终止上一个脚本,我怎样才能避免脚本运行?

1 个答案:

答案 0 :(得分:0)

捕获脚本终止的常用方法是在那里使用保留字EXIT。如:

trap "echo bye" EXIT

(但我没有OSX来测试具体案例)