如何在Upstart中只运行一次脚本?

我有一个在desktop-session-start上启动的脚本。 第一个在启动后以图形方式登录的人将调用此脚本。 我希望它被调用一次,而不是每次有人登录。如何让脚本只执行一次?

# one time script start on desktop-session-start stop on somebodystopme script ... end script 

使用post-start script部分而不是script部分。 它会将作业保留为started/running状态,并且不会重新运行。

 start on desktop-session-start task env FLAGFILE=/run/.my_script_has_run pre-start script if [ -e $FLAGFILE ]; then stop fi end script script ... touch $FLAGFILE end script 

这假设是Ubuntu 11.10或更高版本。 对早期版本使用/ var / run。 / run在每次重启后都会被清除,因此这将在下次启动时再次运行,但不会再次运行。 触摸声明后它会正常停止,所以不需要’停止’。