2013-02-08 61 views
1

我正在使用linux屏幕配置复杂的jenkins作业。要创建一个新的屏幕,我跑:Linux屏幕 - 只有当它存在时才会被杀死(jenkins作业)

screen -md -S jenkins_job 

然后去一些其他的工作,终于摧毁现有的屏幕,我跑:

screen -S jenkins_job -X quit 

但它可能在詹金斯发生脚本将某处失败插图中和立即放弃。然后屏幕终止命令将不会执行,屏幕将保持活动状态。所以在开始工作时我想确保所有屏幕都被破坏。如果我在不存在的作业上使用screen -S jenkins_job -X quit,那么shell将返回错误代码,并且jenkins脚本也会失败。

有没有办法有条件地销毁一个屏幕(即销毁屏幕,如果它存在,否则什么也不做)?

回答

3

你可能希望把终止代码为trap调用:

trap 'screen -S jenkins_job -X quit' QUIT TERM INT EXIT 
+0

我跑在作业开始时这个陷阱,以确保屏幕会不管破坏什么的整体詹金斯工作结果(QUIT或TERM - 成功或失败) - 是吗? – ducin 2013-02-08 12:05:06

+0

是的。在每个这些信号上,代码都会运行。 – 2013-02-08 12:07:21

+0

我忘记了,如果您还想处理正常终止,请添加'EXIT'信号 – 2013-02-08 12:11:53