如何安装 init.d 脚本?

suh*_*lvs 81 startup init

我正在尝试安装一个 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-question

它说要发出一个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
Run Code Online (Sandbox Code Playgroud)

它还说使用 utils like insservto enable init.d script 所以试过:

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.
Run Code Online (Sandbox Code Playgroud)

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

更新1:

当我尝试:

$ sh -x /etc/init.d/celeryd start
Run Code Online (Sandbox Code Playgroud)

它揭示了一些errors。可能这就是服务无法启动的原因。

更新2:

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

Dav*_*due 82

当您将脚本复制到位时,不要忘记使其可执行并由 root 拥有:

sudo chmod +x /etc/init.d/celeryd
sudo chown root:root /etc/init.d/celeryd
Run Code Online (Sandbox Code Playgroud)

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

sudo update-rc.d celeryd defaults
sudo update-rc.d celeryd enable
Run Code Online (Sandbox Code Playgroud)

  • 这将被视为最佳答案,这是指向“update-rc.d”的原因。 (2认同)

Ala*_*Ali 57

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

为此,请运行以下命令:

sudo chmod 755 /etc/init.d/celeryd
sudo chown root:root /etc/init.d/celeryd
Run Code Online (Sandbox Code Playgroud)

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

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