Run upstart job exclusively or before upstart process

James Hunt james.hunt at
Thu May 10 22:58:20 UTC 2012

On 10/05/12 17:24, Rogerio Vinhal Nunes wrote:
> I'm already doing the start on starting mountall, but while the job is copying the directory some
> other jobs are processing. I don't know why, but when I do that the system simply stops (possibly
> triggers a deadlock) and after 2 minutes it says that the task modprobe is not responding for 120
> seconds.
> I figured that this task might be the module-init-tools, so I did:
> start on (starting mountall or starting module-init-tools)
> With that the system stops locking, but strangely my job runs twice. Is that expected?

The way to have your job start before *any* other is to use 'and' and specify all the jobs that
'start on startup'. To determine that list of jobs:

initctl show-config -e|egrep -v "\<emits\>"|grep -B1 "  start on startup"|egrep -v "(start on|^--)"

However it might be easier and simpler to start your system with Upstart by adding the following to
the kernel command-line:


...and then having your job do:

  start on foo
  emits startup

    # copy /var here.
  end script

  post-stop script
    # kick off the rest of the system
    initctl emit startup
  end script

This is in fact essentially what friendly-recovery does in recent versions on Ubuntu.


Kind regards,

James Hunt

More information about the upstart-devel mailing list