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

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

我有一个在桌面会话启动时启动的脚本。启动后第一个以图形方式登录的人将调用此脚本。我希望它只调用一次,而不是每次有人登录时都调用。如何让脚本只执行一次?

# one time script

start on desktop-session-start
stop on somebodystopme

script
...
end script

答案1

使用post-start scriptsection 而不是scriptsection。它将使作业保持started/running状态,并且不会重新运行。

答案2

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,因此下次启动时会再次运行,但不会再运行。它会在 touch 语句后正常停止,因此不需要“stop on”。

相关内容