Как запустить сценарий один раз и только один раз в Upstart?

5

У меня есть скрипт, начинающийся с рабочего стола. Первый пользователь, который войдет в графический интерфейс после загрузки, будет иметь этот скрипт. Я хочу, чтобы он вызывался один раз, а не каждый раз, когда пользователь регистрируется. Как сделать скрипт только один раз?

# one time script

start on desktop-session-start
stop on somebodystopme

script
...
end script
    
задан bambuntu 23.02.2012 в 15:34
источник

2 ответа

5

Используйте раздел post-start script вместо раздела script . Он оставит это задание как started/running и не будет повторно запущен.

    
ответ дан Tuminoid 29.02.2012 в 09:49
источник
1
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 очищается после каждой перезагрузки, так что это будет запущено снова при следующей загрузке, но никогда больше. Он будет нормально останавливаться после инструкции касания, поэтому нет необходимости «останавливаться».

    
ответ дан SpamapS 28.02.2012 в 00:32