如何在centos中系统启动时自动运行脚本

如何在centos中系统启动时自动运行脚本

我已经成功安装了 TeamCity ib CentOS 6.2 Minimal。我尝试在系统启动时自动运行脚本,但一直无法成功:

/opt/TeamCity/bin/teamcity-server.sh start

我搜索了各种方法,但似乎都失败了。大多数方法都指向将启动脚本添加到 rc.local 文件之一:

/etc/rc.d/rc.local
/etc/rc.local

rc.local 的内容包含以下行:

/opt/TeamCity/bin/teamcity-server.sh start

这些都无法启动 teamcity 服务器

如果我手动运行脚本,则不会出现任何问题。

看起来很简单,但是如何让 shell 脚本自动运行呢?

答案1

如果 teamcity 启动脚本是符合 LSB 规范的启动脚本(那是,如果它提供开始停止和其他论点),您只需将脚本复制到/etc/init.d文件夹并运行(以 root 身份):

# chkconfig --add <script_name>
# chkconfig <script_name> on

文件的符号链接也应该没问题。因此请尝试(以 root 身份):

# ln -s /opt/TeamCity/bin/teamcity-server.sh /etc/init.d/teamcity-server
# chkconfig --add teamcity-server
# chkconfig teamcity-server on

如果它没有在初始化时启动,但手动启动没有问题,您应该检查:

  1. 权限(也许该程序不能以 root 身份运行。尝试以 root 身份登录并运行它),以及;
  2. 你的 PATH(也许脚本需要某些东西但它不知道它在哪里)。

要打印 PATH 的内容,只需运行:

echo $PATH

要检查脚本无法启动的原因是否是 PATH,请尝试:

$ cd /
$ PATH= /opt/TeamCity/bin/teamcity-server.sh

此命令将暂时清除您的 PATH 并运行命令。如果命令需要有关 PATH 的某些特定信息,它将失败(请小心按照上述说明运行,之间的空间路径=以及命令的剩余部分)。

答案2

在 Fedora 17 命令中

# chkconfig --add teamcity-server

说:服务 teamcity-server 不支持 chkconfig 您应该添加如下标题:

#! /bin/bash
# chkconfig: - 10 90

仅在此之后运行第一个命令。

答案3

手动运行脚本时,它可以正常工作。但是,自动运行时它不起作用。

我找到了罪魁祸首:TeamCity 在用户 下运行teamcity。它必须存在于/etc/sudoers文件中,并且您应该使用visudo如下行添加:

Defaults:teamcity !requiretty

相关内容