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