Have a service start on startup with Ubuntu

22,803

Solution 1

You can start the service manually by using

sudo start avahi-daemon

and not using

sudo avahi-daemon start

If you want it so the service starts at boot. You need to have a look at adding a symlink to /etc/rc2.d/ to point at /etc/init.d/avahi-daemon. It is probably easier to read up on the programs sysv-rc-conf or update-rc.d

For mounting a disk you need to edit /etc/fstab with the correct details. You need to know the device you are trying to mount (eg /dev/sdb1), the mount point (eg /mnt/data)and the filesystem.

The entry in fstab will look something like this:

/dev/sdb1    /mnt/data    ext3    defaults    0    2

Solution 2

If avahi-daemon is in /etc/init.d and you want to have it started at each boot, just add it to the startup scripts with:

sudo update-rc.d avahi-daemon defaults

But i'm surprised that avahi-daemon is not still linked in the required runlevels as it was probably added by the system.

To have your disk mounted at boot, add a line in your fstab like suggested by Richard.

Solution 3

I had a problem getting avahi-daemon to start on system startup in Ubuntu Server 12.04 even after doing sudo update-rc.d avahi-daemon defaults and I've solved it by changing AVAHI_DAEMON_DETECT_LOCAL from 1 to 0 in /etc/default/avahi-daemon (as proposed here).

My understanding of the problem is that avahi-daemon started before my server was ready for networking. It tried to detect "unicast dns servers", obviously failed and exited afterwards. This is the default behavior. By changing AVAHI_DAEMON_DETECT_LOCAL to 0, I told avahi-daemon not to look for these servers when it starts.

I've also figured that I did really not need to run sudo update-rc.d avahi-daemon defaults, so user MatToufoutu was right to doubt.

Share:
22,803
jeff-h
Author by

jeff-h

Updated on September 17, 2022

Comments

  • jeff-h
    jeff-h almost 2 years

    I'm not clear on how to start a service when the server boots, I read on some of the other questions asked about adding the script to /etc/init.d, but It's just one line that I need to execute in the commandline:

    sudo /etc/init.d/avahi-daemon restart
    

    But I have a few issues with this, firstly, I apparently need to use sudo, and it gives me the following:

    ngl-server-01:~% sudo /etc/init.d/avahi-daemon start  
    Rather than invoking init scripts through /etc/init.d, use the service(8)
    utility, e.g. service avahi-daemon start
    
    Since the script you are attempting to invoke has been converted to an
    Upstart job, you may also use the start(8) utility, e.g. start avahi-daemon
    

    But when I try just avahi-daemon start I get:

    Too many arguments
    

    Why is this? and how would you start this service?

    Update

    Similarly, how can I mount a disk on boot as well?

  • jeff-h
    jeff-h over 14 years
    Hmm, this seems to be exactly what I need to do, the issue is that I don't know what to set as the mount point for the disk, when It is mounted it says it's mounted at /media/ca4a8c50-2d0a-4c38-a6c5-c0494d0533a2, and that number changes everytime it gets mounted. Also I need to have it mounted before the Avahi service starts so it can broadcast that the disk is available.
  • Richard Holloway
    Richard Holloway over 14 years
    Disks will get mounted before services are started. With regards to where you mount the drive it is up to you. Don't worry about the long number for what you are trying to do. Add the entry to /etc/fstab and try it. Post back if you get stuck or get further problems.
  • Tzunghsing David Wong
    Tzunghsing David Wong about 5 years
    +1 The answer (changing AVAHI_DAEMON_DETECT_LOCAL) solved my problem with Raspberry Pi Zero W. The raspberry was running Raspbian GNU/Linux 9.4 (stretch) with avahi-daemon 0.6.32-2