首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >无法向init.d添加脚本

无法向init.d添加脚本
EN

Unix & Linux用户
提问于 2013-09-19 18:07:28
回答 3查看 4.2K关注 0票数 2

我已经在远程的ubuntu服务器上安装了gerrit。现在,我希望它在服务器重新启动时自动启动。我正试着遵循这一点:

http://gerrit-documentation.googlecode.com/svn/Documentation/2.3/install.html#rc_D

这是一个两条线:

代码语言:javascript
复制
sudo ln -snf `pwd`/home/gerrit2/gerrit_application/bin/gerrit.sh /etc/init.d/gerrit.sh
sudo ln -snf ../init.d/gerrit.sh /etc/rc3.d/S90gerrit

我已经验证了这两个文件都是创建的。但是当我重新启动应用程序时,它没有启动。我仍然需要手动启动它:

代码语言:javascript
复制
root@mm11:/home/gerrit2/gerrit_application/bin# ./gerrit.sh start

我如何调试/修复这个问题?

我也曾尝试过:

代码语言:javascript
复制
sudo ln -snf /home/gerrit2/gerrit_application/bin/gerrit.sh /etc/init.d/gerrit
sudo update-rc.d gerrit defaults

这意味着:

代码语言:javascript
复制
root@mm11:/home/gerrit2# update-rc.d gerrit defaults
 Adding system startup for /etc/init.d/gerrit ...
   /etc/rc0.d/K20gerrit -> ../init.d/gerrit
   /etc/rc1.d/K20gerrit -> ../init.d/gerrit
   /etc/rc6.d/K20gerrit -> ../init.d/gerrit
   /etc/rc2.d/S20gerrit -> ../init.d/gerrit
   /etc/rc3.d/S20gerrit -> ../init.d/gerrit
   /etc/rc4.d/S20gerrit -> ../init.d/gerrit
   /etc/rc5.d/S20gerrit -> ../init.d/gerrit
EN

回答 3

Unix & Linux用户

发布于 2013-09-19 18:32:38

首先,您应该将脚本复制到脚本池中:

代码语言:javascript
复制
/etc/init.d/

linux有一组目录,其中包含到这个池的一组链接,在不同的运行级别上:

代码语言:javascript
复制
/etc/rc0.d # for runlevel 0 for trun off system in all of dirstos
/etc/rc1.d # runlevel 1, for single user in all distros
/etc/rc2.d # runlevel 2 , default runlevel for debian-base dirstros
/etc/rc3.d # runlevel 3, in redhat-base systems, using for everything without graphical mode
/etc/rc4.d # runlevel 4,reserved by system
/etc/rc5.d  #runlevel 5 , in  Redhat base , defualt runlevel
/etc/rc6.d  # for runlevel 6 for reboot system in all of distros

你应该跑:

代码语言:javascript
复制
ln -s /etc/init.d/YOUR_SCRIPT /etc/rcNUMBER.d/{S OR K}NUMYOUR_SCRIPT

例如:

代码语言:javascript
复制
ln -s /etc/init.d/apache2 /etc/rc2.d/S99apache2

S OR K : S statrt, K: Kill
NUM before script: priority of run, if you have two scrip such S10squid amd S99apache, At first squid will be run then apache. 

update-rc.dchkconfig

update-rc.dDebian-base系统中工作,chkconfigredhat-base系统中工作。

票数 1
EN

Unix & Linux用户

发布于 2013-09-19 18:14:11

您将链接到rc3.d目录中的脚本,该目录是运行级3中启动的服务目录,Ubuntu中的默认运行级别是2 IIRC。因此,您可能希望将第二行更改为:

代码语言:javascript
复制
sudo ln -snf ../init.d/gerrit.sh /etc/rc2.d/S90gerrit

当然,服务器被配置为在另一个运行级别启动是可能的。查找当前运行级的

代码语言:javascript
复制
who -r
票数 0
EN

Unix & Linux用户

发布于 2013-09-19 21:23:12

首先,尝试以root用户身份手动运行脚本(不需要重新启动系统):

代码语言:javascript
复制
 /etc/init.d/gerrit start

如果此操作有效,而该服务仍未在启动时启动,那么问题可能是,在尝试执行脚本时,路径变量可能不是您所期望的。尝试将路径设置为脚本中的默认设置(gerrit.sh)

例如:

代码语言:javascript
复制
#!/bin/bash
PATH=/sbin:/usr/sbin:/bin:/usr/bin

#...
票数 0
EN
页面原文内容由Unix & Linux提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://unix.stackexchange.com/questions/91448

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档