71

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

  • I don't have time for an answer now, but, if you want this to run as part of your startup, then I think you have to add links to your script in the various runlevel directories so Linux will handle starting and stopping it for you. (/etc/rc[0-6].d) This process is gradually being replaced by a newer method (I think it's called upstart.), but I haven't looked into that at all. The link in your post addresses some of this. – Joe Aug 21 '13 at 19:59
55

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.

70

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
  • This would be considered as the best answer, cause of pointing to update-rc.d. – MAChitgarha Aug 10 '18 at 13:11
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

1

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

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.