Every package that provides a standard daemon using upstart is required to provide a symlink in
/etc/init.d by Debian policy. So autocompletion for
sudo service name already works. Make sure that you have the
bash-completion package installed if you're having problems.
If you are creating your own upstart jobs, then symlink
/lib/init/upstart-job like the other upstart jobs are doing already. This will make your own jobs work the same way.
There are special upstart jobs in
/etc/init that do not have a corresponding entry in
/etc/init.d. These are an exception. From Debian Policy:
An exception to this rule is scripts or jobs provided by the init implementation itself; such jobs may be required for an implementation-specific equivalent of the /etc/rcS.d/ scripts and may not have a one-to-one correspondence with the init scripts.
These exceptions do not currently work with
bash-completion. However, you can use
reload directly without
service, and autocompletion will work. For example,
sudo start shut correctly autocompletes. But you shouldn't normally need to directly call upstart jobs that do not have a corresponding
Note: I tested this on Saucy. If support doesn't appear in an older release, perhaps it is not available there (but you'll get it soon when you upgrade to a sufficiently new release).