如果我在终端中运行一个脚本,并且该脚本包含一个后台作业,那么当用户关闭终端时(我猜想该脚本及其所有后台任务都将终止),我想要一些类似事件的东西,例如当作业即将被终止或终止时,执行一些代码块,例如:
while sleep 3h
do
backGround job commands
done
those above is the back ground job
我希望当我已经在终端上按下退出键时,在后台运行脚本,并且当这个作业即将完成并被终止时,在终止整个脚本之前执行一些其他命令,例如 C# 中的事件,当发生某些事情时,执行一段代码,我希望这次我能解释清楚
提前致谢 :)
答案1
每当收到 SIGINT、SIGTERM、SIGHUP 时,以下脚本都会将 Caught 附加到 Test.Out 文件中
#!/bin/bash
trap "echo 'Caught' >> Test.Out" SIGINT SIGTERM SIGHUP
while :
do
sleep 1000
done
我喜欢信号最多。每当终端关闭时,它将被发送到 shell 脚本。
但我们无法逃脱KILL信号。:(http://en.wikipedia.org/wiki/SIGKILL#SIGKILL
编辑:有关 SIGHUP 的更多信息:http://www.gnu.org/software/libc/manual/html_node/Termination-Signals.html#index-hangup-signal-2859
编辑:带有 Test.Out 文件生成的视频http://www.youtube.com/watch?v=qP0zClZZZHc
答案2
答案3
你可能想要at
命令:
at 3 hours <<END
backGround job commands
END