问题描述
我正在尝试安装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
并且它说使用像insserv
这样的utils来启用init.d脚本如此尝试:
insserv /etc/init.d/celeryd
但它会抛出错误insserv: command not found
所以我试着安装insserv sudo apt-get install insserv
。但它说安装了:
insserv is already the newest version.
0 upgraded, 0 newly installed, 0 to remove and 222 not upgraded.
那么如何安装init.d脚本?任何帮助将不胜感激。
UPDATE1:
我试过的时候:
$ sh -x /etc/init.d/celeryd start
它揭示了一些errors
。可能这就是服务无法启动的原因。
UPDATE2:
我运行$ sh -x /etc/init.d/celeryd start
时清除了所有错误,但仍然sudo /etc/init.d/celeryd start
抛出command not found
错误
最佳解决思路
您的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
来启动守护程序。
次佳解决思路
将脚本复制到位时,不要忘记将其设为可执行文件并由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
第三种解决思路
如果在运行insserv
时出现command not found
错误,可以通过运行以下命令来修复它:
sudo ln -s /usr/lib/insserv/insserv /sbin/insserv
然后查看insserv -h
或man insserv
以获取帮助。
您也可以尝试:
sudo update-rc.d celeryd defaults
资料来源:https://askubuntu.com/a/334043/147044