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

atp*_*p03 8 teamcity shell-scripting centos6

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

/opt/TeamCity/bin/teamcity-server.sh start
Run Code Online (Sandbox Code Playgroud)

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

/etc/rc.d/rc.local
/etc/rc.local
Run Code Online (Sandbox Code Playgroud)

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

/opt/TeamCity/bin/teamcity-server.sh start
Run Code Online (Sandbox Code Playgroud)

没有一个会启动teamcity服务器

如果我手动运行脚本没有问题。

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

Die*_*roz 15

如果 teamcity 启动脚本是符合 LSB 的 init 脚本(即,如果它提供startstop和其他参数),您只需将脚本复制到/etc/init.d文件夹并运行(以 root 身份):

# chkconfig --add <script_name>
# chkconfig <script_name> on
Run Code Online (Sandbox Code Playgroud)

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

# ln -s /opt/TeamCity/bin/teamcity-server.sh /etc/init.d/teamcity-server
# chkconfig --add teamcity-server
# chkconfig teamcity-server on
Run Code Online (Sandbox Code Playgroud)

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

  1. 权限(可能程序无法以root身份运行。尝试以root身份登录并运行它),以及;
  2. 您的路径(也许脚本需要一些东西,但它不知道它在哪里)。

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

echo $PATH
Run Code Online (Sandbox Code Playgroud)

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

$ cd /
$ PATH= /opt/TeamCity/bin/teamcity-server.sh
Run Code Online (Sandbox Code Playgroud)

此命令将临时清除您的 PATH 并运行该命令。如果命令需要的路径,它将失败的一些具体信息(如上所述谨慎的方式运行,存在之间的空间PATH =和命令的剩余)。


小智 6

在 Fedora 17 命令中

# chkconfig --add teamcity-server
Run Code Online (Sandbox Code Playgroud)

说: service teamcity-server 不支持 chkconfig 你应该添加如下标题:

#! /bin/bash
# chkconfig: - 10 90
Run Code Online (Sandbox Code Playgroud)

只有在运行第一个命令之后。

  • 并确保您的脚本位于`/etc/init.d/` :-) (2认同)