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/Linuxand 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 startit 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
4 Answers
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/celerydOnce 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 1 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/celerydThe 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.
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/insservThen see insserv -h or man insserv for help.
Also you can try with:
sudo update-rc.d celeryd defaultsSource:
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