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


8

我已经成功安装了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
您需要描述“什么都不起作用”的意思。因为没有它,每个人都在猜测。也许更详细地描述您做了什么以及发生了什么输出或失败消息或事件?
EightBitTony

那是放置它的正确位置,因此似乎/etc/rc.d/rc.local条目或脚本本身没有什么地方。您是否可以发布脚本和rc.local的内容?另外,当您手动执行teamcity-server.sh shell脚本时,它会运行吗?
奎因·墨菲

是的,teamcity服务器可以手动正常运行。但是,每次重新启动服务器时,这样做都是不实际的……
atp03 2012年

使它手动运行而不通过rc.local意味着环境上的差异。你的路径是什么?还有其他env变量吗?
cjc 2012年

@cjc不确定“ PATH”的含义-但是,如果我手动运行/etc/rc.d/rc.local,则teamcity服务器也可以正常启动。这还会有所作为吗?
atp03 2012年

Answers:


15

如果teamcity启动脚本是LSB兼容的初始化脚本(即,如果它提供startstop和其他参数),则只需将脚本复制到/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 =和命令的剩余)。


6

在Fedora 17命令中

# chkconfig --add teamcity-server

说:service teamcity-server不支持chkconfig,您应该添加标头,例如:

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

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


2
并确保您的脚本位于/etc/init.d/:-)
Bart De Vos 2012年

2

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

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

Defaults:teamcity !requiretty
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.