How to install an init.d script?

I am trying to install an init.d script, to run celery for scheduling tasks. Here is the steps I followed:

  • copied the file celeryd and pasted it in folder /etc/init.d/
  • created a configuration file celeryd in folder /etc/default/

now when I tried to start it by sudo /etc/init.d/celeryd start, it throws error sudo: /etc/init.d/celeryd: command not found

I googled about how to install init.d, I got this SO-question.

it says to issue a uname -a and when I does I get this:

Linux capsonesystem8-desktop 3.2.0-43-generic-pae 
#68-Ubuntu SMP Wed May 15 03:55:10 UTC     
2013 i686 i686 i386 GNU/Linux

and also it says use utils like insserv to enable init.d script so tried:

insserv /etc/init.d/celeryd but it throws error insserv: command not found

so I tried to install insserv sudo apt-get install insserv. but it say aleady installed:

insserv is already the newest version.
0 upgraded, 0 newly installed, 0 to remove and 222 not upgraded.

So how to install init.d script?? Any help will be appreciated.

update1:

when I tried:

$ sh -x /etc/init.d/celeryd start

it reveal some errors. may be that is why the service won’t start.

update2:

I cleared all the errors when I run $ sh -x /etc/init.d/celeryd start but still sudo /etc/init.d/celeryd start throws command not found error


Solution 1:

When you copy the script into place, don't forget to make it executable and owned by root:

sudo chmod +x /etc/init.d/celeryd
sudo chown root:root /etc/init.d/celeryd

Once you have installed that, you can set it to start automatically on boot with:

sudo update-rc.d celeryd defaults
sudo update-rc.d celeryd enable

Solution 2:

Your celeryd script is probably not executable, that's why sudo /etc/init.d/celeryd is returning command not found. So, you need to first make it executable.

To do so, run the following commands:

sudo chmod 755 /etc/init.d/celeryd
sudo chown root:root /etc/init.d/celeryd

The first line changes the permissions to -rwxr-xr-x, and the second line ensures that the owner and group owner of the file is root.

Once this is done, I assume you will need to use sudo /etc/init.d/celeryd start to start the daemon.

Solution 3:

If you get the command not found error when you run insserv, you may fix it by running the following command:

sudo ln -s /usr/lib/insserv/insserv /sbin/insserv

Then see insserv -h or man insserv for help.

Also you can try with:

sudo update-rc.d celeryd defaults

Source: https://askubuntu.com/a/334043/147044

Solution 4:

This is command sequence to autostart your daemon at boot time:

sudo cd /etc/init.d
sudo chown root:root celeryd
sudo chmod 755 celeryd
sudo ln -s /usr/lib/insserv/insserv /sbin/insserv
sudo insserv celeryd