如何安装init.d脚本?


71

我正在尝试安装init.d脚本,以运行celery来安排任务。这是我遵循的步骤:

  • 复制文件celeryd并将其粘贴到文件夹/etc/init.d/中
  • 在文件夹/ etc / default /中创建了一个celeryd配置文件

现在,当我尝试由启动时sudo /etc/init.d/celeryd start,它会引发错误sudo: /etc/init.d/celeryd: command not found

我搜索了有关如何安装init.d的信息,我得到了这个SO问题

它说发出一个uname -a,当我得到这个时:

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

并且还说使用utils来像insserv这样尝试启用init.d脚本:

insserv /etc/init.d/celeryd 但它抛出错误 insserv: command not found

所以我试图安装insserv sudo apt-get install insserv。但它说aleady已安装:

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

那么如何安装init.d脚本呢?任何帮助将不胜感激。

更新1:

当我尝试:

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

它揭示了一些errors。可能就是为什么该服务无法启动。

更新2:

我在运行时清除了所有错误,$ sh -x /etc/init.d/celeryd start但仍然sudo /etc/init.d/celeryd start抛出command not found错误


我现在没有时间回答问题,但是,如果您希望在启动过程中运行它,那么我认为您必须在各个运行级别目录中添加指向脚本的链接,以便Linux可以为它处理启动和停止操作您。(/etc/rc[0-6].d)这个过程正逐渐被一个更新的方法所取代(我认为这叫做新贵。),但我根本没有研究过。您帖子中的链接解决了其中一些问题。

Answers:


55

您的celeryd脚本可能无法执行,这就是为什么sudo /etc/init.d/celeryd要返回command not found。因此,您需要首先使其可执行。

为此,请运行以下命令:

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

第一行将权限更改为-rwxr-xr-x,第二行确保文件的所有者和组所有者为root

一旦完成,我假设您将需要使用它sudo /etc/init.d/celeryd start来启动守护程序。


70

将脚本复制到位后,请不要忘记使其成为可执行文件并由root拥有:

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

安装后,您可以将其设置为在启动时自动启动,方法是:

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

指向的原因,这将被认为是最佳答案update-rc.d
MAChitgarha


1

这是在引导时自动启动守护程序的命令序列:

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
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.